Programowanie obiektowe
-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
Sry, mogłem użyć opcji szukaj, a tak to przejrzałem tylko forum PHP i nie widziałem pojęcie Polimorfizmu. Następnym razem zrobię tak.
Zawsze walcz do końca i nigdy się nie poddawaj!
-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
1. Mógłbyś ocenić moje pierwsze połączenie do bazy danych obiektowo?
2. A co sądzisz, żeby np. przed każdym zapytaniem, które tworzymy sprawdzać czy połączenie mysql_connect() jest prawdziwe tj. true ? Chodzi mi o zapytania np. do bazy danych.
Code: Zaznacz cały
class db_mysql
{
private $connect = NULL;
public function connect($host, $login, $password, $database)
{
$this->connect = mysql_connect($host, $login, $password);
if($this->connect)
{
mysql_select_db($database, $this->connect);
mysql_set_charset("utf8", $this->connect);
}
}
public function disconnect()
{
if(is_resource($this->connect))
mysql_close($this->connect);
}
}
$mysql = new db_mysql;
$mysql->connect("localhost", "root", "vertrigo", "test");
//a tutaj jest nasza całe ciało strony
$mysql->disconnect();
Zawsze walcz do końca i nigdy się nie poddawaj!
Re: Programowanie obiektowe
1. Lepiej by było jeśli połączenie tworzyłbyś w raz ze stworzeniem obiektu, skorzystaj z konstruktora.
2. Możesz tak zrobić, jeśli chcesz, aby tak funkcjonowała Twoja klasa. Możesz np. wyrzucać wtedy wyjątek, a korzystać ze swojej klasy tworząc obiekty i resztę strony w block try{} catch(){} i w razie gdy wystąpi tak błąd zwrócić odpowiednią wiadomość i zakończyć wykonywanie skryptu.
2. Możesz tak zrobić, jeśli chcesz, aby tak funkcjonowała Twoja klasa. Możesz np. wyrzucać wtedy wyjątek, a korzystać ze swojej klasy tworząc obiekty i resztę strony w block try{} catch(){} i w razie gdy wystąpi tak błąd zwrócić odpowiednią wiadomość i zakończyć wykonywanie skryptu.
-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
Jedna linia na zewnątrz mniej.
Czyli dalej się trzymamy tezy, że tylko raz otwieramy połączenie na stronie i na końcu dokumentu je zamykamy? Rozmawialiśmy chyba kiedyś o tym w którymś wątku. Czy jest to bezpieczne? Też nei widzę sensu, aby cały czas przed zapytaniem otwierać połączenie a potem po zapytaniu je zamykać.

Code: Zaznacz cały
class db_mysql
{
private $connect = NULL;
public function __construct($host, $login, $password, $database)
{
$this->connect = mysql_connect($host, $login, $password);
if($this->connect)
{
mysql_select_db($database, $this->connect);
mysql_set_charset("utf8", $this->connect);
}
}
public function disconnect()
{
if(is_resource($this->connect))
mysql_close($this->connect);
}
}
$mysql = new db_mysql("localhost", "root", "vertrigo", "test");
//całe ciało strony
$mysql->disconnect();
Zawsze walcz do końca i nigdy się nie poddawaj!
Re: Programowanie obiektowe
Tak. Gdybyś co chwilę zamykał i otwierał to robiłbyś niepotrzebnie połączenia i spowalniał skrypt.
-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
Polimorfizm teraz.
1. Czyli dziedziczenie, rzutowanie lub przypisywanie nowych obiektów cechom w klasie jest polimorfizmem?
2. Na wikipedii jest wiele rodzajów polimorfizmów? O jakim mówimy w PHP, inkluzyjny?
1. Czyli dziedziczenie, rzutowanie lub przypisywanie nowych obiektów cechom w klasie jest polimorfizmem?
2. Na wikipedii jest wiele rodzajów polimorfizmów? O jakim mówimy w PHP, inkluzyjny?
Zawsze walcz do końca i nigdy się nie poddawaj!
Re: Programowanie obiektowe
Jeśli nie masz odpowiadać przed kimś co to jest polimorfizm to pojęcie jest Ci zbędne. Najważniejsze by potrafić korzystać z tych dobroci.
Polimorfizm występuje wtedy gdy np. przeciążasz funkcje. Pod jedną nazwą funkcji możesz wywołać różne funkcje. Jest poly - morficzna. Jedna nazwa, a wiele możliwości.
Polimorfizm występuje wtedy gdy np. przeciążasz funkcje. Pod jedną nazwą funkcji możesz wywołać różne funkcje. Jest poly - morficzna. Jedna nazwa, a wiele możliwości.
-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
Ostatnio próbowałem stworzyć funkcję, która miała w sobie różne funkcje i chciałem się odwołać do nich za pomoca przekazania różnych argumentów. Nie wiem czy coś takiego istnieje wogóle i tak można, ale mi się nie udało. Udało by mi się tylko wtedy gdy argumenty głównej funkcji byłyby takie same jak argumenty tych funkcji zagnieżdżonych. Jak tu je wywołać? Chyba się nie uda i każdą funkcję trzeba będzie projektować osobno w klasie.
Zawsze walcz do końca i nigdy się nie poddawaj!
Re: Programowanie obiektowe
Wklej kod, bo nie do końca rozumiem o co Ci chodzi 

-
- Zaawansowany
- Posty: 223
- Dołączył(a): niedziela, 11 marca 2012, 03:08
- Lokalizacja: Poland
- Contact:
Re: Programowanie obiektowe
Np. coś takiego:
Chcaiłbym wywołać funkcję wybierzZapytanie a potem następnie wywołać następna funkcję i jej podac argumenty. Nie wiem jak tej drugiej funkcji podać te argumeny. Czy coś takiego można osiągnać, chyba raczej nie. Pewna kwestia która może rządzić to rekurencja, ale jej nie użyłem.
Chyba odpuszcze sobie takie cyrki z takimi pomysłami i cudowaniem.
Code: Zaznacz cały
function wybierzZapytanie($idPolecenia)
{
if($idPolecenia == 1)
{
function tworzZapytanieSelectAll($table)
{
$result = (mysql_query("SELECT * FROM ".$table));
while($row = mysql_fetch_array($result))
{
echo "Id: ".$row['id']."<br />";
echo "Login: ".$row['login']."<br />";
echo "Haslo: ".$row['haslo']."<br />";
echo "Rejestracja: ".$row['rejestracja']."<br /><br />";
}
}
}
else if($idPolecenia == 2)
{
function tworzZapytanieSelectOne($column, $table)
{
$result = (mysql_query("SELECT ".$column." FROM ".$table));
while($row = mysql_fetch_array($result))
{
echo $column."".$row[$column]."<br />";;
}
}
}
}

Zawsze walcz do końca i nigdy się nie poddawaj!