导入PHP命名空间以扩展该命名空间中的类


Importing PHP Namespace To Extend A Class In That Namespace

这篇文章是由于我从第二个命名空间扩展在第一个命名空间中定义的类的一些困难。基于这篇文章:

PHP如何从另一个命名空间导入所有类

我试过了:

File NameSpace1:

<?php
namespace FirstNS;
class baseObject
{
    public $baseVar = 1;
public function baseFun() {}
}
?>

File NameSpace2:

<?php
namespace SecondNS;
use FirstNS;
class extendedObject extends FirstNS'baseObject {
    public $extendedVar = 1;
    public function extendedFun() {
    }
}
?>

extendedFun中的$this只能访问$extendedVarextendedFun,不能访问$baseVarbaseFun。我也尝试过use FirstNS as ClassFromFirstNS;class extendedObject extends ClassFromFirstNS,但是$baseVarbaseFun仍然无法通过$this访问。http://www.php.net/manual/en/language.namespaces.rationale.php、http://www.php.net/manual/en/language.namespaces.definition.php和http://www.php.net/manual/en/language.namespaces.importing.php上的信息似乎也没有直接针对这个案例。

试一试:

// File1.php
namespace FirstNS;
class baseObject
{
     public $baseVar = 1;
     public function baseFun() {}
}
// File2.php
namespace SecondNS;
include 'File1.php';
use FirstNS;
class extendedObject extends FirstNS'baseObject {
    public $extendedVar = 2;
    public function extendedFun()
    {
        var_dump($this->baseVar); // Outputs 1
        var_dump($this->extendedVar); // Outputs 2    
    }
}
// File3.php
include 'File2.php';
$object = new SecondNS'extendedObject();
$object->extendedFun();

我没有问题,让你的代码工作,它不清楚从你的问题,你有一个问题:

namespace FirstNS
{
    class baseObject
    {
        public $baseVar = 1;    
        public function baseFun() {}
    }
}
namespace SecondNS
{
    use FirstNS;
    class extendedObject extends FirstNS'baseObject
    {
        public $extendedVar = 1;
        public function extendedFun()
        {
            echo $this->extendedVar, "'n"; # works
            $this->baseFun(); # works
        }
    }
    echo '<pre>';
    $obj = new extendedObject();
    echo $obj->baseVar, "'n"; # works
    $obj->extendedFun();
}