yaf的基础教程(2)–项目的实例化newYaf_Application()
作者:ccccccc_fly_887 | 来源:互联网 | 2016-03-17 00:42
在我们看范例的时候我们知道,运行整个程序的入口程序是这样的yaf的基础教程(2)–项目的实例化newYaf_Application()
在我们看范例的时候我们知道,运行整个程序的入口程序是这样的:
$app = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
$app ->bootstrap() //call bootstrap methods defined in Bootstrap.php
->run();
先从new Yaf_Application()开始说起,当我们new这个类的时候发生了什么呢??源代码给大家分析一下。在yaf_application.c的351行是实例化这个方法的源程序,我们看到需要1个输入参数和1个可选参数。
zval *config;
zval *section = NULL;
然后,我们看以下代码
if (!section || Z_TYPE_P(section) != IS_STRING || !Z_STRLEN_P(section)) {
//如果可选参数section为空或者不是字符串或字符串地址为空的时候
MAKE_STD_ZVAL(section); //定义变量
/*
#define YAF_G(v) TSRMG(yaf_globals_id, zend_yaf_globals *, v)
#else
#define YAF_G(v) (yaf_globals.v)
其中YAF_G是自己定义的一个宏变量,在yaf.h中定义,它读取的是在yaf.c中PHP_INI_BEGIN中定义的yaf.environ的变量值,默认情况下是product,然后将这个字符串赋值给section
*/
ZVAL_STRING(section, YAF_G(environ), 0);
//实例化Config,用于读取配置信息
zcOnfig= yaf_config_instance(NULL, config, section TSRMLS_CC);
efree(section);//释放内存
} else {
//如果指定了section 实例化Config,用于读取配置信息
zcOnfig= yaf_config_instance(NULL, config, section TSRMLS_CC);
}
所以从上边我们看出了,我们php.ini中定义的yaf.environ的值是什么作用,这个是我们根据自己的喜欢设置的,如果不设置就默认为product,当我们在编写配置文件的时候就应该这样
[product]
application.directory=APP_PATH "/application/"
如果修改了yaf.environ的值,假如修改成了widuu,而你的配置文件中并没有修改product,那么会报错,no section “widuu”
所以,当我们写配置文件的时候一定要把php.ini中定义的yaf.environ的值作为section来写。new Yaf_Application()的配置文件可以使字符串也可以是数组
zcOnfig= yaf_config_instance(NULL, config, section TSRMLS_CC);
其中yaf_config.c的330行,我们就可以看到两种类型判断
if (Z_TYPE_P(arg1) == IS_STRING) //判断是字符串
if (Z_TYPE_P(arg1) == IS_ARRAY) //判断数组
然后针对不同的类型,在做解析
//ini配置文件解析,就会通过yaf_config_ini.c中的yaf_config_ini_instance来解析
yaf_config_ini_instance(this_ptr, arg1, arg2 TSRMLS_CC);
//数组解析,就会通过yaf_config_simple.c中的yaf_config_simple_instance来解析
yaf_config_simple_instance(this_ptr, arg1, readonly TSRMLS_CC);
所以,当我们配置new Yaf_Application()的时候即可以配置为配置文件也可以使数组。今天就写这么多,剩下的明天再来
推荐阅读
-
ElasticSearch成功安装完毕。 测试数据添加出现{ error:{ root_cause ...
[详细]
蜡笔小新 2023-10-17 15:46:32
-
初识java关于JDK、JRE、JVM 了解一下 ...
[详细]
蜡笔小新 2023-10-17 17:17:17
-
-
本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ...
[详细]
蜡笔小新 2023-12-14 18:18:21
-
今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ...
[详细]
蜡笔小新 2023-12-14 17:58:15
-
本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ...
[详细]
蜡笔小新 2023-12-14 17:46:55
-
本文描述了作者第一次参加比赛的经历和感受。作者是小学六年级时参加比赛的唯一选手,感到有些紧张。在比赛期间,作者与学长学姐一起用餐,在比赛题目中遇到了一些困难,但最终成功解决。作者还尝试了一款游戏,在回程的路上感到晕车。最终,作者以110分的成绩取得了省一会的资格,并坚定了继续学习的决心。 ...
[详细]
蜡笔小新 2023-12-14 17:42:14
-
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
-
本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ...
[详细]
蜡笔小新 2023-12-14 17:06:58
-
本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ...
[详细]
蜡笔小新 2023-12-14 17:03:58
-
本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ...
[详细]
蜡笔小新 2023-12-14 16:44:09
-
对当年关羽败走麦城,恰好路过马超的封地,为啥马超不救他?很感兴趣的小伙伴们,趣历史小编带来详细的文章供大家参考。说到英雄好汉,便要提到一本名著了,没错,那就是《三国演义》。书中虽 ...
[详细]
蜡笔小新 2023-12-14 16:29:09
-
本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ...
[详细]
蜡笔小新 2023-12-14 15:56:00
-
本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ...
[详细]
蜡笔小新 2023-12-14 15:43:50
-
本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ...
[详细]
蜡笔小新 2023-12-14 15:30:33
-
随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ...
[详细]
蜡笔小新 2023-12-10 20:05:15
-
ccccccc_fly_887
这个家伙很懒,什么也没留下!