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


How to access a variable that inherits to a php class that we called?

我们有两个类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'];
}
}

现在我的页面中有一个B的实例,但我需要"pass",也许是一些类似的代码:

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

我知道这段代码充满了错误,但我写不出更好的了。有没有任何解决方案可以在不创建A实例的情况下访问密码?

是。就这么简单:

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

你也可以稍微提高你的课程:

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'];
    }
}

既然B是A的子类,为什么不从B实例调用A中的设置变量?

试试这个代码:

<?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'];

让设置成为a中的公共静态变量怎么样?通过将其作为类变量,您将不需要a.的实例

class A {
    public static $settings;
    // getter and setter methods here
}
// code elsewhere
echo A::$settings['pass'];

另外,因为你的类B扩展了A,它继承了方法和属性,所以你可以调用

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

如果B扩展了A,则A的所有受保护成员和公共成员都将继承到B中,因此您可以直接访问它们。

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

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

如果我正确理解你,你就很接近了:

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