-
Notifications
You must be signed in to change notification settings - Fork 23
config.php 都做了些什么?
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 是黑名单功能的设置