Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z include/require
Amakesh
post 7.05.2018, 17:32:49
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 26.06.2014

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


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. }


Ten post edytował Amakesh 7.05.2018, 17:35:33
Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2018, 18:03:22
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://php.net/manual/en/language.variables.scope.php
Go to the top of the page
+Quote Post
viking
post 7.05.2018, 18:51:12
Post #3





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


  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.


--------------------
Go to the top of the page
+Quote Post
Lion
post 7.05.2018, 20:25:03
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

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


... albo o FrontController, a najlepiej o jednym i drugim.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2018, 20:33:12
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ta i co jeszcze? Może SOLID, albo Hexagonal Architecture? Auto ma problem z podstawami a wy mu takie rzeczy. Nie ładnie nie ładnie.
Go to the top of the page
+Quote Post
LowiczakPL
post 7.05.2018, 20:59:39
Post #6





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


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. }



--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
viking
post 8.05.2018, 05:42:06
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


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


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 8.05.2018, 06:37:25
Post #8





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


Global to najszybsze i najprostsze rozwiązanie.

Uważam że GLOBAL można używać kiedy tylko jest taka potrzeba..


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Pyton_000
post 8.05.2018, 12:37:37
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
LowiczakPL
post 8.05.2018, 19:36:26
Post #10





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


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.


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
kapslokk
post 8.05.2018, 19:39:32
Post #11





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


:] 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.

Ten post edytował kapslokk 8.05.2018, 19:39:49
Go to the top of the page
+Quote Post
StreetFighter
post 19.05.2018, 22:55:14
Post #12





Grupa: Zarejestrowani
Postów: 46
Pomógł: 2
Dołączył: 17.04.2017
Skąd: 127.0.0.1

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


a nie możesz po prostu dodać w głównym pliku który wywołuje funkcje,steruje skryptem include z plikiem db?

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 10:45