新潟アクセス修飾子/指定子のご提案

これからは新潟の時代だ!

導入方法

#ダウンロード
#php 5.3.2 本体
wget http://jp2.php.net/distributions/php-5.3.2.tar.gz

#新潟パッチ
wget http://rtilabs.net/files/2010_05_20/niigata.patch

#サンプルその1とその2
wget http://rtilabs.net/files/2010_05_20/niigata_test1.php.txt
wget http://rtilabs.net/files/2010_05_20/niigata_test2.php.txt

##余談
##diffはこうやって作った。
##diff -crN php-5.3.2 php-5.3.2_niigata > niigata.patch

##パッチを当てる
#パッチ当てるのがめんどくさい人にはパッチを当てたバージョンもあるよ!
#http://rtilabs.net/files/2010_05_20/php-5.3.2.niigata.tar.gz
#
patch < niigata.patch

#コンパイル
cd php-5.3.2
./configure
make

##サンプルで遊ぶ
#書き込み失敗のサンプル
./sapi/cli/php ../niigata_test1.php.txt

#読み込めることを確認するサンプル
./sapi/cli/php ../niigata_test2.php.txt

新潟で何が変わるか?

読めるけど、書けない。

niigataアクセス修飾子はクラスの外から読むことはできるけど、書き込むことができないアクセス修飾子。

class Human{
   niigata $Age;

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
};

//コレできても、
echo $HumanObject->Age;

//これはできない
$HumanObject->Age = 100;
// Fatal error: Cannot access niigata property Human::$Age in 
// /home/rti/lab/php-5.3.2/a.php on line 13

無意味なgetter からの解放!!

//非新潟のコード
//無意味なgetterの連続
class Human{
   private $Age,$Name,$Address,$Tel;

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
   public function getAge(){
       return $this->Age;
   }
   public function getName(){
       return $this->Name;
   }
   public function getAddress(){
       return $this->Address;
   }
   public function getTel(){
       return $this->Tel;
   }

};

↓新潟ライズ

//新潟なコード
class Human{
   niigata $Age,$Name,$Address,$Tel; //これ

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
};