Php statik değişkenler istekleri arasında devam mı?

3 Cevap php

Static variable gotcha in php

I am from Java background and have switched to php for one project recently. I have found one unexpected behaviour in php.

Value set to some static variable is not staying persistent across the requests.

Bu beklenen bahaviour olup olmadığından emin değilim. Java, her zaman çok yaygın olarak kullanılan değişkenleri devam ediyorsa ya da yerel özellik dosyaları her zaman onları okumak zorunda kalmamak dbname, hostname, kullanıcı adı, şifre gibi istekleri karşısında sabitlerini söyleyebilirim çünkü.

Bu davranış normal mi? Ve o zaman normal ise ben istekleri karşısında değişkenlere atanan değerleri devam edebilecek herhangi bir alternatif var mı?

Birisi bana php bunu yapmanın daha iyi bir yolu önerebilirsiniz?

3 Cevap

Hayır, statik bir değişken istekler arasında o değerini kalıcı bir oturum eklemek gerekir için geçerli istek kalacak olurken.

Örnek:

session_start();

class Car {
    public static $make;
    public function __construct($make) {
        self::$make = $make;
    }
}

$c = new Car('Bugatti');
echo '<p>' . Car::$make . '</p>';
unset($c);

if (!isset($_SESSION['make'])) {
    echo '<p>' . Car::$make . '</p>';
    $c = new Car('Ferrari');
    echo '<p>' . Car::$make . '</p>';
}

$_SESSION['make'] = Car::$make;

echo '<p>' . $_SESSION['make'] . '</p>';

Statik değişkenler tek isteği sadece uygulanabilir. Veri belirli bir kullanıcı istekleri arasında devam etmek istiyorsanız, sadece oturum değişkenleri kullanın.

A good starter tut for them is located here: http://www.tizag.com/phpT/phpsessions.php

Eğer oturum arasında karmaşık veri setleri ile çalışmaya başlar Eğer veritabanına tefrika almak ve oturumu üzerine çizilmiş geri nesneleri veri depolama içine bakmak isteyebilirsiniz.

PHP Değişkenler kalıcı olması demek değildir. Uygulama (yığın) akış her sayfa kaçak bitirmek için başlangıç ​​yürütülür. Senin mantık veya uygulama devam ediyor arka planda yaşayan hiçbir şey yoktur. Yakın şey bir oturum ama orada db erişim vs gibi bilgileri saklamak istemiyorum.

Sizin veritabanı yapılandırmaları bir bağlantısı sadece gerektiği zaman sorgulamak ve kullanmak için ne bağlantısı tanımlamak için bağlantı kolu kullanabilirsiniz yapıldıktan sonra, veritabanına bağlanmak için bir kez erişilir config ya da ortam dosyası çeşit olmalıdır.