2

新しい PHP プロジェクトを開始し、数年間 PHP 開発を行った後、実際に PHP クラスを使い始めるべきだと考えています。私は C++ の世界のクラスに慣れているので、この知識を PHP に移植するときによくわからないことがいくつかあります。

C++ では、接頭辞なしで任意のクラス変数に自動的にアクセスできます。PHP では、そのようなすべてのアクセス (変数と関数) に接頭辞を付ける必要があるようですthis->。私は何thisが(または少なくともそう思うか、現在のクラスインスタンスへのポインタ)知っていますが、それが必須か優先か、または代替手段があるかどうかはわかりません。私のクラスは、同じクラス (つまり、それ自体) 内の他の関数をかなり頻繁に使用するため、this->毎回入力する必要があると、すぐに時間がかかります。

クラス自体はシングルトンである可能性が高いため、実際にクラスを使用するか、関数の前に識別子を付けるだけかはわかりません。

4

3 に答える 3

6

メンバーにアクセスするには、メンバーが属するオブジェクトを参照する必要があります。

すべてのメソッド呼び出しまたはプロパティ アクセスには、現在のオブジェクト インスタンスを参照するマジック変数である$variable->-がプレフィックスとして付けられます。$thisその使用はオプションではありません。

これは (他の理由の中でも)、PHP のすべての関数がメソッドであるとは限らず、グローバル関数も存在するためです。関数をオブジェクトに関連付けずに参照すると、グローバル関数と見なされます。

補足として、PHP でのシングルトンの使用は避ける必要があります。同時に実行される各スクリプトは独自のメモリ空間に囲まれているため、シングルトンを使用してもパフォーマンスやメモリの向上は見られません。

于 2012-12-19T16:14:46.207 に答える
2

「ポインター」 ( ->) != C++ ポインター。

$this現在のクラスとインスタンスを意味します。すべての変数には、$this->variable;またはを使用してアクセスします$this->function();

self::$variable静的変数と関数には、またはを使用してアクセスできます。self::function()

クラス インスタンスの外では、クラス インスタンスを指定する必要があります:$foo->variable;または$foo->function();

私の知る限り、$this->またはを使用せずにクラス内の public/private/static/constant 変数にアクセスする方法はありません。self::

関数のオブジェクトの使用に関しては...あなた次第です。後でコードを拡張して機能を追加する予定はありますか? すべての機能は何らかの関連がありますか? それらがシングルトン関数である場合、クラスの代わりに関数を書くだけで害はありません。それは本当にあなたが達成しようとしていることに依存します.

于 2012-12-19T16:16:44.190 に答える
0

はい、$thisクラスメソッドまたは変数にアクセスするときに使用する必要があります。

PHPでは変数を宣言する必要がないことを覚えておく必要があるため、次の状況を想像してみてください。

<?
class A {
  public $a = 'Hello World!';
  function hello() {
    $a = 'hello';
    echo $a;
  }
}

$object = new A();
echo $object->hello();

$aローカルスコープに$this->aなり、クラス変数になります。

于 2012-12-19T16:18:23.493 に答える