2010-12-11 6 views
9

Po prostu zaczynam używać CodeIgniter i chciałbym zaimportować niektóre z moich starych klas do wykorzystania w nowym projekcie. Jednak nie chcę ich zbytnio modyfikować, aby pasowały do ​​sposobu działania, w którym działam, i chciałbym móc nadal korzystać z funkcji autouzupełniania NetBeans, która nie działa zbyt dobrze z CI.Ładowanie klas niestandardowych w CodeIgniter?

Jaki jest najlepszy sposób na załadowanie niestandardowych klas & plików klas do CodeIgniter bez konieczności korzystania z mechanizmów ładujących bibliotekę/model?

Przepraszam, jeśli jest to coś, co powinienem był szybko znaleźć, ale nie mogę znaleźć tego, czego szukam Wszystko, co widzę, po prostu mówi mi, jak przejść przez CI.

Odpowiedz

8

Powiedziałbym, że przynajmniej napisałeś klasę wrapper, która mogłaby require klas i utworzyć instancję obiektów i uczynić je dostępnymi. Wtedy prawdopodobnie mógłbyś automatycznie dodać taką bibliotekę i użyć jej w razie potrzeby.

Zalecam, abyś przynajmniej spróbował dopasować je do CI, ponieważ poruszanie się do przodu ułatwi ci życie. Byłem w tej samej pozycji i nauczyłem się tego po drodze.

+0

całkowicie zgadzam .... –

+0

Ponieważ jest to tylko 3 klasy do abstrahowania dostępu do DB i Memcache, zastosowałem podejście, które wyeliminowałem. To nie był problem techniczny, tylko kwestia projektowania. – Tarka

-4

Jeśli dopiero zaczynasz używać CodeIgniter, może powinieneś sprawdzić Kohana (http://kohanaframework.org/). Jest bardzo podobny do CodeIgniter na wiele sposobów, ale ładuje klasy w normalny sposób (przy użyciu nowej ClassName()), więc funkcje autouzupełniania Netbeans powinny działać normalnie.

+0

Tylko 2.x ma jakiekolwiek podobieństwa do CI, gałąź 3.x jest zupełnie inna. Dzieli się tylko faktem, że używają PHP i MVC ... –

12

Biblioteki są łatwe do napisania, ale mają kilka ograniczeń. Konstruktorzy mogą przyjmować tablicę jako parametr i zakłada się, że tylko jedna klasa będzie istnieć dla jednego pliku.

Możesz dołączyć dowolny własnych klas do pracy z nimi, jednak chcesz, jak to tylko PHP ofc :)

include APPPATH . 'classes/foo.php'; 
$foo = new Foo; 

lub skonfigurować funkcję __autoload() w pliku config.php (najlepiej miejsce na to) i możesz mieć dostęp do swoich zajęć bez konieczności ich uwzględniania.

16

Aby zrobić to w sposób kodigniter, umieść swoje niestandardowe klasy w folderze bibliotek aplikacji codeigniter. A następnie użyć go poprzez dodanie tej klasy jako biblioteki w kontrolerze tak:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Someclass { 

    public function some_function() 
    { 
    } 
} 

/* End of file Someclass.php */ 

użyciu kontrolera:

$this->load->library('someclass'); 

checkout cały artykuł na http://www.codeigniter.com/user_guide/general/creating_libraries.html

Powiązane problemy