数码资讯
对加载PHP用法总结
PHP提供了加载方便文件包含帮助我们,但加载不能处理所有的情况没有想象。今天我们将记录加载一些问题在前一天的遭遇。 为什么要使用自动加载 当我们在PHP中使用类时,我们必须在使用或加载之前先加载它,但是有两个问题影响我们的加载决定。 首先是不知道存放在什么地方的文件类型,另一种是不知道什么时候需要使
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
PHP提供了加载方便文件包含帮助我们,但加载不能处理所有的情况没有想象。今天我们将记录加载一些问题在前一天的遭遇。
为什么要使用自动加载
当我们在PHP中使用类时,我们必须在使用或加载之前先加载它,但是有两个问题影响我们的加载决定。
首先是不知道存放在什么地方的文件类型,另一种是不知道什么时候需要使用这个文件。特别是项目文件特别多,不是每一个文件开头部分都写了一长串的要求……
在PHP5中,我们可以解决这个问题,通过__autoload.and后spl_autoload_register PHP5.1环境,()提供提供更加完美的加载机制。
在PHP文章阅读的自动装填,我理解加载的加载机制,当新的实例化一个类,通过__autoload PHP函数加载的相关文件的定义,如果类文件使用扩展或实现需要使用自己的类文件,PHP将重新加载类文件和加载研究发现,如果发生了两次对文件请求同一类型将是错误的。作者提出了三个有趣的例子来说明这个问题,可以下载源代码,看这里。
一般来说,在加载时找到对应位置的文件的方法有很多种,最重要的是指定一个特定的命名标准。
Zend的方法
Zend推荐一种包括在路径中的文件名最受欢迎的方式。例如,下面的例子是:
/ / main.class
功能__autoload($ class_name){
$路径= str_replace('_ ',directory_separator,class_name美元);
require_once $路径。。php;
}
$温度=新(main_super_class);都强调将在单独的路径替换字符,将去主/超/ class.php这个例子中的文件
这种方法的缺点是,在编码过程中,我们必须清楚地知道代码文件应该在何处,并且因为
文件路径硬编码在类名中,如果您需要修改文件夹的结构,我们必须手动修改所有类名。
包括all'method
在开发环境中使用这种方法非常方便,并且不太关心速度,通过将所有类文件放在一个或几个特定的文件夹中,然后通过遍历查找负载。
例如:
复制代码代码如下所示:
< PHP
$ ARR =阵列(
项目类,
项目类/子,
项目接口
);
foreach($ ARR达DIR){
dir_list美元= opendir($dir);
而($文件= readdir($ dir_list)){
$路径= $迪尔。directory_separator元文件;
如果(in_array(文件、阵列(| | '。',','))is_dir($路径))
继续;
如果(strpos($文件。类。PHP ))
require_once $路径;
}
}
>
关联的文件和位置
另一种方法是在类文件和他的位置之间建立相关的配置文件,例如:
复制代码代码如下所示:
/ / configuration.php
array_of_associations =阵列(
mainsuperclass ' = c: / / /主要超类。php,
mainpoorclass ' = c: / / Gy PHP等等等等。
);
引用文件
复制代码代码如下所示:
< PHP
require'autoload_generated PHP的;
功能__autoload($ className){
全球autoload_list美元;
require_once autoload_list类名{ }美元美元;
}
$ =新的a();
>
当然,如果文件非常大,维护它是一件麻烦的事情,但是使用类名中的硬代码位置更好呢
当然,我们不想手动维护这个列表,所以我们可以使用这个文件的自动生成来实现,对应的文件可以是php等,本文的作者已经实现了这样一个工具。经过仔细考虑,这不是很难做到的。作者开发的一个小加载框架,值得学习。
为什么要使用自动加载
当我们在PHP中使用类时,我们必须在使用或加载之前先加载它,但是有两个问题影响我们的加载决定。
首先是不知道存放在什么地方的文件类型,另一种是不知道什么时候需要使用这个文件。特别是项目文件特别多,不是每一个文件开头部分都写了一长串的要求……
在PHP5中,我们可以解决这个问题,通过__autoload.and后spl_autoload_register PHP5.1环境,()提供提供更加完美的加载机制。
在PHP文章阅读的自动装填,我理解加载的加载机制,当新的实例化一个类,通过__autoload PHP函数加载的相关文件的定义,如果类文件使用扩展或实现需要使用自己的类文件,PHP将重新加载类文件和加载研究发现,如果发生了两次对文件请求同一类型将是错误的。作者提出了三个有趣的例子来说明这个问题,可以下载源代码,看这里。
一般来说,在加载时找到对应位置的文件的方法有很多种,最重要的是指定一个特定的命名标准。
Zend的方法
Zend推荐一种包括在路径中的文件名最受欢迎的方式。例如,下面的例子是:
/ / main.class
功能__autoload($ class_name){
$路径= str_replace('_ ',directory_separator,class_name美元);
require_once $路径。。php;
}
$温度=新(main_super_class);都强调将在单独的路径替换字符,将去主/超/ class.php这个例子中的文件
这种方法的缺点是,在编码过程中,我们必须清楚地知道代码文件应该在何处,并且因为
文件路径硬编码在类名中,如果您需要修改文件夹的结构,我们必须手动修改所有类名。
包括all'method
在开发环境中使用这种方法非常方便,并且不太关心速度,通过将所有类文件放在一个或几个特定的文件夹中,然后通过遍历查找负载。
例如:
复制代码代码如下所示:
< PHP
$ ARR =阵列(
项目类,
项目类/子,
项目接口
);
foreach($ ARR达DIR){
dir_list美元= opendir($dir);
而($文件= readdir($ dir_list)){
$路径= $迪尔。directory_separator元文件;
如果(in_array(文件、阵列(| | '。',','))is_dir($路径))
继续;
如果(strpos($文件。类。PHP ))
require_once $路径;
}
}
>
关联的文件和位置
另一种方法是在类文件和他的位置之间建立相关的配置文件,例如:
复制代码代码如下所示:
/ / configuration.php
array_of_associations =阵列(
mainsuperclass ' = c: / / /主要超类。php,
mainpoorclass ' = c: / / Gy PHP等等等等。
);
引用文件
复制代码代码如下所示:
< PHP
require'autoload_generated PHP的;
功能__autoload($ className){
全球autoload_list美元;
require_once autoload_list类名{ }美元美元;
}
$ =新的a();
>
当然,如果文件非常大,维护它是一件麻烦的事情,但是使用类名中的硬代码位置更好呢
当然,我们不想手动维护这个列表,所以我们可以使用这个文件的自动生成来实现,对应的文件可以是php等,本文的作者已经实现了这样一个工具。经过仔细考虑,这不是很难做到的。作者开发的一个小加载框架,值得学习。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。