Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekazanie klasy do innej klasy, Przekazanie klasy do innej klasy
vadergb
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 10.06.2009

Ostrzeżenie: (0%)
-----


Dotychczas piszac skrypty np. chcac przekazac dostepne rzeczy z klasy obslugi bazy danych robilem to na zasadzie przekazania jej do nastepnej.

cos typu:
$klasa = news baza();
$klasa2 = news baza($klasa);

i potem np w klasa2:
  1. class klasa2 {
  2. private $mysqli;
  3. public function __construct(mysqli $mysqli) {
  4. $this->mysqli = $mysqli;
  5. }
  6. public function findAllNews() {
  7.  
  8. $result = $this->mysqli->query ( "SELECT * FROM my_news where title='DEU' limit 2" );
  9. $result_arr = array ();
  10. while ( $data = $result->fetch_object () ) {
  11. $result_arr [] = $data;
  12. }
  13. return $result_arr;
  14.  
  15. }
  16. }

Czy jest to najwydajniejszy sposob?

Czy jest mozliwosc zrobienia klasy publicznej nie uzywajac singletona?

Przy wiekszej ilosci klas do przekazania robi sie balagan:

np. trzeba przekazac klasy: obsluga bazy danych, obsluga $_POST (itp.), Klasa obslugujaca Sesje, Klasa ACL - i jeszcze kilka by sie znalazlo...
Te klasy powinny byc tak na dobra sprawe dostepne prawie wszedzie w kazdej innej klasi - Czy jest jakis inny sposob na przekazanie jej do innej klasy innym sposobem niz singleton?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Sam loader mozna zrobic tak jak pisza wyzej za pomoca singletona ale to tez na wszystkie obiekty klas nie moze byc singleton dlatego ja uzywam wlasny import klas:

  1.  
  2. <?php
  3.  
  4. class Imports {
  5.  
  6.  
  7.  $cfg = Loader::load('Cfg');
  8.  
  9.  
  10.   private $PathImports = array(
  11.   
  12.   $cfg -> PathControllers,
  13.   $cfg -> PathLibs,
  14.   $cfg -> PathModels,
  15.   $cfg -> PathModules.$cfg -> PathControllers,
  16.   $cfg -> PathModules.$cfg -> PathModels,
  17.   $cfg -> PathModules.$cfg -> PathViews,
  18.   $cfg -> PathPlugins.$cfg -> PathControllers,
  19.   $cfg -> PathPlugins.$cfg -> PathModels,
  20.   $cfg -> PathPlugins.$cfg -> PathViews,
  21.   $cfg -> PathConfig
  22.    
  23.   
  24.   );
  25.  
  26.  public function __get($class) {
  27.  
  28.   foreach($this -> PathImports as $imports) {
  29.   
  30.   if(file_exists($imports.$class.'.php')) {
  31.   
  32.   require_once($imports.$class.'.php');
  33.  
  34.   }
  35.    
  36.   else if(file_exists($imports.$class.'_Model'.'.php')) {
  37.    
  38.   require_once($imports.$class.'_Model'.'.php');
  39.    
  40.   }
  41.  
  42.   }
  43.  
  44.  if(class_exists($class) || class_exists($class.'_Model'))
  45.  
  46.   $obj = new $class();
  47.  
  48.   
  49.   return $obj;
  50.  
  51.  }
  52.  
  53. }
  54.  
  55. ?>
  56.  
  57.  
  58.  


Gdzie glowny plik rozruchowy czyli index.php go includuje a glowny kontroler dziedziczy po tej klasie i mam dostep do kazdej klasy robiac:

  1.  
  2. $this -> Klasa -> Metoda();
  3.  
  4.  
  5.  
  6. //ewentualnie jesli klasa nie ma dziedziczyc po Klasie imports, lub mozna przekazac obiekt do jakiejs funkcji lub cos 
  7.  
  8.  
  9.  
  10. $import = new Imports;
  11.  
  12. $import -> Klasa -> metoda();
  13.  


Mnie to bardzo pasuje.

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.06.2026 - 10:27