## 内部函数 - 在编写系统函数或公用函数时,需要对内部函数代码进行编写 - 可根据自己的需要进行函数编写或调用 #### 数据配置(即ini.php)函数的调用 - 系统调用函数路径:/vendor/tphp/apcu/function - 自定义调用函数路径:/html/sys/function(在该路径添加或修改内部函数需更新缓存才生效) 设置文件/html/www/demo/system/ini/_init.php内容如下 ~~~ <?php return function (){ dump( apcu( [ ['str_add_left', "Hello "], ['str_add_right', "! Are you ok ?"], ], "Tphp" ) ); dump( apcu( [ ['*10'], ['-10'], ], 10 ) ); dump( apcu( [ ['set', "2019-06-06"] ] ) ); exit(); }; ~~~ 打开网址[http://demo.tphp.com/system/ini](http://demo.tphp.com/system/ini)获得如下效果 ![](https://box.kancloud.cn/a69028365e9ccc86fd16860b2be01794_496x179.png) - 调用函数遍历 设置文件/html/www/demo/system/ini/function/_init.php内容如下 ~~~ <?php return function (){ dump(apcu_fetch('_sysnote_')); exit(); }; ~~~ 打开网址[http://demo.tphp.com/system/ini/function](http://demo.tphp.com/system/ini/function)获得如下效果 ![](https://box.kancloud.cn/70d71d9c294027740c64539c688a2269_487x887.png) - 由此可以根据调用名称找到对应的文件调用路径 #### 自定义函数示例 设置文件 /html/sys/function/tphp/func.php 内容如下 ~~~ <?php return function($data, $str=''){ return $data . $str; }; ~~~ 设置文件 /html/sys/function/tphp/ini.php 内容如下 ~~~ <?php return [ 'name' => 'TPHP框架', 'flag' => 'tphp', 'note' => 'TPHP欢迎函数', 'args' => ['字符串' => 'str'] ]; ~~~ 设置文件 /html/sys/function/tphp/name 内容如下 ~~~ TPHP框架 ~~~ 设置文件 /html/sys/function/tphp/apcu/func.php 内容如下 ~~~ <?php return function($data){ return $data . " APCU"; }; ~~~ 设置文件 /html/sys/function/tphp/apcu/ini.php 内容如下 ~~~ <?php return [ 'name' => 'TPHP_APCU', 'flag' => 'tphp_apcu' ]; ~~~ 设置文件 /html/sys/function/tphp/apcu/name 内容如下 ~~~ TPHP APCU 服务 ~~~ 设置文件 /html/sys/function/tphp/apcu/test/func.php 内容如下 ~~~ <?php return function(){ return 'TPHP APCU TEST'; }; ~~~ 设置文件 /html/sys/function/tphp/apcu/test/ini.php 内容如下 ~~~ <?php return [ 'name' => 'TPHP_APCU测试', 'flag' => 'tphp_apcu_test' ]; ~~~ 设置文件 /html/sys/function/tphp/apcu/test/name 内容如下 ~~~ TPHP APCU 测试 ~~~ 更新缓存后,打开网址[http://demo.tphp.com/system/ini/function](http://demo.tphp.com/system/ini/function)获得如下效果 ![](https://img.kancloud.cn/d4/57/d457159b8c1ef37dc126461994293875_585x347.png) ![](https://img.kancloud.cn/48/d3/48d32684b89c11dcaa2cebec9696fd9a_1103x786.png) ![](https://img.kancloud.cn/72/6f/726f88957c5d1fc21be94c89c8ebd995_1093x735.png) - 自定义函数层级不限制,意味着更灵活的定义内部函数 #### 自定义函数调用测试 设置文件/html/www/demo/system/ini/function/tphp/_init.php内容如下 ~~~ <?php return function (){ dump( apcu( [ ['tphp', "欢迎使用TPHP框架"] ], "Tphp >>> " ) ); dump( apcu( [ ['tphp_apcu'] ], "Tphp >>> " ) ); dump( apcu( [ ['tphp_apcu_test'] ], "Tphp >>> " ) ); }; ~~~ 打开网址[http://demo.tphp.com/system/ini/function/tphp](http://demo.tphp.com/system/ini/function/tphp)获得如下效果 ![](https://img.kancloud.cn/c4/25/c42567442c0b5f93136ee5ee4bd7ba86_537x253.png) #### 引用自定义公共函数 - 系统文件路径: /vendor/tphp/apcu/html/sys/import - 自定义文件路径/html/sys/import(添加或修改文件无需更新缓存) 设置文件/html/sys/import/Demo.php内容如下 ~~~ <?php class Demo { function __construct($name = "", $value=""){ $this->name = $name; $this->value = $value; } public function get($remark = ""){ return [ 'name' => $this->name, 'value' => $this->value, 'remark' => $remark, ]; } } ~~~ 设置文件/html/www/demo/system/import/_init.php内容如下 ~~~ <?php return function (){ dump( import('Demo', '示例程序', 'Hello Tphp!')->get('说明文档') ); dump( import('Demo', '第二个示例程序', 'Hello Laravel!')->get('代码框架') ); $import = import('Demo', '先设置后赋值', 'Hello Everyone!'); dump( $import->get('周星驰') ); dump( $import->get('刘德华') ); exit(); }; ~~~ 打开网址[http://demo.tphp.com/system/import](http://demo.tphp.com/system/import)获得如下效果 ![](https://box.kancloud.cn/df5e2ca7bc79ddfe8a66d3fff9eab7c3_551x423.png) - 公共函数不会自动加载,只有import()后才加载,并对象或函数只设置一次,所有多次调用不受影响 - 公共文件名Demo不要与原系统函数或方法名重复,否则会出错