首頁>Program>source

我在命名空間和 use方面遇到了一些麻煩 宣告。

我有三个檔案: ShapeInterface.phpShape.phpCircle.php

我正在尝試使用相對路徑进行此操作,因此已將其放置在所有類中:

namespace Shape;

在我的圈子Class程中,我有以下內容:

namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';    
class Circle extends Shape implements ShapeInterface{ ....

如果我使用 include 宣告我没有錯誤.如果我尝試 use 我得到的陳述:

Fatal error: Class 'Shape\Shape' not found in /Users/shawn/Documents/work/sites/workspace/shape/Circle.php on line 8

有人可以给我一些指匯吗?

最新回復
  • 5月前
    1 #

    use 運算符用於為類,介面或其他名稱空間的名稱提供別名.最威兹 語句引用您要縮短的名稱空間或類:

    use
    

    等效於:

    use My\Full\Namespace;
    

    如果 use My\Full\Namespace as Namespace; // Namespace\Foo is now shorthand for My\Full\Namespace\Foo 運算符与類或介面名稱一起使用,它具有以下用途:

    use
    

    // after this, "new DifferentName();" would instantiate a My\Full\Classname use My\Full\Classname as DifferentName; // global class - making "new ArrayObject()" and "new \ArrayObject()" equivalent use ArrayObject; 操作員不要与自動載入混淆.自動載入一个類(不需要 use )(通過向 include註册自動裝帶器) ).您可能需要阅讀PSR-4才能看到合適的自動載入器實現。

  • 5月前
    2 #

    如果需要將代碼排序到名稱空間中,只需使用關鍵字 spl_autoload_register

    file1.php

    namespace
    

    在file2.php中

    namespace foo\bar;
    

    您也可以使用 $obj = new \foo\bar\myObj(); .如果您在file2中放了

    use

    您需要使用 use foo\bar as mypath; 代替 mypath 檔案中的任何位置:

    bar
    

    使用 $obj = new mypath\myObj(); 等於 use foo\bar; .

    use foo\bar as bar;

相似問題

  • ios:設置UILabel行距
  • IntelliJ和Tomcat 如何