如何访问继承到我们调用的php类的变量?

we have two class A & B:

class A{
var $settings;
function getinfo(){
    $settings['domain']="mydomain";
    $settings['pass']="1234";
    return $settings;
}
}

class B extends A{
$ads = A::getinfo();
function makeurl(){
    return "template/".$ads['domain'];
}
}

now i have an instance of B in my page, but i need "pass" , maybe some code like this:

$theme=new B();
$mypass = $theme->A->getinfo;
echo $mypass[$pass];

I know this code is full of faults , but i could not write a better one. is there any solution to access to password without making an instance of A?

Yes. It is as simple as this:

$theme = new B();
$mypass = $theme->getinfo();
echo $mypass['pass'];

You can also improve your classes a bit:

class A
{
    var $settings;
    function getinfo()
    {
        $this->settings['domain'] = "mydomain";
        $this->settings['pass'] = "1234";
        return $this->settings;
    }
}

class B extends A
{
    function makeurl()
    {
        $this->getinfo();
        return 'template/' . $this->settings['domain'];
    }
}

Why not call the settings variable in A from the B instance since B is a subclass of A?

If I understand you correctly, you're pretty close:

$theme=new B();
$settings = $theme->getinfo();
$mypass = $settings['pass'];
echo $mypass;

if B extends A, all protected and public members of A are inherited into B, so you can access them directly.

class A {
  protected $foo;

  public function __construct() { $this->foo = 1; }
}

class B extends A {
  public function bar() {
    echo $this->foo;
  }
}


$b = B();
$b->bar();

Try this code:

<?php
class A
{
    var $settings;

    function getinfo()
    {
        $settings['domain'] = "mydomain";
        $settings['pass'] = "1234";
        return $settings;
    }
}

class B extends A
{
    function makeurl()
    {
        $ads = $this->getinfo();
        return "template/" . $ads['domain'];
    }
}

$theme=new B();
$mypass = $theme->getinfo();
echo $mypass['pass'];

What about making settings a public static variable in A? By making it a class variable you won't need an instance of A.

class A {
    public static $settings;
    // getter and setter methods here
}

// code elsewhere
echo A::$settings['pass'];

Also because your class B extends A it inherits the methods and properties, so you could call

$theme = new B();
$mySettings = $theme->GetInfo();