class_exists() 使用注意事项,涉及到autoload自动加载问题~~~~~~
[ 2017-02-16 11:13:22 | 作者: admin ]
p.s. 判断类是否已经实例化的函数 class_exists() 有2个参数,必须注意第二个参数$autoload默认为true 。
当你的主程序没有定义 autoload ,而插件定义了之后,主程序下调用就发生了变化,调用函数中的 class_exists必须指定不启用 autoload,否则就会出现问题:它自动去调用插件的autoload来加载类了。
这个函数在手册上的解释是:
This function checks whether or not the given class has been defined.
从字面很容易知道它的用途,就是检测一下要检测的类名是否已经定义,但是真正要注意的位置在它的参数上
bool class_exists ( string $class_name [, ...
阅读全文…
当你的主程序没有定义 autoload ,而插件定义了之后,主程序下调用就发生了变化,调用函数中的 class_exists必须指定不启用 autoload,否则就会出现问题:它自动去调用插件的autoload来加载类了。
这个函数在手册上的解释是:
This function checks whether or not the given class has been defined.
从字面很容易知道它的用途,就是检测一下要检测的类名是否已经定义,但是真正要注意的位置在它的参数上
bool class_exists ( string $class_name [, ...
阅读全文…
PHP类的自动载入机制,__autoload()函数
[ 2017-02-16 09:16:55 | 作者: admin ]
php的自动加载:
在php5以前,我们要用某个类或类的方法,那必须include或者require,之后才能使用,每次用一个类,都需要写一条include,麻烦
php作者想简单点,最好能引用一个类时,如果当前没有include进来,系统能自动去找到该类,自动引进~
于是:__autoload()函数应运而生。
通常放在应用程序入口类里面,比如discuz中,放在class_core.php中。
先讲浅显的例子:
第一种情况:文件A.php中内容如下
<?php
class A{
public function __construct(){
echo 'fff';
}
}
?>
文件C.php 中内容如下:
阅读全文…
在php5以前,我们要用某个类或类的方法,那必须include或者require,之后才能使用,每次用一个类,都需要写一条include,麻烦
php作者想简单点,最好能引用一个类时,如果当前没有include进来,系统能自动去找到该类,自动引进~
于是:__autoload()函数应运而生。
通常放在应用程序入口类里面,比如discuz中,放在class_core.php中。
先讲浅显的例子:
第一种情况:文件A.php中内容如下
<?php
class A{
public function __construct(){
echo 'fff';
}
}
?>
文件C.php 中内容如下:
<?php
function __autoload($class)
...function __autoload($class)
阅读全文…
SPL spl_autoload_register 初体验 ,重写类的声明函数autoload自动载入机制(转)
[ 2017-02-16 09:11:57 | 作者: admin ]
网上关于SPL spl_autoload_register的用法的例子有很多很多,自己也查看了很多,但感觉介绍得并不太详细,使自己真正能明白其中的原理苦闷了好一会儿。现将自己的理解记录下来。
关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。
在文件test.php中:
阅读全文…
关于 Standard PHP Library (SPL) 的 autoload 的方法,这些都是 PHP 5.1.2 之后才加上的方法。为了方便,这里做了一些设定。假设你有类文件,放在/home/user/class/foo.class.php, 你当前的文件为/home/user/webroot/test.php, 示例代码如下。
在文件test.php中:
<?php
class autoload
{
public static function load( $class name )
{
$filename = "/home/user/class/".$classname."class.php";
...class autoload
{
public static function load( $class name )
{
$filename = "/home/user/class/".$classname."class.php";
阅读全文…
1