zoukankan      html  css  js  c++  java
  • php 类文件加载 Autoloader

      做习惯了编译语言,转到php 使用 php的面向对象开发时候遇见一个挺别扭的问题。在Php中引入对象 后 在调用过程中还需要将对象所在的php文件

    require 到当前php文件

    目前代码结构



    index.php
    <?php
    
    use modelBookModel;
    
    include_once __DIR__.'/autoloader.php';
    Autoloader::register();
    
    $book=new BookModel();
    $book->id=10;
    $book->name="wangk";
    echo $book->toString();
    
    ?>

    autoloader.php
    <?php
    
    /**
     *
     * 自动载入函数
     */
    class Autoloader
    {
        /**
         * 向PHP注册在自动载入函数
         */
        public static function register()
        {
            spl_autoload_register(array(new self, 'autoload'));
        }
    
        /**
         * 根据类名载入所在文件
         */
        public static function autoload($className)
        {
    
            // DIRECTORY_SEPARATOR:目录分隔符,linux上就是’/’    windows上是’’
            $filePath = __DIR__ . DIRECTORY_SEPARATOR . $className;
            $filePath = str_replace('\', DIRECTORY_SEPARATOR, $filePath) . '.php';
            if (file_exists($filePath)) {
                require_once $filePath;
                return;
    //                if(method_exists($className, "init")) {
    //                    call_user_func(array($className, "init"), $params);
    //                }
            } else {
                echo "无法加载" . $filePath;
            }
    
        }
    }

    bookmodel.php
    <?php
    /**
     * Created by PhpStorm.
     * User: wangk
     * Date: 2015/7/16
     * Time: 10:14
     */
    
    namespace model;
    
    
    class BookModel {
    
         public  $name;
         public  $id;
         public  $age;
    
        public  function  toString(){
    
            return 'name:'.$this->name.','.$this->id.",".$this->age;
        }
    
    }
  • 相关阅读:
    什么是进程
    进程控制
    MMAP文件内存映射
    I/O多路转接模型
    LINUX创建管道文件
    文件描述符复制
    LINUX改变文件大小
    类作用域
    LINUX文件定位
    War of the Corporations CodeForces
  • 原文地址:https://www.cnblogs.com/rhythmK/p/4652087.html
Copyright © 2011-2022 走看看