做习惯了编译语言,转到php 使用 php的面向对象开发时候遇见一个挺别扭的问题。在Php中引入对象 后 在调用过程中还需要将对象所在的php文件
require 到当前php文件
目前代码结构
index.php
<?phpuse 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;}}