Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] autoload i tworzenie obiektu
Forum PHP.pl > Forum > Przedszkole
nosel9
Witam,
Jestem początkujący w OOP, proszę o wyrozumiałość.
chodzi o ładowanie klas. w PHP dostępna jest funkcja autoload(), która podpina plik z klasą w momencie tworzenia obiektu klasy której nie ma.
No ale nawet korzystając z autoload() muszę ręcznie tworzyć obiekty. Czy da się temu jakoś zaradzić?
Proszę o pomoc.
b4rt3kk
Same mają Ci się obiekty tworzyć? A po co? Kiedy? Przy dołączeniu klasy?
nosel9
chodzi mi o coś takiego.
  1. class Loader {
  2. public class;
  3. public function load($name) {
  4. require $name.'.php';
  5. $this->class[$name] = new $name();
  6. }
  7. }
  8.  
  9. no ale w index.php
  10. require loader.php;
  11. $loader = new Loader();
  12. $loader->load('mojaklasa');
  13.  
  14. $this->mojaklasa->metoda();

nie działa.
Sephirus
Chwileczke bo czegoś tu nie kumam - Ty chyba żądasz niemożliwego tongue.gif

Standardowo wygląda to tak:

  1. require 'klasa.php';
  2.  
  3. $klasa = new klasa();


Jak się użyję autoload:

  1.  
  2. // zakładamy że wcześniej mamy gdzieś uzycie autoload
  3.  
  4. $klasa = new klasa();


jedyna różnica polega na tym, że nie mamy w drugim przypadku require. W obu jednak musi wystapić powołanie instancji klasy do życia więc nie kumam jak niby miało by to się robić automatycznie?questionmark.gif?

EDIT: Co to ma wspólnego z autoload arrowheadsmiley.png questionmark.gif Napisz dokładnie krok po kroku co chciałeś przez ten kod uzyskać - bo wg mnie jest to dość zamotane - nie karz się domyślać.
nosel9
tak to działa we frameworkach np. codeigniter, cakephp.
podaje się jako parametr nazwę klasy do funkcji ładującej i później odwołuje się przez $this->nazwaklasy->metoda();
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.