2016-04-06 9 views
0

どうすればこのようにプロパティを設定して取得できますか?PHP - 設定して取得する方法

$newObj = new Core; 

$newObj->setTitle("Value"); //where title is a property from the Core object 
$newObj->getTitle(); 

私はOOPに新しいが助けてください。

更新:ちょっとマジェントセットとセッションを得る。

+0

問題点を明確にすることはできますか? – akasummer

+0

マゼンタのアプローチを特別なものにすることができますか?それが立てば、質問は基本的なセッターとゲッターについてのようです。 – k0pernikus

答えて

2

PHPは、いわゆるマジックメソッドを提供します。あなたは__get__setの魔法を持っています。

setFoo()getFoo()メソッド呼び出しではアクセスできませんが、これによりクラスのアクセスできないプロパティにアクセスすることができます。これを行うには、プロパティごとに2つのメソッドを定義するか、3番目のマジックメソッド__callを使用する必要があります。

最初のパラメータと追加のパラメータの配列として呼び出されたメソッドの名前が取得され、呼び出しが行われた操作を簡単に識別できます。短い例:

public function __call($methodName, $methodParams) 
{ 
    $type = substr($methodName, 0, 3); 
    $property = lcfirst(substr($methodName, 3)); // lcfirst is only required if your properties begin with lower case letters 
    if (isset($this->{$property}) === false) { 
     // handle non-existing property 
    } 

    if ($type === "get") { 
     return $this->{$property}; 
    } elseif ($type === "set") { 
     $this->{$property} = $methodParams[0]; 
     return $this; // only if you wish to "link" several set calls. 
    } else { 
     // handle undefined type 
    } 
} 
+0

よろしくお願いします。 – MashiruAlexis

0

単純なパブリックメソッドを使用して、値をclass propertiesに設定できます。

https://eval.in/548500

class Core { 

    private $title; 

    public function setTitle($val) { 
     $this->title = $val; 
    } 

    public function getTitle() { 
     return $this->title; 
    } 

} 
+0

セッターで '$ this 'を返すのは良い習慣ではありませんか? – akasummer

+0

私はすでにその方法を知っています。私は製品から属性を取り出すときにMagentoのようにしたいと思っています。 – MashiruAlexis

0

あなたはこれを行うには、単純なクラスが必要です。

<?php 

    class Core 
    { 

     private $title; 

     public function setTitle($val) 
     { 
      $this->title = $val; 
     } 

     public function getTitle() 
     { 
      return $this->title; 
     } 
    } 

    $newObj = new Core; 

    $newObj->setTitle("Value"); 

    $newObj->getTitle(); 

?> 
+0

お返事ありがとうございましたが、私はすでにその方法を知っています。私は製品から属性を取り出すときにMagentoのようにしたいと思っています。 – MashiruAlexis

-1

まず、あなたはクラスのオブジェクトを生成し、適切なメソッドを呼び出すことにより、これらの方法を使用することができ、その後、この

<?php 
class sampleclass { 
    private $firstField; 


    public function getfirst() { 

    return $this->firstField; 

} 

public function setfirst($value) { 

    $this->firstField = $value; 
} 
} 
?> 

のようなあなたのクラスを作成します。メソッドを呼び出す

は、この、これだけ

$obj = new sampleclass(); 
$obj->setfirst('value'); 
echo $obj->getFirst(); 

のようなものです。

関連する問題