[英]use class from namespace in php in class method
我是php的新手,第一次嘗試使用namespace
s,我在一個大的php文件(以下簡化)中遇到了這個瘋狂的問題:
B.php:
namespace Logic;
class C {}
class B {}
A.php:
use Logic\C;
class A extends \BaseClass {
public function __construct() {}
// [...500 lines of code...]
private function hi() { $c = new C(); }
}
hi
方法給出錯誤: Class 'Logic\\\\C' not found in A.php
但是,如果我只是在A的構造函數中引用B,它將按預期工作:
class A extends \Base {
public function __construct() { $dummy = new C(); }
// [...500 lines of code...]
private function hi() { $c = new C(); }
}
當運行上面修改后的代碼中的hi
方法時,沒有問題。
誰能想到一個合理的解釋為什么會這樣? 我在php中濫用名稱空間嗎?
您需要了解, use
語句不會自動包含定義Logic\\C
的源代碼文件。 您需要手動使用自動加載磁帶機,或require_once
從該文件訪問類之前該文件。
我建議遵循有關名稱空間的手冊(及其中的示例): http : //php.net/manual/zh/language.namespaces.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.