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

This post is due to some difficulty I am having extending a class defined in a first namespace from a second namespace. Based on this post :

PHP how to import all classes from another namespace

I tried this :

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() {

    }
}

?>

However $this in extendedFun can only access $extendedVar and extendedFun, not $baseVar and baseFun. I have also tried use FirstNS as ClassFromFirstNS; and class extendedObject extends ClassFromFirstNS however $baseVar and baseFun are still not accessible via $this. The information at http://www.php.net/manual/en/language.namespaces.rationale.php, http://www.php.net/manual/en/language.namespaces.definition.php and http://www.php.net/manual/en/language.namespaces.importing.php also did not seem to directly address this case.

I have no problems to get your code to work, it's not clear from your question where you've got a problem:

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, "
"; # works
            $this->baseFun(); # works
        }
    }

    echo '<pre>';
    $obj = new extendedObject();
    echo $obj->baseVar, "
"; # works
    $obj->extendedFun();
}

Demo - Hope this is helpful.

Give this a shot:

// 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();