精华内容
下载资源
问答
  • 自动加载类

    2013-04-26 07:34:32
    通过自动加载完成 需要图片上传的时候,加载图片上传;需要验证码的时候,加载验证码;需要smarty的时候,加载smarty (注意:功能 和 smarty,数据库连接不再同一个目录) function __autoload($class_...
    通过自动加载完成 需要图片上传类的时候,加载图片上传类;需要验证码类的时候,加载验证码类;需要smarty的时候,加载smarty (注意:功能类 和 smarty,数据库连接类不再同一个目录)
    <?php
    function __autoload($class_name){
    if(strpos($class_name,"Img") !==false){
    require_once('helps/'.$class_name.'.class.php');
    }else if(strpos($class_name,"Reg") !==false){
    require_once('helps/'.$class_name.'.class.php');
    }else if(strpos($class_name,"Smarty") !==false){
    require_once('plugins/smarty/'.$class_name.'.class.php');
    }
    }
    ?>
    展开全文
  • 本文实例讲述了PHP命名空间与自动加载类。分享给大家供大家参考,具体如下:今天我要给大家介绍的是PHP的命名空间 和 自动加载类我先简单的分开演示 在放在一起大家请看:什么是自动加载类?想必大家都应该知道__...

    本文实例讲述了PHP命名空间与自动加载类。分享给大家供大家参考,具体如下:

    今天我要给大家介绍的是PHP的命名空间 和 自动加载类

    我先简单的分开演示 在放在一起

    大家请看:

    什么是自动加载类?

    想必大家都应该知道__autoload 这个魔术方法

    $db = new DB();

    function __autoload($className)

    {

    echo $className;

    exit();

    //在这个里面引用类

    }

    在运用这个类只能加载一次 ,在很多时候我们要引入的不止一个类这个时候怎么办呢!

    牛逼的php大神们  出了个新方法 来解决 这个问题  请看就是这个函数

    spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。

    这个函数的用法有很多  这里先给大家介绍一种使用方法

    如下:

    function load1($className)

    {

    echo 1;

    require $className . '.php';

    }

    spl_autoload_register('load1'); //将load1函数注册到自动加载队列中。

    $db = new DB(); //找不到DB类,就会自动去调用刚注册的load1函数了

    //php 5.3之后,也可以像这样支持匿名函数了。

    spl_autoload_register(function($className){

    if (is_file('./lib/' . $className . '.php')) {

    require './lib/' . $className . '.php';

    }

    });

    多个spl_autoload_register的使用

    判断是否有此文件

    如果有引入 如果没有 没有如果了,哪来的如果

    function load1($className)

    {

    echo 1;

    if (is_file($className . '.php')) {

    require $className . '.php';

    }

    }

    function load2($className)

    {

    echo 2;

    if (is_file('./app/' . $className . '.php')) {

    require './app/' . $className . '.php';

    }

    }

    function __autoload($className)

    {

    echo 3;

    if (is_file('./lib/' . $className . '.php')) {

    require './lib/' . $className . '.php';

    }

    }

    //注册了3个

    spl_autoload_register('load1');

    spl_autoload_register('load2');

    spl_autoload_register('__autoload');

    $db = new DB(); //DB就在本目录下

    $info = new Info(); //Info 在/lib/Info.php

    我们可以打印spl_autoload_functions()函数,来显示一共注册了多少个自动加载:

    var_dump(spl_autoload_functions());

    //数组的形式输出

    array (size=3)

    0 => string 'load1' (length=5)

    1 => string 'load2' (length=5)

    2 => string '__autoload' (length=10)

    命名空间

    一个php文件里 是不支持 new 两个名字的

    这个时候我们就能用的到命名空间了

    namespace app;

    class new{

    public function ten()

    {

    echo "85";

    }

    }

    namespace hii;

    class new{

    public function ten()

    {

    echo "85";

    }

    }

    spl_autoload_register自动加载+namespace命名空间 的使用

    废话不多数  看例子

    AutoLoading\loading

    namespace AutoLoading;

    class loading {

    public static function autoload($className)

    {

    //把 \ 转换层 / , 便于兼容Linux文件找。Windows 下是通用的

    //由于namspace 很规格,所以直接很快就能找到

    $fileName = str_replace('\\', '/', DIR . '\\'. $className) . '.php';

    if (is_file($fileName)) {

    require $fileName;

    } else {

    echo $fileName . ' is not exist'; die;

    }

    }

    }

    上面就是一个自动加载的核心思想方法。下面我们就来spl_autoload_register来注册这个函数:

    index.php

    //定义当前的目录绝对路径

    define('DIR', dirname(__FILE__));

    //加载这个文件

    require DIR . '/loading.php';

    //采用`命名空间`的方式注册。php 5.3 加入的

    //也必须是得是static静态方法调用,然后就像加载namespace的方式调用,注意:不能使用use

    spl_autoload_register("\\AutoLoading\\loading::autoload");

    // 调用三个namespace类

    //定位到Lib目录下的Name.php

    Lib\Name::test();

    //定位到App目录下Android目录下的Name.php

    App\Android\Name::test();

    //定位到App目录下Ios目录下的Name.php

    App\Ios\Name::test();

    由于我们是采用PSR-O方式来定义namespace的命名的,所以很好的定位到这个文件的在哪个目录下了。很爽。对不对。

    APP\Android\Name

    namespace App\Android;

    class Name

    {

    public function __construct()

    {

    echo __NAMESPACE__ . "
    ";

    }

    public static function test()

    {

    echo __NAMESPACE__ . ' static function test
    ';

    }

    }

    所以就会很容易找到文件,并输出:

    Lib static function test

    App\Android static function test

    App\Ios static function test

    好了。基本的东西就讲完了.

    希望本文所述对大家PHP程序设计有所帮助。

    展开全文
  • 这个函数是一个自动加载类函数,啥事自动加载函数,顾名思义 ,那就是自己就会加载类的函数(原谅我废话了)我们先看下面的代码:以上代码我们定义了一个自动加在类函数 __autoload,传入参数是$classname,记住,这里...

    这个函数是一个自动加载类函数,啥事自动加载函数,顾名思义 ,那就是自己就会加载类的函数(原谅我废话了)

    我们先看下面的代码:

    以上代码我们定义了一个自动加在类函数 __autoload,传入参数是$classname,记住,这里需传参,手册里面的函数说明如下:

    void __autoload ( string $class )

    我们需在此传入参数。我们的自动加载类函数里面输出了hellworld,这个应该是没有问题的。

    我们接着看我们的代码 $obj = new Test1(); 在这里,我们并没有写上类Test1,那么我们执行以下代码看看:

    bea8e81a61118d4f6c3bd9afde21fa39.png

    以上是运行结果,发现自动输出了hellworld,在这里只有__autoload 代码有输出了hellworld。说明我们的antoload在未调用的情况下调用了。

    在这里,我要说明以下,我们antoload函数会在我们在加载未定义的类的时候触发,而我们并没有定义Test1这个类,所以在此触发了。唔这样说应该明白了 =。=。。。

    现在我们来尝试修改成以下修改这个代码:

    function __autoload($classname) {

    $classfile = $classname . '.php';

    if ( is_file($classfile) ) {

    require_once($classfile);

    }

    }

    $obj = new Test1();

    $obj->TestFunction();

    我在函数里面接收了 classname ,并且给了后缀名,然后用if判断文件是否存在,如果存在那么就调用TestFunction。

    那么在此我们还需要在当前目录下新建一个这个类文件,文件名当然是和 classname 一样的,这个 classname 就是我们的Test1,在这里我们new Test1所以我们传入autoload的参数就是Test1,所以我们在这里新建一个Test的php文件,里面代码如下:

    class Test1 {

    function TestFunction() {

    echo 'hello world';

    }

    }

    然后我们在此运行:

    88074c1666dd1f538987aa440b65c77c.png

    展开全文
  • 请,如果您需要自动加载类 – 使用命名空间和类名称约定与SPL自动加载,它将节省您的重构时间.当然,您将需要将每个类作为对象进行实例化.谢谢.或者像这样(我在我的一个项目中):spl_autoload_register(function($...

    请,如果您需要自动加载类 – 使用命名空间和类名称约定与SPL自动加载,它将节省您的重构时间.

    当然,您将需要将每个类作为对象进行实例化.

    谢谢.

    或者像这样(我在我的一个项目中):

    spl_autoload_register(function($className)

    {

    $namespace=str_replace("\\","/",__NAMESPACE__);

    $className=str_replace("\\","/",$className);

    $class=CORE_PATH."/classes/".(empty($namespace)?"":$namespace."/")."{$className}.class.php";

    include_once($class);

    });

    ?>

    然后你可以像这样实例化你的课程:

    $example=new NS1\NS2\ExampleClass($exampleConstructParam);

    ?>

    这是你的类(在/NS1/NS2/ExampleClass.class.php中找到):

    namespace NS1\NS2

    {

    class Symbols extends \DB\Table

    {

    public function __construct($param)

    {

    echo "hello!";

    }

    }

    }

    ?>

    展开全文
  • 今天小编就为大家整理了一篇Laravel如何实现自动加载类的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了PHP命名空间与自动加载类,结合实例形式详细分析了php自动加载类与命名空间原理、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 本篇文章是对zend Framework如何自动加载类进行了详细的分析介绍,需要的朋友参考下
  • 主要介绍了Yii实现自动加载类地图的方法,涉及Yii加载类的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 主要介绍了PHP 自动加载类原理与用法,结合具体实例形式分析了PHP 自动加载类基本概念、原理、使用方法及操作注意事项,需要的朋友可以参考下
  • PHP的命名空间(namespace)是php5.3之后才有的。这篇文章主要介绍了PHP命名空间和自动加载类的相关资料,需要的朋友可以参考下
  • PHP自动加载类

    2016-01-13 11:58:58
    PHP自动加载类
  • 主要为大家详细介绍了PHP框架自动加载类文件原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • PHP-自动加载类

    2020-03-27 14:07:07
    1.2 自动加载类 在项目开发中,因为一个文件中只能写一个类,并且在执行过程中会有很多的类参与,如果一个一个的加载很麻烦,所以,就需要一个机制实现在PHP执行过程中自动加载需要的类。 1.2.1 类的规则 一个文件...
  • php自动加载类

    2018-12-08 17:05:32
    PHP自动加载类 在PHP5之前我们还可以使用PHP的自动加载函数http://php.net/manual/zh/function.autoload.php __autoload(),在PHP7之后官方推荐的就是 ...这里就拿它们做比...
  • zencart自动加载类解析

    2012-03-26 11:18:02
    zencart自动加载类解析,收集 非原创
  • mvc自动加载类

    2016-12-24 16:56:40
    接下来我们实现调用自动加载类 1.将自动加载方法放到基本类中  2.将接过来的值中的反斜线改为正斜线用到的方法是: 因为输入一个反斜线是转义字符所以我们须要写俩个 3.在引入一个类的时候先要判断是否...
  • laravel 自动加载类

    千次阅读 2018-03-19 09:32:06
    1、需求因项目需要,在某个地方需要使用自定义的类,Strtopy.php  使用laravel自动加载类机制2、过程Strtopy.php所在目录 app/Lib/Strtopy.php  Lib目录是自己建的目录在composer.json的autoload内的classmap项...
  • php实现自动加载类

    2017-03-16 16:19:50
    PHP 实现自动加载类
  • php自动加载类 Test

    千次阅读 2016-06-23 15:23:47
    php自动加载类 Test
  • 主要介绍了PHP面向对象程序设计之命名空间与自动加载类,结合实例形式分析了php命名空间与自动加载类的概念、功能、使用方法与相关注意事项,需要的朋友可以参考下
  • 自动加载类 很多开发者写面向对象的应用程序时,对每个类的定义建立一个PHP 源文件。一个很大 的烦恼是不得不在每个脚本(每个类一...这就是我们这里我们 要讲的自动加载类。 在PHP5 中,可以定义一个__autoload()函数
  • 主要介绍了Yii2中YiiBase自动加载类、引用文件的方法,实例分析了Yii中的autoload函数用于自动加载类及引用文件的相关技巧,需要的朋友可以参考下
  • 1.1自动加载类 在项目开发中,因为一个文件中只能写一个类,并且在执行过程中会有很多的类参与,如果一个一个的加载很麻烦,所以 就需要一个机制实现在PHP执行过程中自动加载需要的类 1.1.1 书写类的规则 1.一个文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,426
精华内容 4,570
关键字:

自动加载类