PHP ile Nesne Tabanlı Programlama: Canlandırıcı my nesneleri Kills

6 Cevap php

Ben OOP PHP çevresinde alay edilmiş ve ben ... Nesneler sayfa yenilendiğinde her seferinde yeniden örneklenen bir şey fark ettim. Sorun nesne birisi bir web sitesinde olduğu bütün zaman için sınıf değişkenleri belirli bilgileri tutmak istiyor.

  1. Is there some sort of way to keep an object alive the whole time that someone is surfing on the website?
  2. What alternatives are there to my problem?

Çok örnek var gerçekten yararlı olacaktır!

6 Cevap

PHP durumsal değil. Her sayfası yükleme tek seferlik bir olay değildir. Sen oturumları ile, veya bir veritabanında bilgileri depolayarak veri devam edebilirsiniz.

Sen Sessions farklı sayfalar arasında bir kullanıcıya ilişkili verileri tutmak için kullanabileceğiniz (quoting):

Session support in PHP consists of a way to preserve certain data across subsequent accesses.

Oturumları hakkında daha fazla bilgiler için kılavuzun Session Handling bölümüne bakın.

Bir php komut apache sayfa hizmet önce çıkmak için vardır, yani gerçekten bunu istiyorsanız, yapabileceğiniz tek şey serialize ve devam ve ({[kullanmak istediğiniz tüm nesneleri saklamak olduğunu 1)]} kurabiyeler kullanıcıları takip etmek

  1. PHP her istek sunucu üzerinde yeni bir süreç statefull değildir

En iyi bahis oturum verileri kullanmak ve bunları örneğini zaman nesnelere oturum verilerini teslim etmektir. Müteahhitler bu oturum dışında ihtiyaç veri çekme var, ve aslında ihtiyacınız devlet dolgunluk olacak.

kullanarak SESION acess olabilir

$_SESSION['stuff'] = $data;

then you can use your objects like $x = new DataStore($_SESSION['stuff']);

oturumda gidecekseniz veri nesnesi kendisini bu veriden doldurmak eğer. Aksi takdirde standart init varsayılan olacaktır.

Nesneleri seri ve daha sonra bunları serisi kaldırılırken gibi yaklaşımlar yararlıdır bile, emin why sizin nesneleri "yok" ilk anlamak yapmak zorunda.

HTTP, Web sunucuları sayfaları ve diğer kaynakları almak için kullanılan protokol, stateless. Bu temelde aynı kullanıcının geldi bile tek bir isteği, başka bir isteği hiçbir şey bilmiyor demektir. , Şöyle düşünün size PHP sayfası isteği zaman, komut dosyası çalıştırılır ve bittikten sonra Apache size sonucunu gönderir. Tekrar sayfayı talep ettiklerinde bunu yaptım ilk kez, sanki aynı şeyi yapar. Bu vatansız bulunuyor.

Istekleri (bu sizin nesneleri unutmamaya yapmak) ve bu kurabiye veya URL yeniden yazma gibi şeyler dahil arasında devlet tutmak için teknikler vardır. Ama Web uygulamaları geliştirmek akılda devletsiz HTTP doğasını (ve böylece PHP script) tutmak zorunda.

OTURUM benim PHP programlama bazı nesne durumunu tutmak için bunları kullanmak, iyi.

Ya da daha iyi bir çözüm yani vatansız HTTP protokolü hakkında endişelenmenize gerek yok Flex kullanmak olacaktır ...