1

他の言語に関するいくつかの質問と回答を読みましたが、特に PHP に関するものは見当たりませんでした。

以下はPHPで有効ですか?

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $newFoo = new foo();
        // do something
    }
}
4

5 に答える 5

1

はい、コンストラクターで同じ型のオブジェクトを作成しない限り、それは有効です。

于 2012-11-19T22:42:30.500 に答える
1

はい、有効です。オブジェクトのネストされたセットを作成できます。(コンストラクターで実行すると、無限再帰が発生します!)

追加!オブジェクトをそれ自体にリンクすることもできます!

$this->myself = $this;

そして、それは同じオブジェクトにリンクします。

于 2012-11-19T22:42:59.487 に答える
1

それを妨げるものは何もありません。

于 2012-11-19T22:44:31.500 に答える
1

簡単な答え: はい、機能します。

オブジェクトは、PHP コードのほぼすべての場所でインスタンス化できます。クラスメソッド内でも違いはありませんが、クラスが異なる場合は、クラスファイルを最初に含める必要があります。

<?php

    require_once './foo.class.php';

    class bar{
        //class stuff
        public doThingsWithFoo(){
            $foo = new foo();
        }
    }
?>

あなたの特定のケースでは、$thisキーワードを検索しているようです。マニュアルから:

疑似変数 $this は、メソッドがオブジェクト コンテキスト内から呼び出されたときに使用できます。$this は呼び出し元オブジェクトへの参照です (通常はメソッドが属するオブジェクトですが、メソッドがセカンダリ オブジェクトのコンテキストから静的に呼び出される場合は別のオブジェクトになる可能性があります)。

あなたの例では:

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $this->useAMethodFromThisClass();
        // do something
    }
}

しかし、あなたがしているのと同じように、同じクラスのメソッドで同じオブジェクトの別のインスタンスを使用することには、(おそらく常識を除いて) 何もありません:

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $newFoo = new foo();
        // do something with this instance of foo that you cannot do using $this
    }
}

お役に立てば幸いです。乾杯

于 2012-11-19T22:47:16.807 に答える
0

PHPで何かが有効かどうかを知る最良の方法は、ヘッダーファイルでこの関数を使用することです。

<?php
error_reporting(E_ALL|E_NOTICE);
?>

PHPでさえ、「isset()」を使用しないなどの失敗を報告します。


その他の慣行:

  • $_GET$_POST代わりに常にを使用してくださいglobal

  • これを使用しないでください:$_GET["test"]これは最高です$_GET['test']

  • 関数が非推奨になっているかどうかを確認するには、常にPHPのドキュメントを読んでください(ドキュメント:http ://www.php.net/manual )

Note:あなたの「コンストラクター」は「有効」です。

于 2012-11-19T23:01:25.940 に答える