Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysqli_connect_errno dlaczego styl proceduralny w przykładach objektowych
Forum PHP.pl > Forum > Bazy danych > MySQL
neotec
Analizując mysqli_connect() a szczególnie
uzycie mysqli_connect_errno()
i nie rozumiem dlaczego w przykładach
dla stylu OBJECTOWEGO używana
jest funkcja nieobjektowa: mysqli_connect_errno():
http://pl.php.net/manual/pl/mysqli.connect.php

Czyli dla:
Kod
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

Jest tak:

Kod
if (mysqli_connect_errno()) {
    exit("Connect failed: ".mysqli_connect_error());
}

A dlaczego nie tak?:

Kod
if ($mysqli->connect_errno) {
    exit("Connect failed: ".$mysqli->connect_error);
}

Albo tak:

Kod
if (!$mysqli) {
    exit("Connect failed: ".$mysqli->connect_error);
}

Czy to taki skrót myślowy czy ja nie kumam objektów?
Sedziwoj
A jak powiem że moim zdaniem to było Ctrl+C Ctrl+v, to się zdziwisz?
W ogóle tam masz brak konsekwencji w przykładach, są miejsca gdzie spr. czy połączenie się powiodło jest robione przez sprawdzenie czy był błąd, a nie czy zwrócił null (choć moim zdaniem nie powinno nigdy zwracać null, tylko rzucić wyjątkiem... ale to dopiero raczkuje w PHP)
pyro
i te "<BR>" wogole nie powinny tu byc...
Sedziwoj
Po prostu rób to porządnie, nie zawsze dobrym pomysłem jest naśladowanie innych.
neotec
Trochę sam sobie odpowiem, może ktoś potwierdzi albo i nie.

Ale chyba zrozumiałem że taka wersja z manulal jest jednak logiczna.

Bo, gdy: konstruktor w postaci $mysqli = new new mysqli() nie nawiąże
połączenia, to instancja objektu $mysqli w ogóle nie powstanie,
więc nie można odwołac się do jej właściwości.
Jedynie proceduralna "globalna" funkcja mysqli_connect_errno()
trzyba gdzies tam, swoją flagę że operacja zakończyła się nie powodzeniem.

Czy dobrze kombinuje?

______________________________________________________

Nie chcę tworzyć nowego wątku,
ale proszę znawców do mysql a szczególnie od mysqli
o pomoc w drugim temacie:
"Singleton nad mysqli a słuszność metody close()"
forumphp.nq.pl/index.php?showtopic=92125
Sedziwoj
I to jest powód dla którego powinien lecieć wyjątek a nie tylko null.
Ogólnie powinieneś sprawdzić czy "new mysqli()" zwraca instancje obiektu, czy null, jak null to dopiero pobierasz błąd...
(a obiektowość ma zlikwidować nadmiar if'ów jak widać w PHP mają swoją wizję...)
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.