• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP odc.2 obiektowo

Object Storage Arubacloud
0 głosów
436 wizyt
pytanie zadane 28 grudnia 2018 w PHP przez PWD Nowicjusz (160 p.)
require_once "connect.php";

	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if ($polaczenie->connect_errno!=0)
	{
		echo "Error: ".$polaczenie->connect_errno;
	}
	else
	{
		$login = $_POST['login'];
		$haslo = $_POST['haslo'];
		
		$login = htmlentities($login, ENT_QUOTES, "UTF-8");
		$haslo = htmlentities($haslo, ENT_QUOTES, "UTF-8");
	
		if ($rezultat = @$polaczenie->query(
		sprintf("SELECT * FROM uzytkownicy WHERE user='%s' AND pass='%s'",
		mysqli_real_escape_string($polaczenie,$login),
		mysqli_real_escape_string($polaczenie,$haslo))))
		{
			$ilu_userow = $rezultat->num_rows;
			if($ilu_userow>0)
			{
				$_SESSION['zalogowany'] = true;
				
				$wiersz = $rezultat->fetch_assoc();

Witajcie mam pytanie do w/w kodu z 2 odc. PHP a mianowicie o obiekty i ich metody.

 

$polaczenie przechowuje obiekt klasy mysqli (która jednocześnie jest metodą czyli funkcją w tej klasie?) dlatego że jest tam "new"?

A potem $polacznie korzysta z metody "connect_errno" klasy mysqli ktorą dokleja się do obiektu spójnikiem "->"?

Następnie jak się domyślam na zmienną $rezultat przechodzą właściwości klasy mysqli i ona też może użyć metody tej klasy czyli tutaj fetch_assoc()?

Nowe zmienne nie mogą używać tych metod? Tylko pochodne od $polaczenie?

Dziwi mnie że w kursach wszystko jest omawiane bardzo szczegółowo a w tym przypadku muszę szukać odpowiedzi i zrobił mi się niemały mętlik :P Na początku odcinka Pan Mirosław mówił że znajomość C++ obiektowego nie jest wymagana, a ja nie oglądałem wszystkich odcinków i teraz mam problem :/ Z góry dzięki za pomoc :)

3 odpowiedzi

+1 głos
odpowiedź 28 grudnia 2018 przez Muhin Gaduła (4,120 p.)

Tak, $poloczenie przechowuje obiekt klasy mysqli. W tym obiekcie masz konstruktor który dostaje argumenty konieczne do zadziałania tej klasy ($host, $db_user, $db_password, $db_name).

Jeśli chodzi connect_errno to jest to metoda klasy mysqli.

Najprościej mówiąc tym "spójnikiem"  wyciągasz metody które są w jakiejś klasie.

class Test () {
   public function __construct ($int) {
        $this->int = $int
   }

   public function getInt () {
         return $this->int
    }

}

$test = new Test(1234)

echo($test->getInt())

//1234

Nowe zmienne mogą użyć tych metod jeśli tylko przypiszesz do nich zmienną $poloczenie. W innym wypadku nie.

Domyślam się, że Pan Mirosław nie omawiał tego szczególnie dlatego, że w tych kursach PHP nie uczy programowania obiektowego, a takie szczegółowe omawianie oop mogłoby wprowadzić lekki zamęt.

1
komentarz 28 grudnia 2018 przez Ehlert Ekspert (212,670 p.)

Jeśli chodzi connect_errno to jest to metoda klasy mysqli.

To jest properties.

+1 głos
odpowiedź 28 grudnia 2018 przez Tpk Nałogowiec (40,100 p.)
edycja 28 grudnia 2018 przez Tpk
No to po kolei:

1. mysqli nie jest metodą w swojej własnej klasie, dane które tam podajesz idą do konstruktora tej klasy, tutaj jak to wygląda: http://php.net/manual/pl/class.mysqli.php

2. Przy pomocy instancji mysql (znanej jako $połączenie) dostajesz się (za pomocą tej strzałki "->") do właściwości $connect_errno która zwraca kod błędu ostatniego połączenia.

3. Do $rezultat przypisujesz rezultat, zapytania do bazy, potem to już obrabiasz za pomocą fetch_assoc() która to jest metodą klasy mysqli_result (zakładam, że ta musi być w którymś momencie wywoływana w klasie głównej - choć szczerze nie wiem w jaki sposób to jest realizowane).

http://php.net/manual/en/mysqli-result.fetch-assoc.php

4. Tylko pochodne od $polaczenie bo to nie są wbudowane funkcje / metody PHP, tylko wszystkie wywodzą się z tej głównej klasy mysqli...

http://php.net/manual/en/indexes.functions.php
0 głosów
odpowiedź 28 grudnia 2018 przez PWD Nowicjusz (160 p.)

Dzięki za odpowiedzi, mój umysł się trochę rozjaśnił smiley

Podobne pytania

+1 głos
1 odpowiedź 487 wizyt
pytanie zadane 27 listopada 2021 w C i C++ przez KubaM Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 138 wizyt
pytanie zadane 28 grudnia 2022 w PHP przez Filip384 Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 480 wizyt
pytanie zadane 23 lutego 2016 w PHP przez FocuSsmok Początkujący (450 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...