Skip to content

config.php 都做了些什么?

windwild edited this page Dec 12, 2011 · 2 revisions

require 了 config.php 有什么用呢? 打开config.php这个文件 看到里边的代码并不多 首先unset了 $CFG

unset()是注销定义的变量. 因为PHP变量是不需要预先定义就可以使用. 如果不unset($color),后面的代码如果用到同名的$color,PHP就会使用前面使用过的这个(里面是有值的),如果不重新赋值就使用,可能会影响到正确性.

然后重新声明了一个全局的$CFG 设置了一些必要的参数,主要是和db相关的一些参数,类型 host 表名 等等,在最后require_once了一下setup.php

<?php  // Moodle configuration file

unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'root';
$CFG->dbpass    = 'root';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array (
  'dbpersist' => 0,
  'dbsocket' => 0,
);

$CFG->wwwroot   = 'http://localhost/moodle';
$CFG->dataroot  = 'C:\\xampp\\moodledata';
$CFG->admin     = 'admin';

$CFG->directorypermissions = 0777;

$CFG->passwordsaltmain = 'bes>w=&we`o}Gp}.A O=n(`Ij`wOFy';

require_once(dirname(__FILE__) . '/lib/setup.php');

// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!

setup.php 是做什么的呢? 打开setup.php 哇 这个文件没有那么短小了 800多行 折叠一下代码 看看都有什么东西吧 文件开始的时候有很多的if(unset()) if(!defined()) 这些明显就是在对设置过的参数进行检查 以确保下边代码能够顺利的执行 236行开始声明了很多的全局变量 这是些非常实用的变量

  • $DB

    • 这个不用说 看名字就知道是和数据库相关的对象
  • $SESSION

    • 这个也不用说 看名字也晓得
  • $USER

    • 这个是和用户相关的,有以下字段 email id first name last name username secret(?这个连写注释的人也不懂了) lang
  • $COURSE

    • 是$PAGE->course的别名
  • $OUTPUT

    • 用来生成html代码的
  • $MCACHE

    • 共享缓存的???
  • $FULLME

    • ***等我一会儿实验一下
  • $ME

    • ***等我试试的
  • $FULLSCRIPT

    • 比FULLME少点儿东西
  • $SCRIPT

    • 和/course/view.php相关 怎么个相关呢?***一会儿试试

接下来到了345行 require_once了setuplib.php

setuplib.php 这个东西是干嘛的呢? 嚓 又是个挺长的文件 老办法 折叠代码 先看看都有什么

首先看到了很多的类 各种各样的class,怎么都带着exception?哦 原来都是moodle的各种异常类 都继承了Exception这个类

跟着很多function了。

  • default_exception_handler 这个函数处理所有没人管的异常。

  • abort_all_db_transactions 这个函数呢 是取消所有数据库操作的 只能被各种错误的handler调用。

  • is_early_init 处理在setup.php执行的阶段出现的exception

  • print_error 就是字面理解的 打印错误信息

  • get_exception_info 返回了错误的详细信息

  • 等等 慢慢完善吧 都写完比较费时间 最后又是一个class bootstrap_renderer 是和$OUTPUT初始化相关的

好了 pop了 回到setup.php的第347行

347 处理了一下输出缓存

353 如果可能的话提升一下输出缓存 涉及到函数raise_memory_limit 在setuplib的第837行

356 init _performance_info 这个函数的定义在setuplib的第783行 应该是统计性能用的函数

359 $OUTPUT = new bootstrap_renderer(); 这个负责错误信息的输出

362 set_exception_handler('default_exception_handler'); set_error_handler('default_error_handler', E_ALL | E_STRICT); 处理没人管的异常和错误(异常和错误的区别是?)

370 开始做一些预处理 Just say no to link prefetching (Moz prefetching, Google Web Accelerator, others) 并检查环境

398 开始载入各种moodle标准库

420 验证php的配置没什么问题

423 连接数据库了 setup_DB 这个函数定义在lib/dbmllib的225行 这个函数的核心就是在279行的 $DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, $CFG->dboptions); 剩下的基本就是各种环境的检查和异常的处理 这个函数写的非常的严谨 值得学习!

426 暂时的关掉了debug

434 载入了配置 initialise_cfg 在setuplib的592行定义 首先从数据库中读出config的信息 如果已经存在就用存在的cfg信息 如果没有从数据库中载入默认值

437 做了一些环境检查 乱七八糟的 具体的慢慢看

470 定义site 调用了get_site 定义在datalib.php的323行,返回了course

500 是一些关于debug的信息还有很多的验证缓存信息

597 开始初始化$PAGE SESSION USER等信息

796 是黑名单功能的设置