2

これが質問であるかどうかはわかりません。保護された/プライベートなプロパティとメソッドについての私の理解は、クラス内からのみアクセスできるということです。オブジェクトをデータベースに保存するための簡単な方法のような静的メソッドがあります。静的メソッド内からオブジェクトを作成し、setter 関数を使用してプロパティを設定します。ただし、1 つのプロパティにはセッターがありませんが、まだアクセスできます。次のようなクラスがあります。

class Person {

   protected $name;
   protected $email;
   protected $created;

   //set name
   public function set_name( $name ) {
       $this->name = $name;
   }

   //set email
   public function set_email( $email ) {
       $this->email = $email;
   }

   //add new person
   static function add( $data ) {

       $person = new Person;
       $person->set_name( $data['name'] );
       $person->set_email( $data['email'] );

       //set created date
       $person->created = date('Y-m-d h:ia', time());

       //save to db
       $db->add($data);

       return $person;

   }

}

実装は次のようになります。

$person = Person::add(array(
   'name' => 'Bob Barker',
   'email' => 'bob@thepriceisright.com'
));

このコードは機能します。作品とは、作成日が正常に設定されることを意味します。なんで?

4

2 に答える 2