Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z include/require
Forum PHP.pl > Forum > PHP
Amakesh
Witam!
Czy istnieje jakiś sposób na dołączenie pliku .php obsługującego połączenie z bazą RAZ na początku pliku php, żeby nie był konieczny include w każdej funkcji oddzielnie?
Próbuję wstawić na początku skryptu
  1. include('/db.php'); albo
  2. require('/db.php'); albo
  3. require_once('/db.php');


ale żadna z możliwości nie działa - funkcje znajdujące się poniżej po prostu tego nie widzą..natomiast jeśli użyję pierwszej możliwości w obrębie funkcji, wtedy zadziała.

  1. function foo(){
  2.  
  3. include('/db.php');
  4.  
  5. }
viking
  1. require_once '/db.php'; // zwraca obiekt $db PDO
  2.  
  3. function foo(\PDO $db){
  4.  
  5. $db->prepare...
  6.  
  7. }

Jednym słowem poczytaj o dependency injection.
Lion
... albo o FrontController, a najlepiej o jednym i drugim.
Pyton_000
Ta i co jeszcze? Może SOLID, albo Hexagonal Architecture? Auto ma problem z podstawami a wy mu takie rzeczy. Nie ładnie nie ładnie.
LowiczakPL
działa każdy zaprezentowany przez Ciebie sposób, różnica polega tylko na szybkości ładowania, include jest najwolniejsze, require_once ładuje plik tylko raz nawet jak powielisz to samo gdzieś w innych plikach

  1. include('/db.php');
  2. require('/db.php');
  3. require_once('/db.php');


ale u Ciebie problem jest zmienna globalna

załóżmy że w pliku db.php masz taki kod

  1. $db = NewADOConnection('mysqli');
  2. $db->Connect("localhost", "admin_sklepik", "hasełko", "baza_sklepik");


to aby mieć dostęp do połączenia funkcje muszą wyglądać tak

  1. function dodatki_do_menu($id_typ, $id_activ, $ak) {
  2. global $db, $table_kolka;
  3.  
  4. $coutI = $db->Execute("SELECT COUNT(*) AS ile FROM $table_kolka WHERE `id_ktyp`='$id_typ' AND `dodatek` > 0 ");
  5. ...
  6. }

viking
LowiczakPL. Drugi raz wczoraj sugerowales najgorsze rozwiązanie ( wcześniej z pominięciem walidacji). Nie, nie używa się global.
LowiczakPL
Global to najszybsze i najprostsze rozwiązanie.

Uważam że GLOBAL można używać kiedy tylko jest taka potrzeba..
Pyton_000
skoro jest taka potrzeba to znaczy że masz skopaną architekturę. Może jeszcze zacznij polecać goto bo też można jak jest taka potrzeba. Litości.
Używanie globala jest jak jedzenie spagetti żyletką. albo jechanie rowerem po kładce obok tuzina krokodyli. Da się? Da... ale ryzyko jest niewspółmierne do efektu.
LowiczakPL
Jeśli mam 3 pliki po kilka funkcji to zamiennie używam global z parametrem funkcji i nie kniecznie rozumiem jak global może mi taki system popsuć/uszkodzic/narazić na katastrofę.

Co ma do tego skopana architektura przy 12 funkcjach.
kapslokk
:] czy to jedna funkcja, czy 12, czy aplikacja na kilkaset lub tysięcy klas, o podstawowych zasadach warto pamiętać, a upierać się przy tym, że globale są cacy to czysta głupota.
StreetFighter
a nie możesz po prostu dodać w głównym pliku który wywołuje funkcje,steruje skryptem include z plikiem db?

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.