PHP nesne tutma

4 Cevap php

Benim app ben sayfa 1 oluşturulan bir nesne örneği var diyelim. Sonra kullanıcı uygulama bazı diğer kısmı gider ve ben örnek kalmasını istiyorum. Nasıl örneği 'kaydetmek'? Oturumlar?

4 Cevap

Evet, session kullanın.

session_start() sayfanızın başında, sonra gibi bir şey ile nesnesini saklamak arayın $_SESSION['myobject']=$myobject;

Daha sonra sayfa çok session_start çağırır $_SESSION['myobject'] sonra erişebilirsiniz () olabilir

Bunu oturumu kullanan herhangi bir sayfa tanımlanan nesne sınıfı vardır ya auto-loading bunu yeteneğine sahip olduğundan emin olmak gerekir.

Sizin sınıf da sihirli yöntemler __sleep tanımlamak ve __wakeup, hangi Eğer (örneğin db kolları gibi kaynaklar gibi) seri hale istemediğiniz üye değişkenleri temizlemek için izin verebilirsiniz. __ Başlatmada sırasında bu geri yükleyebilirsiniz.

Oturumları ve veritabanı: Benim uygulamaları için kullandığı iki yolu vardır.

Oturumlar evet, ama aynı özelliklere değil same örneği ile yeni bir örneği olacaktır. Diğer seçenekler DB nesneyi depolamak ve oturumda bunun için tuşu tutmak, ya da bir benzersiz anahtarı (session ID söylemek) ile memcached kullanmak için O / R-Eşleyicisi'ni kullanarak - ama bu hala {[olmaz (0)]} örneği - aynı özelliklere sahip sadece bir örneği.

Ancak üzerinde PHP çalıştırmak zorunda olacak - PHP iki istekleri ben bu (impossible, her şey yapılabilir değil maalesef mümkün değildir arasında bir nesnenin exact same örneğini gerekiyorsa uygulama sunucusu bazı tip üst)

Server side state veya client side state: Siz temelde iki seçeneğiniz var.

Sunucu tarafı devlet genellikle oturumları aracılığıyla yapılır. Bu basit ve en güçlü çözüm, ancak o (zamanla durumu devam edemiyor eşzamanlılık, vb) bazı dezavantajları vardır.

İstemci tarafı devlet URL yoluyla korunabilir - Ortalama sorgu dizesi parametrelerinde. Örneğin, bir değişken $name iki sayfa arasında, bu gibi ilk sayfasında bir bağlantı oluşturmak olabilir "hatırlamak": http://www.example.org/second_page.php?name=Jimbo, ve ikinci sayfa sonra değişken alabilir ile $_GET. Bu doğru almak çok zor olduğunu ve sayfalar arasında aktarabilirsiniz ne kadar devlet ile ilgili bazı sınırlamalar vardır. Bu nedenle, insanlar istemci tarafında durum daha uygun olacağı zaman bile, sunucu tarafında devlet ile gitmek için bir eğilim var.