[英]Can't call global class from namespaced class in PHP. Using Composer's autoload
我正在使用作曲家創建自動加載文件,所有爵士樂都按預期工作。
問題是 : 當我嘗試調用全局定義的類時,它將一直在名稱空間內部而不是全局范圍內查找。 即使我像在“ new \\ WC_Order();”中那樣使用\\轉義符
我已經將composer.json配置為將MyNamespace自動加載到正確的目錄中,並在我的wordpress主題的function.php中包含“ vendor / autoload.php”,並創建一個有效的新實例。 關於此過程的所有工作均有效。
include 'vendor\autoload.php';
$myclass = new MyNamespace\MyClass()
這是文件'MyNamespace \\ MyClass.php中發生錯誤的位置:
namespace MyNamespace;
class MyClass {
public function __construct()
{
$order = new \WC_Order(1234);
}
}
PHP引發致命錯誤:
Fatal error: Uncaught Error: Class 'MyNamespace\WC_Order' not found in ...\MyNamespace\MyClass.php
任何提示或提示將不勝感激!
編輯:我的作曲家/目錄設置
composer.json
{
"autoload": {
"psr-4": {
"MyNamespace\\": "MyNamespace"
}
},
"require": {
"guzzlehttp/guzzle": "^6.3"
}
}
functions.php在根目錄中,而類在MyNamespace / MyClass.php中
嘗試:
include 'vendor\autoload.php';
$myclass = new \MyNamespace\MyClass();
要么:
include 'vendor\autoload.php';
use MyNamespace\MyClass;
$myclass = new MyClass();
您可以在此處找到指南: https : //www.php.net/manual/zh/language.namespaces.importing.php
我想到了。 既然這是Wordpress,我應該迷上一個動作。 Woocommerce尚未加載。 一旦我使用add_action('init','doMyStuff'); 有效。
我仍然感到奇怪的是,消息是它雖然無法在命名空間中找到該類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.