2016-07-04 49 views
0

我有下面的情况下读取变量,我不知道如何作出这样的:如何从另一个类

class A { 
public fuction a1() 
{ 
    $time = date("Y-m-d H:i:s"); 
} 
} 

class B extends A { 
public function b1() 
{ 
    // how to echo the variable "$time" in class B? 
} 
} 
+0

调用父类方法就像这个'parent :: a1();'? –

+2

'$ time'不存在于方法之外。您应该将其设置为类属性或从方法返回,以便可以使用该值。 – jeroen

+0

只是想到,你可以调用直接函数a1()里面b1()它会工作 –

回答

2

您可以PHPparent关键字,并return的距离函数值a1()

所以你的代码会是这个样子,

<?php 
class A 
{ 
    public static function a1() 
    { 
     $time = date("Y-m-d H:i:s"); 
     return $time; 
    } 
} 

class B extends A 
{ 
    public function b1() 
    { 
     echo parent::a1(); 
    } 
} 
+0

谢谢,更新了答案。 –

0

你也可以试试这个

<?php 
class A 
{ 
    public static function a1() 
    { 
     echo $time = date("Y-m-d H:i:s"); 

    } 
} 

class B extends A 
{ 
    public function b1() 
    { 
     $this->a1(); 
    } 
} 

$object = new B; 
$object->b1(); 
0

这里是2的方法:

First:

<?php 
/** 
* Class A 
*/ 
class A 
{ 
    /** 
    * Class Property (Class Var) 
    * @var public 
    */ 
    public $time; 

    /** 
    * a1 
    * Set date time in class property $time 
    * @return [type] [description] 
    */ 
    public function a1() 
    { 
     $this->time = date("Y-m-d H:i:s"); 
    } 
} 

/** 
* Class B extends Class A 
*/ 
class B extends A 
{ 
    /** 
    * b1 
    * Call Parent Class A method first to set date time 
    * then echo time output 
    * @return string Parent Class T$time value 
    */ 
    public function b1() 
    { 
     // first init the time value from parent class method 
     $this->a1(); 

     // now show or get the parent class property 
     return $this->time; 
    } 
} 

/** 
* Class Object B 
* @var B 
*/ 
$B = new B(); 

// call B Class method b1 to echo time 
echo $B->b1(); 

Second:

<?php 
/** 
* Class A 
*/ 
class A 
{ 
    /** 
    * Class Property (Class Var) 
    * @var public 
    */ 
    public $time; 

    /** 
    * a1 
    * Set date time in class property $time 
    * @return [type] [description] 
    */ 
    public function a1() 
    { 
     // set date time 
     $this->time = date("Y-m-d H:i:s"); 

     // return set class property value 
     return $this->time; 
    } 
} 

/** 
* Class B extends Class A 
*/ 
class B extends A 
{ 
    /** 
    * b1 
    * Call Parent Class A method first to set date time 
    * then echo time output 
    * @return string Parent Class T$time value 
    */ 
    public function b1() 
    { 
     // first init the time value from parent class method 
     return $this->a1(); 
    } 
} 

/** 
* Class Object B 
* @var B 
*/ 
$B = new B(); 

// call B Class method b1 to echo time 
echo $B->b1(); 
0

对于您可以声明你的第一类变量没有的功能。

class A() 
{ 
    protected static $time = date("Y-m-d H:i:s"); 

} 

class B extends A 
{ 
    public function b1() 
    { 
     echo parent::$time; 
    } 
} 

您可以在代码中的任何位置使用time变量而无需实例化A类。 “$ time”变量也不一定是静态的。