一個物件導向方面的很基礎的小白有關問題,求指點

來源:互聯網
上載者:User
一個物件導向方面的很基礎的小白問題,求指點
在一個類內(其實是thinkPHP的控制器內類),有很多個方法(不是全部方法)會用到一些語句,我希望能將其整合到一個地方(比如一個方法裡邊?)到處調用一下,求教該怎麼寫

貼出現在的代碼範例(是有錯誤的)


class AbcAction extends BbcAction{
public function init(){
$model = M("table1");
$a = $model-> where("id = 1") -> getField("id"); //$a = 1
$this -> assign("a",$a);
}

public function test(){
$this->init()
echo $a;
$model -> find(1);
//希望在這裡能用到上邊的$a和$model(實際上這樣寫是報錯的,因為這是init內部的變數?
//init向前台傳遞的這個值,好像是可以的
}
}


問題很小白,求不吝賜教(眼下就要用到,來不及去系統的學習物件導向了..) 物件導向 方法內的變數

分享到:


------解決方案--------------------
設定兩個屬性試試看行嗎?$this->model=$model;$this->a=$a;這樣你這個類都可以調用了,但是得先調用init()方法。
------解決方案--------------------

class AbcAction extends BbcAction{

public $model;
public $a;
public function init(){
$this->model = M("table1");
$this->a = $this->model-> where("id = 1") -> getField("id"); //$a = 1
$this -> assign("a",$this->a);
}

public function test(){
$this->init();//如果是等同__construct為建構函式,在執行個體化AbcAction時就會執行的話,可不調用
echo $this->a;
$model -> find(1);
//希望在這裡能用到上邊的$a和$model(實際上這樣寫是報錯的,因為這是init內部的變數?
//init向前台傳遞的這個值,好像是可以的
}
}

------解決方案--------------------
如果 init 方法是預設執行的,而 test 方法中要使用到 init 方法產生的中間結果
那麼 init 方法產生的中間結果至少是要在類中全域的
class AbcAction extends BbcAction{
public function init(){
$this->model = M("table1");
$this->a = $model-> where("id = 1") -> getField("id"); //$a = 1
$this -> assign("a",$this->a);
}

public function test(){
// $this->init()
echo $this->a;
$this->model -> find(1);
//希望在這裡能用到上邊的$a和$model(實際上這樣寫是報錯的,因為這是init內部的變數?
//init向前台傳遞的這個值,好像是可以的
}
}
------解決方案--------------------
是嗎?
函數(方法)內的變數是私人的,你不把他變成公有的怎麼能用
我從你的錢夾裡拿錢化,你樂意嗎?
------解決方案--------------------
public function test()
{
//在這裡封裝一個curl方法直接去請求下面的getData()方法
//$url='http://192.168.1.1/模組/控制器/getData()';
curl_setopt($ch, CURLOPT_URL, $url);
}
public function getData()
{
//可以把資料都放在這個方法裡
echo json_encode($data);
}

不知道這樣是不是更適合你的需求。。。。
------解決方案--------------------
當然可以,但這就不是 TP 的風格了
thinkPHP 主張一事一議,所以有用一個 M 函數就載入一個資料表執行個體的簡單寫法

如果你不喜歡這種寫法,大可不必再去用它
如果你在他的架構內搭建自己小窩,日後很可能出現嚴重的協調性問題
畢竟你是不能隨性地修改他的核心的

引用:
Quote: 引用:

是嗎?
函數(方法)內的變數是私人的,你不把他變成公有的怎麼能用
我從你的錢夾裡拿錢化,你樂意嗎?


有沒有辦法把這一段代碼塊,引用到需要共用的地方,而不使用"調用共用函數"的方式呢? 這樣不就可以直接使用代碼裡的內容了

說起來這樣應該也不叫物件導向了,只是簡單的複用.
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.