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

PHP odc.2 obiektowo

VPS Starter Arubacloud
0 głosów
414 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,630 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ź 443 wizyt
pytanie zadane 27 listopada 2021 w C i C++ przez KubaM Nowicjusz (130 p.)
0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 28 grudnia 2022 w PHP przez Filip384 Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 474 wizyt
pytanie zadane 23 lutego 2016 w PHP przez FocuSsmok Początkujący (450 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...