klasy a odwolania do funkcji
m0d - 13-08-2006 00:20
klasy a odwolania do funkcji
Próbuje zrozumiec ale kiepsko idzie :)
Pomijajac logike - wiekszosc funkcji wyciete zeby bylo czytelne mam tak:
////////////////////////////////////////////// class MakeSzkielet { var $Source;
function Render() { } } ///////////////////////////////////////////// class FunkcjeGlobalne { var $HOST;
function Get($what) { } } ///////////////////////////////////////////// $Global = new FunkcjeGlobalne(); $Page = new MakeSzkielet(); ///////////////////////////////////////////// class Sql extends FunkcjeGlobalne{ var $params = array();
function row_count($table,$clause=null) { } } ///////////////////////////////////////////// class SqlConnect extends FunkcjeGlobalne { var $Username;
function DBconnect() { }
} ///////////////////////////////////////////// $SqlConnect = new SqlConnect(); $Sql = new Sql();
a o co chodzi....
$Sql->row_count('qq') // Dziala
Ale co mam zrobic zeby ta funkcja byla dostepna w nowej klasie
class os_print extends FunkcjeGlobalne{ var $r;
function os_print_execute() { $this->r = 'alibaba'; $this->r .= $Sql->row_count('qq'); /////// TUTAJ NIE DZIALA
return $this->r; } }
Dopiero probuje sie zaznajomic z programowaniem obiektowym wiec prosze o wyrozumialosc jesli jakiegos oczywistego byka zrobilem i proszeo wskazowki
Z gory dzieki za pomoc
PS -> PHP 4
Pozdro G
artiun - 13-08-2006 00:20
m0d napisał(a): > Próbuje zrozumiec ale kiepsko idzie :) > > Pomijajac logike - wiekszosc funkcji wyciete zeby bylo czytelne > mam tak: > rozrysuj sobie logikę na kartce, sama wyjdzie. -- Artur
m0d - 13-08-2006 00:20
> rozrysuj sobie logikę na kartce, sama wyjdzie. > -- > Artur
Logike dzialania mam w glowie ale dopiero zaczynam z klasami i na moj gust powinno dzialac tak jak jest a nie dziala :)... wiec rozrys nic nie zmieni bo to gdzies w schemacie w mojej glowie jest blad :>
Pozdro G
Johnny - 13-08-2006 00:20
Dnia Sat, 12 Aug 2006 19:16:27 +0200, m0d napisał(a):
> $Sql = new Sql();
> $Sql->row_count('qq') // Dziala > > class os_print extends FunkcjeGlobalne{ > var $r; > > function os_print_execute() > { > $this->r = 'alibaba'; > $this->r .= $Sql->row_count('qq'); /////// TUTAJ NIE DZIALA > > return $this->r; > } > }
W definicji klasy os_print uzywasz zmiennej obiektu, ktora tworzysz cholera wie gdzie. Pomijajac, ze wewnatrz metody nazwa $Sql jest lokalna i zupelnie nie znana.
Daj tak:
function os_print_execute() { $this->r = 'alibaba'; $Sql = new Sql(); $this->r .= $Sql->row_count('qq'); /////// TUTAJ NIE DZIALA
return $this->r; }
pozdrawiam Johnny
artiun - 13-08-2006 00:20
m0d napisał(a): >> rozrysuj sobie logikę na kartce, sama wyjdzie. >> -- >> Artur > > Logike dzialania mam w glowie ale dopiero zaczynam z klasami i na moj gust > powinno dzialac tak jak jest a nie dziala :)... wiec rozrys nic nie zmieni > bo to gdzies w schemacie w mojej glowie jest blad :> Jesteś strasznie chaotyczny, więc i logika taka :) Rozrysuj. Idź do baby.. bzyknij i zerknij na to co narysowałeś ponownie. :)
-- Artur
m0d - 13-08-2006 00:20
> Daj tak: > > function os_print_execute() > { > $this->r = 'alibaba'; > $Sql = new Sql(); > $this->r .= $Sql->row_count('qq'); /////// TUTAJ NIE DZIALA > > return $this->r; > }
niestety efekt ten sam :(
ogolnie jezeli ktos moglby mi przedstawic schemat poprawny
2 klas -> Klasa1 i Klasa2
jak powinno to wygladac ze w jednej klasie odwolac sie do funkcji z innej klasy
class Klasa1{
function test(){} }
class Klasa1{
function test2(){ $wynik = $Klasa1->test; } }
Dzieki G
artiun - 13-08-2006 00:20
m0d napisał(a): > jak powinno to wygladac ze w jednej klasie odwolac sie do funkcji z innej > klasy > > class Klasa1{ > > function test(){} > } > > class Klasa1{ > > function test2(){ > $wynik = $Klasa1->test; > } > } > muszę Cię zmartwić, ma to g. wspólnego z obiektowością. Zrób extend lub global.
-- Artur
m0d - 13-08-2006 00:20
> muszę Cię zmartwić, ma to g. wspólnego z obiektowością. > Zrób extend lub global. > > -- > Artur
no w tym co napisalem mam extends'y i lipa... a obiektowosc swoja droga - to co robie to taki maly framework ktory ma mi ulatwic prace
wszystko inne mi dziala... a klasa w ktorej chce sie odwolac do funkcji innych klas to swego rodzaju modul jeden z wielu
np
$Sql-> to jak sie latwo domyslec klasa odpowiedzialna za obsluge bazy danych
i w module chce sie do niej odwolac czyli np zlozyc zapytanie do bazy przez funkce z tej klasy
jezeli masz jakis link do tutka opisujacego klasy to z checia przyjme - tak jak mowilem dopiero sie z tym zaznajamiam - nie mowilem ze to ideal
Pozdro G
artiun - 13-08-2006 00:20
m0d napisał(a): >> muszę Cię zmartwić, ma to g. wspólnego z obiektowością. >> Zrób extend lub global. >> >> -- >> Artur > > no w tym co napisalem mam extends'y i lipa... > a obiektowosc swoja droga - to co robie to taki maly framework ktory ma mi > ulatwic prace > > wszystko inne mi dziala... a klasa w ktorej chce sie odwolac do funkcji > innych klas to swego rodzaju modul jeden z wielu > > np > > $Sql-> to jak sie latwo domyslec klasa odpowiedzialna za obsluge bazy danych > > i w module chce sie do niej odwolac czyli np zlozyc zapytanie do bazy przez > funkce z tej klasy > czyli... $Sql->connect ma odpowiadać za połączenia z bazą, właściwie bazami, wtedy (bazami jeśli nie jedną) ma to sens. Implementacja metod, podklas zachowujących się w analogiczny sposób niezależnie od bazy. Ma to sens. Ale ja tego tutaj nie widzę (raczej sztuka dla sztuki). Zasada jest jedna - prostota. Wiąże się to z ograniczeniami do najmniejszych możliwości, bądź sztucznym dorównaniem do wyższych (rozwinięciem w php tego czego brak danej bazie). Widziałem na necie takiego 'tutka' - jest prosty w załapaniu. Rozwiązuje pierwszy wariant dla kilku baz. Sprawdzę, znajdę, podam (jutro).
-- Artur
artiun - 13-08-2006 00:20
artiun napisał(a): > m0d napisał(a): >> a obiektowosc swoja droga - to co robie to taki maly framework ktory >> ma mi ulatwic prace A swoją drogą pokaż jak wygląda __construct() dla $Sql, co tam jest? lub metodę inicjującą.
-- Artur
m0d - 13-08-2006 00:20
> czyli... $Sql->connect ma odpowiadać za połączenia z bazą, właściwie > bazami, wtedy (bazami jeśli nie jedną) ma to sens. Implementacja metod, > podklas zachowujących się w analogiczny sposób niezależnie od bazy. Ma to > sens. Ale ja tego tutaj nie widzę (raczej sztuka dla sztuki).
ja pokazalem tylko klasy, zas sens jest troche inny - wyjasnienie ponizej
Zasada jest jedna - > prostota. Wiąże się to z ograniczeniami do najmniejszych możliwości, bądź > sztucznym dorównaniem do wyższych (rozwinięciem w php tego czego brak > danej bazie). > Widziałem na necie takiego 'tutka' - jest prosty w załapaniu. Rozwiązuje > pierwszy wariant dla kilku baz. Sprawdzę, znajdę, podam (jutro).
chce zrobic w miare uniwersalne narzedzie na uzytek wlasny i nie do konca chodzi o obsluge kilku baz chociaz bedzie tez taka mozliwosc
glownym zalozeniem jest aby wygenerowany z php'a html byl printowany dopiero gdy mamy pelny kod - a nie po kawalku - co defakto juz mi dziala - moduly sa 'przeliczane', wyciagane tresci z kazdego modulu i dopiero wtedy jest print calej strony
a klasa Sql akurat jest odpowiedzialna za zapytania a nie za polaczenie np $Sql->row_count('Nazwa_Tabeli') czyli Select sum(*) from Nazwa_Tabeli Do polaczenia jest clasa SqlConnect ;)
Jezeli chcesz zobaczyc co i jak mailnim mnie jutro g r z e s i e k A T k s f m . p l moze bedziesz chcial wspoltworzyc moj zamysl ;) lub bedziesz mial jakies uwagi ale tak jak pisalem dopiero na tym zaczalem zabawe z klasami... dzialac dziala ale czy jest optymalne tego nie wiem... jeszcze troche roboty zanim bedzie skonczone
przede wszystkim odpalanie funkcji z danych klas w modulach :>
Pozdro G
Jacek Dębowczyk - 13-08-2006 00:20
m0d <gpawelcz@o2.pl> napisał(a): > [...] > wszystko inne mi dziala... a klasa w ktorej chce sie odwolac do funkcji > innych klas to swego rodzaju modul jeden z wielu > > np > > $Sql-> to jak sie latwo domyslec klasa odpowiedzialna za obsluge bazy danych > > i w module chce sie do niej odwolac czyli np zlozyc zapytanie do bazy przez > funkce z tej klasy
Przede wszystkim musisz zacząć odróżniać klasy od obiektów, które są czymś więcej niż tylko zbieraniną statycznych funkcji.
-- Pozdrawiam, Jacek.
I will not buy this record - it is scratched.
m0d - 13-08-2006 00:20
>Przede wszystkim musisz zacząć odróżniać klasy od obiektów, które są czymś >więcej niż tylko zbieraniną statycznych funkcji.
fakt, juz wiem co mialem zle... heh zamysl ;)
W moim przypadku to nie ma byc defakto silnik obiektowy tylko akurat zbieranina funkcji tzn konstruktory itp nie sa mi potrzebne. Silnik ma wykonac konkretne zadania i korzystac z zestawu funkcji, zadanie jest proste wiec 90% to zestaw funkcji
porobilem troche testow i stwierdzam iz za bardzo chcialem przekombinowac Poprostu musze zrobic tak ze silnik to jest jedna klasa a moduly sa dziecmi glownego silnika i wtedy nie bedzie problemu
class test{
function foo() { return 'foo'; } }
class test2 extends test{
function ala() { print $this->foo(); } }
$m = new test2; $m->ala();
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Photoshop CS2 - funkcje, =?ISO-8859-2?Q?kt=F3rych_si=EA_nie_?==?ISO-8859-2?Q?spodziewasz=2E=2E=2E?=
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
=?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
postgres - ile razy wykona =?ISO-8859-2?Q?si=EA_funkcja_w_?==?ISO-8859-2?Q?zapytaniu?=
[MySQL] Load data infile i =?ISO-8859-2?Q?u=BFycie_funkcji_r?==?ISO-8859-2?Q?eplace?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
Problem z funkcja mysql_real_escape_string() na bazie mysql
=?iso-8859-2?q?Sybase_jak_wyci=B1gn=B1=E6_dane_generowane_prz ez_funkcje?=
=?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?=
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|