php "komut bir yöntem yürütme veya tamamlanmamış bir nesnenin özelliğine erişmeye çalıştı"

1 Cevap php

Ben bu hatayı yukarı baktım ve bu ortak sorunu) 'nin veya () gerektirir' (include () session_start ÖNCESİ s koyarak değil kaynaklanır görünüyor.

Ancak, bu benim için böyle değil.

Ben şu hatayı alıyorum:

Ölümcül hata: Zend_Http_Client :: isteği () [zend-http-client.request]: komut bir yöntem yürütme veya tamamlanmamış bir nesnenin özelliğine erişmeye çalıştı. Emin olun ki sınıf tanımı "Zend_Http_Client_Adapter_Socket" nesnenin size before unserialize () olarak adlandırılan veya / home / content / / / * de sınıf tanımı yüklemek için bir __ autoload () fonksiyonu sağlamak gets yüklendi çalışmasına çalışıyoruz / * / html/ZendGdata-1.8.4PL1/library/Zend/Http/Client.php hattında 865

Herhangi bir fikir neden?

Burada üç ilgili dosyalar: login.php, members.php ve functions.php ...

login.php:

 $newIncludePath = array();
 $newIncludePath[] = '../ZendGdata-1.8.4PL1/library';
 $newIncludePath = implode($newIncludePath);
 set_include_path($newIncludePath);

 // load classes
 require_once 'Zend/Loader.php';
 Zend_Loader::loadClass('Zend_Gdata');
 Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
 Zend_Loader::loadClass('Zend_Gdata_Calendar');
 Zend_Loader::loadClass('Zend_Http_Client');
 Zend_Loader::loadClass('Zend_Gdata_AuthSub');

 session_start();


 $serviceName = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name ('cl') for calendar
 $applicationName = 'yourCompany-yourAppName-v1';

 // Create an authenticated HTTP client
 $httpClient = Zend_Gdata_ClientLogin::getHttpClient('*****@gmail.com', '*****', $serviceName, null, $applicationName);
 $client = new Zend_Gdata_Calendar($httpClient, $applicationName); // Create an instance of the Calendar service

 $_SESSION['gdataCal'] = $client;

members.php:

 $newIncludePath = array();
 $newIncludePath[] = '../ZendGdata-1.8.4PL1/library';
 $newIncludePath = implode($newIncludePath);
 set_include_path($newIncludePath);

 // load classes
 require_once 'Zend/Loader.php';
 Zend_Loader::loadClass('Zend_Gdata');
 Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
 Zend_Loader::loadClass('Zend_Gdata_Calendar');
 Zend_Loader::loadClass('Zend_Http_Client');
 Zend_Loader::loadClass('Zend_Gdata_AuthSub');

 session_start();

 $g_url = add_gcal($_SESSION['gdataCal'], $_SESSION['title'].....etc.);

functions.php:

 <?php

 $newIncludePath = array();
 $newIncludePath[] = '../ZendGdata-1.8.4PL1/library';
 $newIncludePath = implode($newIncludePath);
 set_include_path($newIncludePath);

 // load classes
 require_once 'Zend/Loader.php';
 Zend_Loader::loadClass('Zend_Gdata');
 Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
 Zend_Loader::loadClass('Zend_Gdata_Calendar');
 Zend_Loader::loadClass('Zend_Http_Client');

session_start();

function add_gcal($gdataCal, $title....etc.){

try {

    $newEvent = $gdataCal->newEventEntry();

    $newEvent->title = $gdataCal->newTitle($title);
    $newEvent->where = array($gdataCal->newWhere($where));
    $newEvent->content = $gdataCal->newContent("$desc");

    $when = $gdataCal->newWhen();
    $when->startTime = $date;
    $when->endTime = $date; 
    $newEvent->when = array($when);

    $createdEvent = $gdataCal->insertEvent($newEvent);
    return $createdEvent->id->text;

  } catch (Zend_Gdata_App_Exception $e) {
        return NULL;
  }

}

1 Cevap

Bu iletiyi alıyorum:

Please ensure that the class definition "Zend_Http_Client_Adapter_Socket" of the object you are trying to operate on was loaded before unserialize() gets called

Yani, ben seni Zend_Http_Client_Adapter_Socket bir örneği olan (bir tefrika halinde mağaza anlamına gelir) oturumunda bir şey var herhalde

Yani, önce session_start, sen, örneğin, kullanarak, böyle bir şey olduğunu sınıfı yüklemek gerekir:

Zend_Loader::loadClass('Zend_Http_Client_Adapter_Socket');

Bu Zend Framework her başkalarına güvenmek sınıfların çok olduğu gibi, başka birine aday olabileceğini, this sorunu çözmek ... Ama olmalı ...


A way to get rid of those errors for ever would be to use Zend Framework's autoloader : instead of locading classes yourself with Zend_Loader::loadClass, you could just register/activate the autoloader, and it will automatically load classes for you, whenever they are needed.

Danışmanın, bu çok için aramadan önce yapılması gerekir session_start :-)

ZF otomatik yükleyici hakkında daha fazla bilgi almak için, this page of the manual de bir göz atabilirsiniz.