# gpf_inc
void gpf_inc(string $path)
gpf_inc函数与require_once的功能相同.
```php
gpf_inc('/project/path/func.php');
gpf_inc('/project/path/func.php'); //不会重复加载相同的文件.
```
# gpf_set_inc
void gpf_set_inc($path)
通过此函数可以让gpf_inc认为一个文件已加载.
```php
require '/func.php';
gpf_set_inc('/func.php'); //通知gpf_inc指定文件已经加载.
gpf_inc('/func.php'); //不会再加载
```
# gpf_is_inc
bool gpf_is_inc($path)
检查指定的文件是否已使用gpf_inc加载过.
```php
gpf_is_inc('/func.php'); //false, gpf_inc未加载此文件.
gpf_inc('/func.php');
gpf_is_inc('func.php'); //true, gpf_inc已加载此文件.
```
# gpf_path
string gpf_path($path)
如果一些文件不能用gpf_inc加载又需要使用GPF的DEBUG模式,可以使用此函数:
```php
include gpf_path('/func.php');
```
# gpf_load
mixed gpf\_load($pathfull, $class_name = '')
加载文件并可顺便单次实例化文件中定义的类.$pathfull 为待加载文件的绝对路径,$class_name为需实例化的完整类名.
如果只给出第一个参数,效果与直接调用gpf_inc相同.
若$class_name所指定的类已被gpf_load实例化,则会直接返回已实例化的对象,不会重复实例化.
gpf_load实例化的方式为无参数直接实例化:`new CLASS()`
```php
$obj = gpf_load('/class.php', 'class_name');
$obj = gpf_load('/class.php', 'class_name'); //第二次调用直接返回已实例化的对象.
```
# gpf_factory
mixed gpf_factory($name)
一个简单的"工厂"函数.使用此函数需要定义GPF_FACTORY常量,指向一个目录,目录中保存配置文件.
`define('GPF_FACTORY', '/factory/dir/path/');`
在配置目录中,每个文件表示一个连接配置参数,文件名命名规则为:`{nanme}.inc.php`. 比如,数据库连接配置文件名可以命名为:`db.inc.php`.
每个配置文件需要return一个数组,数组中必须有两个特殊键名:0file和0func.
0file 的值指向此配置文件实例化函数所在的源代码文件绝对路径.
0func 的值指向此配置文件的实例化函数名.
其余数组项由配置文件所使用的实例化函数决定(即0func指向的函数).
一般来说实例化函数需要专为gpf_factory定义.
比如,我有一个函数new_db()用于实例化一个数据库访问对象,定义在/new_db.func.php文件中.
连接数据库需要数据库地址,用户名,密码,所使用的数据库等信息.
要通过gpf_factory调用new_db实例化数据库连接,首先在GPF_FACTORY指向的目录中建立一个配置文件,假设命名为db.inc.php:
```php
return array(
'0file' => '/new_db.func.php',
'0func' => 'new_db',
'host' => '127.0.0.1', //数据库地址,这些参数项由0func指向的实例化函数决定
'user' => 'root',
'pw' => '',
'name' => 'test',
);
```
在项目代码中使用gpf_factory即可取得指定配置文件的实例对象:
`$db = gpf_factory('db');`
gpf_factory使用单一实例化,一个配置文件实例化后,以后的调用便会直接返回已实例化的对象.
调用gpf_factory时,gpf_factory首先加载指定的配置文件中的参数,接着加载0file指向的文件(使用gpf_inc实现),
并调用0func指向的函数,传入参数为配置文件返回的参数数组.
通过gpf_factory可以方便地使用配置文件管理各种外部程序连接,像数据库,memcache,redis等.
通过GPF_FACTORY常量的指向,可以方便地把不同环境的配置项放在不同的目录中,比如每个人的开发环境,测试环境,生产环境等.
void gpf_inc(string $path)
gpf_inc函数与require_once的功能相同.
```php
gpf_inc('/project/path/func.php');
gpf_inc('/project/path/func.php'); //不会重复加载相同的文件.
```
# gpf_set_inc
void gpf_set_inc($path)
通过此函数可以让gpf_inc认为一个文件已加载.
```php
require '/func.php';
gpf_set_inc('/func.php'); //通知gpf_inc指定文件已经加载.
gpf_inc('/func.php'); //不会再加载
```
# gpf_is_inc
bool gpf_is_inc($path)
检查指定的文件是否已使用gpf_inc加载过.
```php
gpf_is_inc('/func.php'); //false, gpf_inc未加载此文件.
gpf_inc('/func.php');
gpf_is_inc('func.php'); //true, gpf_inc已加载此文件.
```
# gpf_path
string gpf_path($path)
如果一些文件不能用gpf_inc加载又需要使用GPF的DEBUG模式,可以使用此函数:
```php
include gpf_path('/func.php');
```
# gpf_load
mixed gpf\_load($pathfull, $class_name = '')
加载文件并可顺便单次实例化文件中定义的类.$pathfull 为待加载文件的绝对路径,$class_name为需实例化的完整类名.
如果只给出第一个参数,效果与直接调用gpf_inc相同.
若$class_name所指定的类已被gpf_load实例化,则会直接返回已实例化的对象,不会重复实例化.
gpf_load实例化的方式为无参数直接实例化:`new CLASS()`
```php
$obj = gpf_load('/class.php', 'class_name');
$obj = gpf_load('/class.php', 'class_name'); //第二次调用直接返回已实例化的对象.
```
# gpf_factory
mixed gpf_factory($name)
一个简单的"工厂"函数.使用此函数需要定义GPF_FACTORY常量,指向一个目录,目录中保存配置文件.
`define('GPF_FACTORY', '/factory/dir/path/');`
在配置目录中,每个文件表示一个连接配置参数,文件名命名规则为:`{nanme}.inc.php`. 比如,数据库连接配置文件名可以命名为:`db.inc.php`.
每个配置文件需要return一个数组,数组中必须有两个特殊键名:0file和0func.
0file 的值指向此配置文件实例化函数所在的源代码文件绝对路径.
0func 的值指向此配置文件的实例化函数名.
其余数组项由配置文件所使用的实例化函数决定(即0func指向的函数).
一般来说实例化函数需要专为gpf_factory定义.
比如,我有一个函数new_db()用于实例化一个数据库访问对象,定义在/new_db.func.php文件中.
连接数据库需要数据库地址,用户名,密码,所使用的数据库等信息.
要通过gpf_factory调用new_db实例化数据库连接,首先在GPF_FACTORY指向的目录中建立一个配置文件,假设命名为db.inc.php:
```php
return array(
'0file' => '/new_db.func.php',
'0func' => 'new_db',
'host' => '127.0.0.1', //数据库地址,这些参数项由0func指向的实例化函数决定
'user' => 'root',
'pw' => '',
'name' => 'test',
);
```
在项目代码中使用gpf_factory即可取得指定配置文件的实例对象:
`$db = gpf_factory('db');`
gpf_factory使用单一实例化,一个配置文件实例化后,以后的调用便会直接返回已实例化的对象.
调用gpf_factory时,gpf_factory首先加载指定的配置文件中的参数,接着加载0file指向的文件(使用gpf_inc实现),
并调用0func指向的函数,传入参数为配置文件返回的参数数组.
通过gpf_factory可以方便地使用配置文件管理各种外部程序连接,像数据库,memcache,redis等.
通过GPF_FACTORY常量的指向,可以方便地把不同环境的配置项放在不同的目录中,比如每个人的开发环境,测试环境,生产环境等.