2016-07-04 2 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

Вы можете PHP «s parent ключевое слово, и 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

Вот два подхода:

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

Вы можете использовать переменную времени в любом месте в коде без создания экземпляра класса A. Также переменная «$ time» не обязательно должна быть статичной.

Смежные вопросы