加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP命名空间与自动加载类分析

发布时间:2022-06-30 15:18:30 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了PHP命名空间与自动加载类,结合实例形式详细分析了php自动加载类与命名空间原理、使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了PHP命名空间与自动加载类,分享给大家供大家参考,具体如下: 今天我要给大家介绍的是PHP
  这篇文章主要介绍了PHP命名空间与自动加载类,结合实例形式详细分析了php自动加载类与命名空间原理、使用方法及相关操作注意事项,需要的朋友可以参考下
 
  本文实例讲述了PHP命名空间与自动加载类,分享给大家供大家参考,具体如下:
 
  今天我要给大家介绍的是PHP的命名空间 和 自动加载类
 
   //在这个里面引用类
  }
  在运用这个类只能加载一次 ,在很多时候我们要引入的不止一个类这个时候怎么办呢!
 
  牛逼的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)
  {
     }
  }
  //注册了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()
   spl_autoload_register自动加载+namespace命名空间 的使用
 
  废话不多数  看例子
 
  AutoLoadingloading
 
  <?php
  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
 
  <?php
  //定义当前的目录绝对路径
  define('DIR', dirname(__FILE__));
  //加载这个文件
  require DIR . '/loading.php';
  //采用`命名空间`的方式注册。php 5.3 加入的
  //也必须是得是static静态方法调用,然后就像加载namespace的方式调用,注意:不能使用use
  spl_autoload_register("AutoLoadingloading::autoload");
  // 调用三个namespace类
  //定位到Lib目录下的Name.php
 
  Lib static function test
 
  AppAndroid static function test
 
  AppIos static function test
 
  好了。基本的东西就讲完了.

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读