2010-03-02 14 views
12

Modelim neden şifreleme kitaplığını yüklemiyor?CodeIgniter modelinde bir kitaplık yükleme

class User_model extends Model { 

    function User_model() { 
    parent::Model(); 
    $this->check_login(); 
    } 

    function check_login() { 
    $this->load->library('encrypt'); 
    $email = $this->encrypt->decode($email); 
    .... 
    } 
} 

Bu bana bir PHP hatası vererek: D çizgisinden olmayan nesne üzerinde() üye fonksiyonu kod çözme çağır - X $ this-> encrypt-> çözmek ($ email) olduğu; hat?

Düzenlendi sorun check_login ben yapıcı içinden check_login çağırıyordu yapıcı

cevap

5

çağrılabilir olmasıydı göstermek için ve bu sorunlara neden oldu.

Çözüm, bir kurucudaki bir kitaplığı yükledikten hemen sonra $this->_assign_libraries(); numaralı telefonu aramaktır. Bu codeignitor forumu konuya

Teşekkür: http://codeigniter.com/forums/viewthread/145537/

+3

Bu iş parçacığının çok eski olduğunu biliyorum, ancak bunun CI'nin geçerli sürümünün herhangi bir sorun olmadan Modellerde Kitaplık yüklemenize izin verdiğini bildiğinizi görürseniz. –

20

Sen MODEL içinde kitaplığını yüklemek gerekmez, MODELLER hep sadece Denetleyici'deki kitaplıkları yüklemek zorunda DENETLEYİCİLERİ aradı, edilir fonksiyonlar ondan çağrılan modellerde mevcut olacak!

Selamlar,
Pedro sorun çıkmaması gerekir böylece

+10

Evet, ancak gereksinim duydukları yerlerde kitaplık yüklemek bağımlılık sorunlarını en aza indiriyor. – Summer

+1

Yani, sadece – Pedro

+11

modelini arayan denetleyici işlevine yükleyin. Ne berbat bir fikir! Cidden, CodeIgniter ekibi tarafından başka bir kısa görüşlü yıldırım! Bir model, uygulama verilerini almakla ilgilenen bir API kütüphanesi kullanmak için mükemmel bir yerdir! Altında bir Model sınıfının bağlı olduğu denetleyicide bir kitaplık yüklemeye zorladım! Ne oluyor be? Kes şunu!Sadece $ this -> _ assign_libraries(); bitmiş! – Bretticus

3

Kütüphaneler otomatik Modeli örneğine atanmalıdır.

Süper global'e erişemiyorsanız, her zaman $ ci = & get_instance() yöntemini kullanarak hafızanıza hiçbir ek ücret ödemeden kullanabilirsiniz.

Fakat yine de ... kod örneğiniz çalışmalıdır>.

2

< birçoğu çalıştı, ama sonunda, ne olmuş bir modelde bu adres:

$this->load->library('mylib'); 
$mylib= new Mylib(); 
$mylib->somemethod(); 

Bu benim için çalışıyor.

0

CI da şifrelemek sınıf var beacause size yüklüyorsunuz kütüphane için nesnenin adını değiştirmek isteyebilirsiniz sadece

$this->load->library('encrypt',NULL,'myencryptobj'); 
$this->myencryptobj->yourfunction(); 

Umut yapmak

bu

0

yardımcı olur i Ayrıca facebook api ile ilgili bir sorunla karşı karşıya kaldı, daha sonra modelin facebook lib dosyasını required_once çalıştı. benim için çalıştı.

require_once "application/library/facebook.php"; daha sonra ihtiyacınız varsa nesneyi yapın.