WordPress 源码学习

[ ]

The content is recoverd from Wordpress Blog, for more details please check HERE

August 29, 2014

VOID001 Comments 0 Comment

开始学习研究开源代码 ,不过自己的PHP技术还很差 ,但是只要是有强大的搜索能力~ 以及一定的理解力 就可以呢{*≧∀≦}参考一下这个文章

PHP函数库在这里

那就从根目录的index.php开始解析代码~~

index.php

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP\_USE\_THEMES', true);

/** Loads the WordPress Environment and Template */
require('./wp-blog-header.php');

只有两句代码: 我们分别来看一下~~

define是PHP的定义常量的语法

define函数的用法 : define(NAME,VAL,CASE_SENSITIVE);  没有什么需要过多说明的地方 ,define函数就是定义一个常量  然后参数列表也很明确 ,注意的是 常量不需要加美元符号 ($)

require函数 : require(‘FILENAME’) 语句包含并运行指定文件。   如果文件不存在 ,报Fatal Error  也就是说 ,如果文件不存在 这个函数的报错会导致这个网页无法加载 ,这个特性在很多时候还会用到  与它功能差不多的还有一个 include函数 不同的是如果文件不存在,只会报一个WARNING。这两个看情况使用

当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。

上面的代码既然调用了wp-blog-header.php那么我们下来就看这个代码~

wp-blog-header.php

<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( !isset($wp\_did\_header) ) {

    $wp\_did\_header = true;

    require\_once( dirname(\_\_FILE\_\_) . '/wp-load.php' );

    wp();

    require\_once( ABSPATH . WPINC . '/template-loader.php' );

}

这个代码也不是很难理解  一行一行一个函数一个函数分析~

isset函数 isset函数可以检测这个变量是否被定义了  用法 isset(var1,var2,var3…);其中第一个必须填

require_once函数       require_once(‘FILENAME’);

require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

dirname()函数  函数用法   dirname(string $path)给出一个文件的路径 ,返回这个文件所在的目录的绝对路径   而__FILE__这个常量 ,是 预定义常量 也叫 魔术常量 详细介绍在这里  这里就理解为wp-blog-header这个文件的绝对路径就好~

dirname(__FILE__) 取到的是当前文件的绝对路径,也就是说,比起相对路径,查找速度是最快的。

 

上面的代码通过require_once函数把wp-load.php的代码包含进来了~ 我们一会儿再去看那个代码 下面先继续看 :

下一个部分是wp()函数 ,这是自定义的函数,而且这个函数多的定义不存在与当前的这个文件里(wp-blog-header.php),是定义在其它文件里的 ,下次继续~这次先到这里


PHP, Web Develop C. Linux, kernel, Laravel, PHP, Python, Shell, Web, wine


Historical Comments

Post navigation ————— NEXT
WordPress 源码学习 #01
PREVIOUS DP题目列表

Back