2016-08-26 48 views
1

我對OOP很陌生。我讀過派生類可以訪問基類的公共和受保護成員。laravel的基本繼承

A.php

<?php 
namespace App\Http\Controllers; 
class A extends Controller 
{ 
     public $x=5; 
     public function index() 
     {...} 
} 

B.php

<?php 
namespace App\Http\Controllers; 
class B extends A 
{ 
    public function index() 
    { 
      print_r($x); 
    } 
} 

爲什麼$x不是從派生類中訪問? 我有這樣的路線:

Route::get('/B/index','[email protected]'); 

我得到了錯誤:

undefined variable x.

+0

您直接從類'B'的身體調用一個函數。你需要用一種方法來包裝它。同時更新您的問題,並告訴我們您收到的錯誤。 – linuxartisan

+0

@linuxartisan我收到未定義的變量x。 – Steve

回答

3

請在你的代碼以下更改:

class B extends A 
{ 
    public function get() 
    { 
     echo $this->x; // will echo the value in variable $x; 
    } 
} 

$obj = new B; 
$obj->get(); 
3

請更改代碼波紋管。它會顯示結果。

class A 
{ 
     public $x=5; //or protected $x=5; 
     public function index() 
     { 
     echo "A"; 
     } 
} 

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

} 

$classB = new B(); 
$classB->index(); 

你可以使用:http://phptester.net/測試在線

我希望幫你

+0

如果你想運行回聲「A」。請使用$ classA = new A(); $ classA->指數();謝謝! – hunglevan