2010-12-27 18 views
2

私はACLに従っていました。これはこのコードを使用しています。は、クラスプロパティの宣言を理解する助けが必要です

class ACL 
{ 
    var $perms = array(); 
    var $userID = 0; 
    var $userRoles = array(); 

    function __constructor($userID = '') 
    { 

    } 
} 

しかし、私は上記の宣言のいくつかを理解することができません。

a)上記のクラスでclassキーワードから始まるclassプロパティが宣言されています。データカプセル化では、プロパティの宣言の前にpublic、private、またはprotectedキーワードを使用する必要はありません。 PHP4のための上記のメソッドですか?またはそれもphp5のために動作するのだろうか?

b)my IDE(パニックコーダ)。コンストラクタの正しい構文として__constructをとります。上記のコードは__constructorを使用しています。どちらが正しいか ? PHP4で私の知る限り、コンストラクタ名はクラス名と同じでなければなりません。それが__constructと__constructorの場合はPHP5で同じですか?

+0

あなたは 'var'を使い続けることができます。これは 'public'に相当するので、書き直すのは無意味です。 – mario

答えて

7

A)varキーワードは実際にはおそらくPHP 4の互換性のためのものですありがとうございました。 varはPHP 5のpublicと同等です。 PHP 5でも動作しますが、PHP 4の時間が経過したので、publicprivate、およびprotectedに移動することは安全です。

b)__construct、またはPHP 4互換宣言のクラス名が唯一正しい方法です。 __constructor()はコンストラクタメソッドを宣言しません。

+2

チュートリアルのコードは、PHP/4とPHP/5オブジェクト指向の構文を混在させています。その種のリソースを学ぶ資格を失う: –

+0

あなたはpekkaありがとう、あなたはいつも私の救助になります。 :) –

2

PHP4では、すべてのメンバーとメソッドは静的で公開されています。 varは間違いなくPHP4の構文です。 PHP5では、public,privateprotectedを使用してください。

__construct()はコンストラクタの正しいメソッド名です。クラスと同じ名前を持つPHP 5.3のメソッドは、もはやコンストラクタとして扱われないので、これは単なる通常のメソッドです。

最新のチュートリアルは間違いありません。

1

このクラスのクラスには、PHP4とPHP5が混在しています。

  • 変数宣言はPHP4構文を使用しており、PHP5でも100%OKです。
    • PHP5では、メンバー変数をprivate,publicまたはprotectedと宣言できます。
    • PHP5の機能もprivate,publicまたはprotectedです。
    • しかし、これらのアクセサタイプはPHP4と互換性がありません。
  • クラスコンストラクタはPHP5構文を使用していますが、PHP4と互換性がありません。

あなたは学習者であるため、PHPの命名規則に従い、クラス名を使用してクラスを含むスクリプトファイルに名前を付けてください。同じスクリプトファイル内で複数のクラスを使用しないでください。セキュリティを確保するため、すべてのPHPファイルの拡張子は.phpでなければなりません。

さらに、クラス内に静的メソッドを持たせることもできます(静的メソッドと動的メソッドを同じクラス内で混在させないでください)、Http::DoPost(...)などのオブジェクトを作成せずに呼び出すことができます。しかし、$thisは、静的メソッド内では使用できません。

+0

命名規則について詳しく教えてください。どの部分を意味しますか? –

+0

変数名とクラス名の規則(たとえば、クラス名のAcl)。 $ userIdの代わりに$ userIdを使用することもできます。また、学習者であればどの言語でも簡単にコンベンションのコーディングに慣れることができます。 –

関連する問題