php 类文件加载 Autoloader
做习惯了编译语言,转到php 使用 php的面向对象开发时候遇见一个挺别扭的问题。在Php中引入对象 后 在调用过程中还需要将对象所在的php文件
require 到当前php文件
目前代码结构
index.php
<?php use model\BookModel; 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; } }
一只站在树上的鸟儿,从来不会害怕树枝会断裂,因为它相信的不是树枝,而是它自己的翅膀。与其每天担心未来,不如努力做好现在。