2017-01-15 3 views
0


私のアプリケーションへのエントリポイントとして機能するページ(インデックス)があります。このページでは、関数sayHi()を呼び出し、値に基づいて何かを表示します(通常、関数はDBクエリを行い、表示情報)。私は使用する最良の方法を知りたい。
最初の方法:ユーザーがリクエスト(またはページリフレッシュ)を行うたびに新しいオブジェクトが常に作成されます。ページのパフォーマンス(またはメモリ)に問題がありますか?
2番目の方法:インデックスページを正確に(異なる値で)照会する2人のユーザーがいるとします。競合状態はどうなりますか?
インデックスページオブジェクトをインスタンス化する適切な方法

<?php 

    require_once('firstTest.php'); 

    $value = $_GET['params']; 

    // 1st method 
    $first = new FirstTest(); 
    $first->sayHi($value); 

    // 2nd method 
    $second = FirstTest::getInstance(); 
    $second->sayHi($value); 

firstTestクラス:PHP前夜に

class FirstTest extends Singleton 
{ 
    public function sayHi($value) 
    { 
    echo 'value is : ' .$value; 
    } 
} 

firstTest(第2方法)

class FirstTest 
{ 
    public function sayHi($value) 
    { 
    echo 'value is : ' . $value; 
    } 
} 

シングルトンクラス

abstract class Singleton 
{ 
    protected static $instance; 
    protected final function __construct(){} 
    protected final function __clone(){} 
    public final function __sleep(){ 
    throw new Exception('cannot serialize'); 
    } 
    public static function getInstance(){ 
    if (self::$instance === NULL) 
     self::$instance = new self(); 

    return self::$instance; 
    } 
} 

答えて

1

(少なくとも論理的に)異なるプロセスであり、変数はすべてその要求内で作成され、破棄されます。

同じリクエスト内でFirstTestを何度もインスタンス化する必要がある場合は、多くの新しいオブジェクトをインスタンス化するよりも、シングルトンを使用するほうがパフォーマンスが向上し、メモリー使用量が少なくなります。しかし、私が理解する限り、とにかくそれを一度インスタンス化するだけで、違いはありません。

+0

ありがとうございます、私は最初の方法 – Michel

関連する問題