Ben SOAP uzantısı kullanarak PHP durumsal bir web hizmeti uygulamaya çalışıyorum. (Evet web hizmetleri vatansız olması gerekiyordu olduğunu biliyorum, ben gerçekten kalıcı umrumda yüzden servise her çağrı ile kimlik doğrulaması gerekmez bir oturum kimliği bazı biçimidir). PHP.net 'nin API belgelerine biraz bu konuda eksik ve üzerine yazılmış başka pek bir şey yok.
Onu (http://bytes.com/forum/thread160816.html) anlatılır bir sayfa buldum ve bir test olarak uygulanan kod. Ben web hizmeti tüketir ve her işlevini çağırır ve sonucu görüntüler küçük. NET uygulama inşa. Okuduğum kadarıyla, PHP SOAP uzantısı sürece işlevsellik () fonksiyonu SOAP_PERSISTENCE_SESSION geçirilir setClass () fonksiyonu ve setPersistence kullanarak bir sınıf kapsüllü olduğu gibi aramalar arasında sınıf değişkenleri devam edecek.
İşte benim kod:
<?php
class User
{
var $name = "Initial value";
function setName($name)
{
$this->name = $name;
// Tried this too.
// $this->name = "Set to string constant" ;
}
function getName()
{
// This always returns "Initial value"
return $this->name;
}
}
// Tried placing session_start() in several places
// before $server->handle()...
// One guy says this doesn't need to be called.
// I assume it depends on if session autostart is on.
session_start();
$server = new SoapServer(null, array('uri' => 'http://localhost/'));
$server->setClass('User');
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
?>
Ben çalıştırmak sorun $ isim aramalar arasında kalıcı olmasıdır - Hep başlatıldı değerini almak ve değeri değil, ben isimAta atamak (). Ben de belirtildiği gibi, ben bir veritabanı karşı kimlik doğrulaması sonra bir oturum kimliği devam çalışıyorum - Herkes Önerilere açığım bunu yapmak için daha iyi bir yolu varsa; Ancak, ben yine de genel davayı çözmek istiyoruz. Herkes herhangi bir fikir var mı?