2017-02-03 21 views
0

こんにちは、他のクラスに含まれている関数postData()から$ manufacturerと$ idを取得するにはどうすればいいですか?だから私はそれを私のモデルに渡すことができます。ありがとうございました。他のクラスからextendを使って変数にアクセスする方法は?

class postDataManager{ 

    public function postData(){ 
     $manufacturer = $_POST['manufacturer']; 
     $id = $_POST['id']; 
    } 
} 

class manufactureController extends postDataManager{ 

    private $model; 

    public function __construct(){ 
     $this->model = new manufacturerModel(); 
     $postDataManager= new postDataManager(); 
    } 

    public function addManufacturer(){ //get the add function 
     //here i need access for the variable $manufaturer from class postData function 
     $this->model->addProcess($manufacturer);  
    } 

    public function updateManufacturer(){ //get the update function 
     //here i need access for the variable $manufaturer and $id from class postData function 
     $this->model->updateProcess($id, $manufacturer); 
    } 
} 

答えて

1

postData()方法が残されると、彼らは方法のローカルスコープに属しているため、現在、これらの二つの変数は、失われます。それらのプロパティを定義する必要があります。

この変形例を見てみましょう:

<?php 
class manufacturerModel { 
} 

class postDataManager { 
    protected $id; 
    protected $manufacturer; 

    public function __construct($manufacturer, $id) { 
    $this->manufacturer = $manufacturer; 
    $this->id = $id; 
    } 
} 

class manufactureController extends postDataManager { 
    private $model; 

    public function __construct($manufacturer, $id) { 
    parent::__construct($manufacturer, $id); 
    $this->model = new manufacturerModel(); 
    } 

    public function addManufacturer() { //get the add function 
    $this->model->addProcess($this->manufacturer);  
    } 

    public function updateManufacturer() { //get the update function 
    $this->model->updateProcess($this->id, $this->manufacturer); 
    } 

    public function echoContent() { 
    echo sprintf("manufacturer: %s\nid: %s\n", $this->manufacturer, $this->id); 
    } 
} 

// some example values 
$_POST['manufacturer'] = "Manufactum Ltd."; 
$_POST['id'] = 17397394; 

$controller = new manufactureController($_POST['manufacturer'], $_POST['id']); 
$controller->echoContent(); 

を今すぐこれらの値は、オブジェクト内の永続的に保存されます。 2番目のクラスが最初のクラスを継承するので、それらのプロパティはその派生クラスからインスタンス化するオブジェクトの一部でもあるため、そのクラスにprivateと宣言されていない限り、$this参照を使用して同様にアクセスできます。

上記デモコードの出力は次のとおり

manufacturer: Manufactum Ltd. 
id: 17397394 

これらはOOP(オブジェクト指向プログラミング)の基本であり、これはすべてのチュートリアルで説明されています。

+0

申し訳ありません申し訳ありません、私はちょうどOOPを学び始めています。どのように私はそれらを私のモデルに呼び出すことができますか?今私はモデルpublic function addProcess($ manufacturer){} –

+0

私はユーザー入力をエコーし​​ようとしました。ユーザー入力をエコーし​​ない@arkascha –

+0

@GeninaAnneGabuten申し訳ありませんが、コードを修正して動作させる必要がありました。私はPHPをプログラムするのにしばらく時間がかかりました。 ;-) – arkascha

0

は$メーカーの名前と$ idを持つプロパティを作成

class postDataManager{ 
    protected $manufacturer; 
    protected $id; 
    public function postData($manufacturer){ 
     $this->manufacturer = $_POST['manufacturer']; 
     $this->id = $_POST['id']; 
    } 
} 

+0

私はメーカーをエコーし​​ようとしました。それはユーザ入力を表示していません –

+0

'$ manufacturer'と' $ id'はここでは_not_オブジェクトですが、プロパティです。用語を混ぜて人を混乱させてはいけません。 – arkascha

+0

申し訳ありませんが、間違って入力しました –

0

あなたはその後、$this->manufacturer=$_POST['manufacturer'];を使用postDataManagerクラス内とPOSTDATA機能の$manufacturer$id変数を宣言する必要があります今、あなたは、子クラスにしてアクセスすることができますと$this->id=$_POST['id'];

関連する問題