让我们展开这一页——第四回:步入wp-load.php
  包拯 发表于 2012-03-08 00:26  分类:技术资料  2,542 次阅读  0条评论

让我们展开这一页——从代码的角度逐步分析WordPress是如何将你的网站展示给大家的

第四回:步入wp-load.php

接着上一回,我们从wp-blog-header.php被带到了程序根目录下的wp-load.php这个文件中。

这个文件里的代码主要用来加载WordPress的配置文件wp-config.php,如果没有配置文件,会提示用户创建一个。

以后在进入一个新的文件之后,我会向大家简单的说一下这个文件的主要作用,然后再按照步骤一步步的执行每一行代码,这样不至于使大家拘泥于过分的细节,方便大家对整个文件有个大体的了解。

 

跳过wp-load.php文件中的PHP代码头和注释,我们来到了第22行:

define( 'ABSPATH', dirname(__FILE__) . '/' );

相信看过前面几回教程的人,即使没有任何PHP知识,也会明白这句代码的含义:定义了一个名为ABSPATH的常量,常量的值为当前文件(wp-load.php)所在目录+’/’,在我这里就是“E:/Web/wp-prj/”。

程序继续向下面执行,我们又看到了一个全新的函数:error_reporting,该函数的结构是error_reporting(report_level),其作用是设置PHP的报错级别,并返回当前的报错级别。

PHP的错误是根据错误的级别进行划分的,错误级别范围从通告到严重错误,表示错误的严重性——就像在学校处分学生时,会有不同的处分级别,例如我大学的时候受到的处分就是记过,比记过更轻的是通报批评、警告、严重警告,比记过更严重的是留校察看、开除学籍^_^

PHP的错误级别不是通报批评、警告、严重警告、记过、留校察看、开除学籍,而是用常量表示的十几个错误类型,他们的数值和含义是:


常量

描述

1

E_ERROR

Fatal run-time errors. Errors that can not be recovered from. Execution of the script is halted

2

E_WARNING

Non-fatal run-time errors. Execution of the script is not halted

4

E_PARSE

Compile-time parse errors. Parse errors should only be generated by the parser

8

E_NOTICE

Run-time notices. The script found something that might be an error, but could also happen when running a script normally

16

E_CORE_ERROR

Fatal errors at PHP startup. This is like an E_ERROR in the PHP core

32

E_CORE_WARNING

Non-fatal errors at PHP startup. This is like an E_WARNING in the PHP core

64

E_COMPILE_ERROR

Fatal compile-time errors. This is like an E_ERROR generated by the Zend Scripting Engine

128

E_COMPILE_WARNING

Non-fatal compile-time errors. This is like an E_WARNING generated by the Zend Scripting Engine

256

E_USER_ERROR

Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()

512

E_USER_WARNING

Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()

1024

E_USER_NOTICE

User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()

2048

E_STRICT

Run-time notices. PHP suggest changes to your code to help interoperability and compatibility of the code

4096

E_RECOVERABLE_ERROR

Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())

8191

E_ALL

All errors and warnings, except level E_STRICT (E_STRICT will be part of E_ALL as of PHP 6.0)

你可能已经发现这些常量的值,除了E_ALL之外都是2的N次方,这样有什么意义呢?好吧,提示一下——E_ALL的值正是前面所有常量值的和、跟二进制有关、跟MFC中设置Class Styles用到的宏定义是一个意思。相信说到这里,懂的人也早就懂了,而不懂的人也没必要懂了,知道怎么用就可以了。

好吧,说个不是笑话的笑话:世界上只有10种人,一种是懂二进制的,另一种是不懂二进制的。

上面的错误类型可以用“或”来连接(用 OR 或 |),这样可以报告所有需要的各级别错误。

因此,wp-load.php的第24行的作用就是下面这些类型的错误将会被报告:E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR

关于PHP对错误的处理,还有很多内容值得我们去了解,但是我们的教程不是百科全书。我只能在按照WordPress代码,尽量扩展——分析WordPress代码才是我们冒险之旅的主要内容,不是么?


本文固定链接: http://www.youduoshao.com/2012-03-08/201203081965.html

填写您的称呼和邮箱即可发布评论

快捷键:Ctrl+Enter