2

基本的に私がタイトルで述べたことは私がやろうとしていることであり、それが可能かどうかはわかりません。

私は持っています:

$myClass = new Class();
$var = $myClass->someFunction();

しかし、$ myClassを二度と使用することはなく、設定を解除してメモリを解放することができます。しかし、私は同時に私のコードをクリーンアップしようとしていて、以下が有効かどうか疑問に思いました

$var = (new Class())->someFunction();

そうでなければ、皆さんは何を提案しますか?

ありがとう!

4

7 に答える 7

8

いつでもメソッドsomeFunction()として宣言できます。static

$var = Class::someFunction();
于 2012-07-31T13:47:13.453 に答える
2
$var = (new Class())->someFunction();

これはphp 5.4の時点で完全に有効な構文だと思います。

ここで見られるように: http://www.php.net/manual/en/migration54.new-features.php

于 2012-07-31T13:50:25.553 に答える
2

それを行うためのネイティブな方法はありません

しかし

ファクトリメソッドでやりたいことを実現できます。

class a {
    public static create() {
        return new self();
    }
    //....
}

$something = a::create()->foo();
于 2012-07-31T13:48:22.890 に答える
1

はい、新しいオブジェクトでメソッドを呼び出すことができますが、PHP >= 5.4 でのみサポートされています。

class Test {
   public function hello() {
    return "hello";
   }
} 

$var = (new Test())->hello();

echo $var; // prints hello
于 2012-07-31T13:51:57.693 に答える
1

いいえ、PHP 5.4.0 より前のバージョンではできません。

PHP >= 5.4.0 では、配列を逆参照して、上記の構文を使用できます。

とはいえ、あなたの説明から、static関数が必要なように聞こえます。

于 2012-07-31T13:47:49.703 に答える
0

これは無効な構文です。しかし、オブジェクトを割り当てた変数を再利用してみませんか?

$var = new Class();
$var = $var->someFunction();
于 2012-07-31T13:47:06.880 に答える
0

$myClass は、戻り値または反復が必要なほぼすべてのインスタンスで使用できることも覚えておいてください。例:

foreach($myClass->fetchUsers() as $user){
}

if($myClass->userLoggedIn()){
}

するよりもはるかに気の利いた

$var = $myClass->fetchUsers();
foreach($var as $user){}
于 2012-07-31T13:49:04.170 に答える