前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP的yaf框架类加载机制

PHP的yaf框架类加载机制

作者头像
anakinsun
发布2019-06-16 12:08:03
9570
发布2019-06-16 12:08:03
举报
文章被收录于专栏:学习日记学习日记

代码

  1. 注册ini设置到global_library变量(yaf.c)
代码语言:javascript
复制
STD_PHP_INI_ENTRY("yaf.library", "",  PHP_INI_ALL, OnUpdateString, global_library, zend_yaf_globals, yaf_globals)
  1. 把global_library和local_library都传递给了loader的初始化方法(yaf_application.c)
代码语言:javascript
复制
if (YAF_G(local_library)) {
		zend_string *global_library = strlen(YAF_G(global_library))?
			zend_string_init(YAF_G(global_library), strlen(YAF_G(global_library)), 0) : NULL;
		loader = yaf_loader_instance(&zloader, YAF_G(local_library), global_library);
		if (global_library) {
			zend_string_release(global_library);
		}
	} else {
		zend_string *local_library, *global_library;
		local_library = strpprintf(0, "%s%c%s", ZSTR_VAL(YAF_G(directory)), DEFAULT_SLASH, YAF_LIBRARY_DIRECTORY_NAME);
		global_library = strlen(YAF_G(global_library))?
			zend_string_init(YAF_G(global_library), strlen(YAF_G(global_library)), 0) : NULL;
		loader = yaf_loader_instance(&zloader, local_library, global_library);
		zend_string_release(local_library);
		if (global_library) {
			zend_string_release(global_library);
		}
	}

这里的local_library指的是application.ini文件中设置的application.library 的值

如果没有设置application.library,就用application目录下的library作为local_library,就是常量YAF_LIBRARY_DIRECTORY_NAME定义的目录。

  1. yaf_loader_instance逻辑(yaf_loader.c) yaf_loader_instance有三个参数,loader的指针,本地类地址和全局类地址
代码语言:javascript
复制
if (library_path) {
			zend_update_property_str(yaf_loader_ce,
					instance, ZEND_STRL(YAF_LOADER_PROPERTY_NAME_LIBRARY), library_path);
		}

		if (global_path) {
			zend_update_property_str(yaf_loader_ce,
					instance, ZEND_STRL(YAF_LOADER_PROPERTY_NAME_GLOBAL_LIB), global_path);
		}

两个地址一起注册到yaf_loader_ce。

conclusion

定义的位置不影响加载效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码
  • conclusion
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档