簡體   English   中英

在類方法中使用php中命名空間中的類

[英]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.

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