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

时间:2012-03-05 14:46:47

标签: php class

我们有两个A级和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实例,但我需要“传递”,也许这样的代码:

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

我知道这段代码充满了错误,但我写不出更好的代码。是否有任何解决方案来访问密码而不创建A的实例?

6 个答案:

答案 0 :(得分:2)

是。就这么简单:

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

答案 1 :(得分:1)

为什么不从B实例中调用A中的settings变量,因为B是A?

的子类

答案 2 :(得分:1)

如果我理解正确,那你就非常接近:

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

答案 3 :(得分:1)

如果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();

答案 4 :(得分:1)

试试这段代码:

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

答案 5 :(得分:1)

如何在A中设置公共静态变量?通过使其成为类变量,您将不需要A的实例。

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

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

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

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