簡體   English   中英

PHP - spl_autoload_register不使用`namespace`和`use`

[英]PHP - spl_autoload_register Not Working with `namespace` and `use`

我正在學習並嘗試理解namespace的使用並在PHP中use 我也在php.net文檔中使用了spl_autoload_register 我仍然混淆使用它並得到一個錯誤。

我的tutorials文件夾中有2個文件:

  1. php_oop.php
  2. tutor.php

php_oop.php

<?php
namespace php_oop;

class php_oop 
{
    public function __construct($name){
        $this->name = $name;
    }

    public function get(){
        return $this->name;
    }
}

tutor.php

<?php

spl_autoload_register(function ($class_name) {
    var_dump($class_name);
    include $class_name . '.php';
    // include 'php_oop.php';
});

use php_oop;

$tutor = new php_oop('My Name');
echo $tutor->get();

產量

警告:帶有非復合名稱'php_oop'的use語句在第9行的C:\\ xampp \\ htdocs \\ tutorial \\ oop \\ tutor.php中無效。字符串(7)“php_oop”致命錯誤:未找到類'php_oop'在第11行的C:\\ xampp \\ htdocs \\ tutorial \\ oop \\ tutor.php中

我可以知道如何正確使用它嗎?

use不像import 您必須use 您正在 use 每個類而不是每個名稱空間 對於你的例子,它將是:

use php_oop\php_oop;

這將從php_oop 命名空間導入php_oop

有關更多信息和有用提示,請參閱導入名稱空間的文檔

(副作用:傳遞給spl_autoload_register回調的$class_name包含類的全名,包括命名空間。對於自動加載器正確加載類,您需要更改自動加載器代碼或將php_oop.php文件移動到名為php_oop文件夾,以匹配它來自的命名空間。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM