看了1天的目录结构。
例如:system目录中有class、config、core、Services、Zend目录
系统函数?系统设置?初始化? 有哪位高手能从 概述上 功能上 程序的哪个层面上 清晰地 讲一下各个目录的作用。最好不要用什么:系统基础函数这种很泛泛的讲法。
学习过程:
一、php文件的大致登场顺序:
先从安装好后出现在web根目录的index.php来看:
{{{
<?php
/*
+--------------------------------------------------------------------------
| WeCenter [#RELEASE_VERSION#]
| ========================================
| by WeCenter Software
| © 2011 - 2013 WeCenter. All Rights Reserved
| http://www.wecenter.com
| ========================================
| Support: WeCenter@qq.com
|
+---------------------------------------------------------------------------
*/
if (! file_exists(dirname(__FILE__) . '/system/config/database.php') AND ! file_exists(dirname(__FILE__) . '/system/config/install.lock.php') AND !defined('SAE_TMP_PATH'))
{
header('Location: ./install/'); 若没有安装,则读取安装目录,默认执行index.php(为什么会默认执行index为名的php,这个是要在httpd.conf中设置,百度可以搜索"DirectoryIndex"相关知识)
exit;
}
include('system/system.php'); //在php中include与require的区别在于,require出错会引起一个致命的错误(fatal error )程序停止执行,而inclue出错则只会给出一个警告,程序继续执行。有了system/system.php
我们来看一下system/system.php里带出了哪些东西:(从之前几个修改记录可以看出,当在代码里面,加入代码、加粗、斜体字都无效果了,这个可以在以后自己二次开发的时候进行优化)
if (! defined('AWS_PATH'))
{
define('AWS_PATH', dirname(__FILE__) . '/');
// __FILE__是代码所在文件的完整路径(注意不是url路径),dirname():是获取去掉文件名后的目录路径。dirname(__FILE__):就是获得当前代码所在文件的目录。假设__FILE__为/home/web/config/test.php,上面的方法输出为/home/web/config。
//system/init.php与system/system.php中都有define AWS_PATH这个常量的语句,具体为什么会有两次定义,下次看到再说。
}
if (defined('G_GZIP_COMPRESS') AND G_GZIP_COMPRESS === TRUE)
{
if (@ini_get('zlib.output_compression') == FALSE)
{
if (extension_loaded('zlib'))
{
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) AND strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)
{
ob_start('ob_gzhandler');
}
}
}
}
require_once (AWS_PATH . 'init.php'); //AWS_PATH="xxxx/system/",所以引用了/system/init.php //wecenter程序中用来定义所有常量的文件,常量采用全部大写的方式,例如:IN_SAE,ROOT_PATH这些都是在这个里定义的。
require_once (AWS_PATH . 'aws_app.inc.php'); //引用了/system/aws_app.inc.php Wecenter系统初始化文件
require_once (AWS_PATH . 'aws_controller.inc.php');//引用了/system/aws_controller.inc.php
require_once (AWS_PATH . 'aws_model.inc.php');//引用了/system/aws_model.inc.php
AWS_APP::run();
//由于在system.php中已经包入了aws_app.inc.php,所以可以直接使用AWS_APP(类名)直接调用静态成员函数run()。这里的run函数又调用了AWS_APP类中的init(),主要功能是:将AWS_APP的静态成员变量都用"system/core/静态成员变量名称.php"初始化成为这个"system/core/静态成员变量名称.php"中定义的类的对象。
//所以在以后的程序里,会看见很多,AWS_APP::config()【反回了一个get(Param)所属类的对象,类所在文件:core/config.php】->get('image')【返回了一个配置名称为image的类的对象/数组,类所在文件:config/image.php】->avatar_thumbnail【此处为config/image.php中关联数组中的key名称,由此来访问avatar_thumbnail所对应的的真实value】这样的结构。
阅读全文
收起全文