# fly **Repository Path**: A_knife/fly ## Basic Information - **Project Name**: fly - **Description**: 作者参考Compoer中的autoload.php的部分功能,并遵守其自动加载规则,设计的一个自动加载的扩展,初学者,很多地方可能有错,多多包涵!! - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-26 - **Last Updated**: 2025-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FLY扩展说明 ### 一、前言 ​ 先叠几个BUFF,作者学历不高,全靠爱好自学编程,20多年来从汇编到现在,学的语言不少,精通的不多,以致于无法使用英文制作Document,先接触的PHP应用,后来发现可以用C写PHP扩展,为了给自已学习制定一个小目标,以应用广泛的Composer自动加载为初衷打算作一下php-ext扩展,水平有限没有系统学习过。先前用纯C制作,各种不兼容,各种BUG,以致于多次重构,现在的主要是用ZENDAPI和PHPAPI加上一点点小小的个人想法制作的半成品,由于目标小,所以不打算多人开发。所以随然开源,不添加其它开发人员。 ### 二、原理 ​ 参考composer的自动加载规范,对composer中的 1. autoload_psr4.php //对应FlyLoad->psr4map属性(加载PSR-4规范类) 2. autoload_namespaces.php //对应FlyLoad->psr0map属性(加载PSR-0规范类) 3. autoload_classmap.php //对应FlyLoad->classmap属性(加载无命名空间类) 4. autoload_files.php //对应FlyLoad->filemap属性(加载自定义函数) ``` $loader=new \FlyLoad(realpath(__DIR__).DIRECTORY_SEPARATOR); //新建加载类 //注释行是另一种方法 //$loader=new \FlyLoad(); //$loader->root=realpath(__DIR__).DIRECTORY_SEPARATOR; //设置加载根目录 $loader->psr4map=include($loader->root."vendor/composer/autoload_psr4.php"); $loader->psr0map=include($loader->root."vendor/composer/autoload_namespaces.php"); $loader->classmap=include($loader->root."vendor/composer/autoload_classmap.php"); $loader->filemap=include($loader->root."vendor/composer/autoload_files.php"); $loader->register(); //向php自动加载注册添加本类 $loader->loadFunction(); //加载所有$loader->filemap属性中的自定义函数 ``` ​ 如果不引用,也可以自已依据四种类型规范进行数组定义: ``` $loader->psr4map["App"]=[$loader->root."app"]; //向psr4map映像数组添加一个新的App命名空间及路径 ``` ​ 目前加载顺序为,优先找classmap,再查找psr4map,再查找psr0map,如果没有就在root属性目录下按PSR-4规范查找并加载 内置函数fly_include()有可返回值 ``` test.php =7.0 2.由于扩展中涉及的ZENDAPI和PHPAPI在PHP-8.1.0之后有变动,所在源码中进行了预编译 3.作者水平有限,在虚拟机linux下(Ubuntu20.04和Ubuntu22.04)编译成功,条件简陋大家海涵,WIN下请自行测试,或者反馈给我 4.源码没有对其它扩展进行调用,所以只有两个文件.h和.c ### 四、关于代码使用 源码是作者是为学习而发电,随然使用的是MIT开源协议,请随便用,如果有更好的变更方案,也可以反馈给我进行优化。 ### 五、联系方式 QQ:13804774 E_mail:bnnwcpl@163.com 或者评论区留言,作者有其它方面的工作,回复可能不会面面俱到,提前抱歉!!