zoukankan      html  css  js  c++  java
  • [PHP] 自动加载的实现

    基于psr的规范,使用命名空间和spl_autoload_register()来实现自动加载

    文件结构:

    |--Api
      |--Account.php
      |--User.php
    |--Service
      |--Login.php
      |--User.php

    |--Application.php

    Application.php

    <?php
    use ApiUser;
    use ServiceUser as User2;
    class Application{
        public static function main(){
            self::registe();
            new User();
            new User2();
        }
        public static function registe(){
            spl_autoload_register("Application::loadClass");
        }
        public static function loadClass($class){
            $class=str_replace('\', '/', $class);
            $class="./".$class.".php";
            require_once $class;        
        }
    }
    Application::main();

    ApiUser.php

    <?php
    namespace Api;
    
    use ServiceLogin;
    class User{
        public function __construct(){
            echo "User类<br/>";
            new Login();
            new Account();
        }
    }

    ApiAccount.php

    <?php
    namespace Api;
    
    class Account{
        public function __construct(){
            echo "Account类<br/>";
        }
    }

    ServiceLogin.php

    <?php
    namespace Service;
    
    class Login{
        public function __construct(){
            echo "Login类<br/>";
        }
    }

    ServiceUser.php

    <?php
    namespace Service;
    
    class User{
        public function __construct(){
            echo "Service下的User类<br/>";
        }
    }

    结果:

     

  • 相关阅读:
    GDB编辑、搜索源码以及在线帮助
    GDB查看栈信息
    GDB信号处理
    GDB反向调试
    GDB调试多进程程序
    GDB后台调试命令
    GDB non-stop模式
    GDB调试多线程程序
    GDB禁用删除断点
    解决Mac OS下Eclipse、IntelliJ IDEA打开其他窗口默认全屏
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5743622.html
Copyright © 2011-2022 走看看