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

PHP - Jak odwołać się do obiektu nadrzędnego?

Object Storage Arubacloud
0 głosów
620 wizyt
pytanie zadane 17 lutego 2018 w PHP przez Przemysław Obywatel (1,510 p.)

Cześć.

Mam pytanie.
Mam w swoim kodzie mniej więcej taką konstrukcję:
 

class A {
		public $x;
		public $b;
		
		public function __construct()
		{
			$x = 5;
			$b = new C();
		}
	}
	
	class B {
		public $x;
		
		public function __construct()
		{
			$x = 10;
		}
	}
	
	class C extends B {
		public $y;
		
		public function __construct()
		{
			echo get_class(parent::this);
		}
	}

Jak widać jednym z pól klasy A jest obiekt klasy C.
Jak w tym obiekcie klasy C odwołać się do obiektu klasy A, do którego należy?
parent:: odwołuje się w tym wypadku do klasy B (extends).

Załóżmy, że mam klasę samochód i jej elementem jest obiekt typu silnik. Jak w metodzie tego silnika odwołać się do obiektu samochód, w którym jest ten silnik?

1 odpowiedź

+2 głosów
odpowiedź 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 17 lutego 2018 przez Przemysław
 
Najlepsza
Nie da się.

Masz normalny dostęp do właściwości i metod klasy po której dziedziczysz (jeśli te mają odpowiedni modyfikator widoczności). A do obiektu z którego został stworzony dany obiekt (coś takiego chyba chcesz w tym przypadku uzyskać) dostać się nie da. Jeśli bardzo potrzebujesz, możesz go po prostu przekazać przez argument podczas tworzenia obiektu klasy C i zapisać we właściwości.
komentarz 17 lutego 2018 przez Przemysław Obywatel (1,510 p.)
Dajmy na to jeśli jakaś metoda obiektu klasy Silnik będzie potrzebowała dostać się do np. masy samochodu, to nie da rady? :(
Chyba, żeby przy każdym tworzeniu obiektu podrzędnego przekazywać do konstruktora wskaźnik do obiektu nadrzędnego, tak jak napisałeś... hmmm..
Dzięki ;)
komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
Jak mówiłem, można przekazać wtedy cały obiekt przez konstruktor. Tylko warto się zastanowić czy to dobre podejście, bo jak dla mnie średnio. Po co silnik ma wiedzieć wszystko o samochodzie? Powinien wiedzieć tylko tyle, ile jest mu konieczne. Ja bym więc przekazał przez argument tylko to, co jest potrzebne.
komentarz 17 lutego 2018 przez Artek Stary wyjadacz (11,800 p.)
Czy w związku z powyższym zgodzilibyście się, że prototypy w JavaScript są lepszym rozwiązaniem?
komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)
Ja się nie zgodzę, bo nie znam JS na tyle dobrze, aby cokolwiek porównywać ;) Nie wiem też co to ma do samego pytania, jest wyraźnie o PHP, a JS to zupełnie inny język.
komentarz 17 lutego 2018 przez Artek Stary wyjadacz (11,800 p.)

Ja się nie zgodzę, bo nie znam JS na tyle dobrze, aby cokolwiek porównywać 

Ha ha, no to jak nie znasz to zachęcam to zapoznania się z prototypami. 

 Nie wiem też co to ma do samego pytania, jest wyraźnie o PHP, a JS to zupełnie inny język.

Mój komentarz nie był odpowiedzią na pytanie postawione w temacie ale komentarzem do komentarza :p 

komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

Ha ha, no to jak nie znasz to zachęcam to zapoznania się z prototypami. 

Ale w PHP nie ma prototypów, nie wiem w jakim celu mam się z nimi zapoznawać, gdy piszę w PHP a nie JavaScript.

Mój komentarz nie był odpowiedzią na pytanie postawione w temacie ale komentarzem do komentarza :p 

Ok, jednak prawdę mówiąc dalej średnio rozumiem co miał wnieść do tego wątku :P Nawet jeśli te prototypy okazałyby się świetne, to wątpliwe jest, że ktoś uczący się PHP nagle przestanie i pójdzie się uczyć JS bo ma np. fajną jakąś rzecz a do 5 potrzebnych innych się nie sprawdzi. Każdy język ma coś fajnego jak i mniej fajnego.

komentarz 17 lutego 2018 przez Artek Stary wyjadacz (11,800 p.)

Ale w PHP nie ma prototypów, nie wiem w jakim celu mam się z nimi zapoznawać, gdy piszę w PHP a nie JavaScript.

A czy nie byłoby fajnie nauczyć się więcej niż jednego języka programowania? A co jeśli PHP wyjdzie z użycia za jakiś czas? Znając PHP bez JS to raczej słabe szanse na zbudowanie jakiejś konkretnej witryny. 

Ok, jednak prawdę mówiąc dalej średnio rozumiem co miał wnieść do tego wątku 

Sprowokowanie dyskusji o tym co jest lepsze klasy w PHP czy prototypy w JS 

komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

A czy nie byłoby fajnie nauczyć się więcej niż jednego języka programowania? 

Byłoby, chętnie bym to zrobił, ale to brakuje mi czasu, to chęci. Poza tym nie napisałem nigdzie, że nie znam JSa ani trochę - znam dość pobieżnie, gdybym chciał się zagłębiać to myślę że poznałbym co trzeba.

A co jeśli PHP wyjdzie z użycia za jakiś czas?

A co jeśli PHP i JS razem wyjdą z życia za jakiś czas? Dalej nie będę miał w czym programować :) To takie gdybanie bez żadnych argumentów. PHP jest używany na potężnej ilości stron, chociażby przez takiego Wordpressa, więc całkowite wyjście PHP z użycia prędko nie nastąpi. A jak będę widział, że następuje, to będę się martwił.

Znając PHP bez JS to raczej słabe szanse na zbudowanie jakiejś konkretnej witryny. 

"Konkretnej witryny" nie tworzy się przeważnie samemu, jest zespół w którym każda osoba specjalizuje się w czymś innym. Nie da się być specem od wszystkiego.

Sprowokowanie dyskusji o tym co jest lepsze klasy w PHP czy prototypy w JS 

Jak mówiłem nie znam za dobrze prototypów w JS, więc ja niestety nie za bardzo podyskutuję, może ktoś inny.

komentarz 17 lutego 2018 przez Comandeer Guru (601,930 p.)

Znając PHP bez JS to raczej słabe szanse na zbudowanie jakiejś konkretnej witryny. 

 A co jeśli w PHP stoi wyłącznie rozbudowane REST API w architekturze mikroserwisowej?

Sprowokowanie dyskusji o tym co jest lepsze klasy w PHP czy prototypy w JS 

To bardziej pytanie o to, co jest lepsze: "klasyczne" (klasowe) OOP na wzór Javy czy prototypowe na wzór Selfa. Odpowiedź brzmi: to zależy – jak zresztą zawsze.

komentarz 17 lutego 2018 przez Artek Stary wyjadacz (11,800 p.)

Byłoby, chętnie bym to zrobił, ale to brakuje mi czasu, to chęci.

No cóż, szkoda trochę. Ja uważam, że fajnie byłoby pochwalić się dobrą znajomością dwóch(albo i więcej) języków programowania. 

A co jeśli PHP i JS razem wyjdą z życia za jakiś czas? Dalej nie będę miał w czym programować 

Tak też może być. Jednak znając 2 języki szanse na przetrwanie w branży zawsze są większe niż gdy znamy 1. 

"Konkretnej witryny" nie tworzy się przeważnie samemu, jest zespół w którym każda osoba specjalizuje się w czymś innym. Nie da się być specem od wszystkiego.

A co z tzw. full-stack developerami? 

 

Commander

 

 A co jeśli w PHP stoi wyłącznie rozbudowane REST API w architekturze mikroserwisowej?

 Przyznam szczerze, że nie wiem o czym piszesz, jednakże nie napisałem, że to jest niemożliwe. Napisałem, "raczej są małe szanse" :p

To bardziej pytanie o to, co jest lepsze: "klasyczne" (klasowe) OOP na wzór Javy czy prototypowe na wzór Selfa. Odpowiedź brzmi: to zależy – jak zresztą zawsze.

Podejrzewałem, że padnie taka odpowiedź :p 

komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

No cóż, szkoda trochę. Ja uważam, że fajnie byłoby pochwalić się dobrą znajomością dwóch(albo i więcej) języków programowania. 

Jako taką znajomością kilku czemu nie. Ale jak ktoś by mi się zaczął chwalić, że on zna świetnie ten, ten i jeszcze ten język, no i jeszcze wspaniale pisze w tym i tamtym to nabrałbym podejrzeń, bo jak ktoś się tyka wszystkiego po kolei to też coś znaczy.

Tak też może być. Jednak znając 2 języki szanse na przetrwanie w branży zawsze są większe niż gdy znamy 1. 

Teoretycznie tak, ale jaka jest szansa na to, że PHP upadnie w jednej chwili tak, że nie zdążę tego zauważyć? Bardzo niewielka, gdyby faktycznie zaczęło źle się dziać to myślę, że nie będę miał problemu, aby zacząć uczyć się czegoś więcej. A może wezmę się za coś konkretniej sam z siebie tak dla odmiany, kto wie. Chociaż prawdę mówiąc i tak podejrzewam że nie zdążę dożyć czasów w których PHP wyjdzie z życia.

A co z tzw. full-stack developerami? 

Pewnie sobie istnieją, żyją i mają nawet nieźle. A co ma być? Ja akurat jestem PHP developerem i dobrze mi z tym, na full stacka na ten moment się nie wybieram :)

komentarz 17 lutego 2018 przez Artek Stary wyjadacz (11,800 p.)

Jako taką znajomością kilku czemu nie. Ale jak ktoś by mi się zaczął chwalić, że on zna świetnie ten, ten i jeszcze ten język, no i jeszcze wspaniale pisze w tym i tamtym to nabrałbym podejrzeń, bo jak ktoś się tyka wszystkiego po kolei to też coś znaczy.

Myślisz, że gdyby ktoś poświęcił odpowiednio dużo czasu na naukę załóżmy 3 języków programowania to by tego nie ogarnął? Że niby nie nadążyłby za zmianami? 

Teoretycznie tak, ale jaka jest szansa na to, że PHP upadnie w jednej chwili tak, że nie zdążę tego zauważyć?

To tak na dobrą sprawę ciekawy temat na odrębną dyskusję. Weź pod uwagę fakt, że nawet ogólnie rzecz biorąc nasza cywilizacja rozwija się coraz szybciej. Wszystko wskazuje na to, że tempo rozwoju wzrasta wraz z rozwojem. W związku z tym nie byłbym aż taki pewny tego o czym napisałeś. 

Pewnie sobie istnieją, żyją i mają nawet nieźle. A co ma być? Ja akurat jestem PHP developerem i dobrze mi z tym, na full stacka na ten moment się nie wybieram :)

 

No to z tego, że jedna osoba może ogarnąć zarówno front-end jak i back-end 

komentarz 17 lutego 2018 przez Arkadiusz Waluk Ekspert (287,950 p.)

Myślisz, że gdyby ktoś poświęcił odpowiednio dużo czasu na naukę załóżmy 3 języków programowania to by tego nie ogarnął? Że niby nie nadążyłby za zmianami? 

Tak, myślę że by nie nadążył. A jakby nawet nadążył za samymi zmianami, to jeszcze jakoś najpierw trzeba wejść na ten wysoki poziom i to nie dzieje się na pstryknięcie palcem. Kiedy się tego wszystkiego nauczyć to ja nie wiem. Nie mówię jednak, że to niemożliwe, bo pewnie się da i jakieś jednostki sobie poradzą, ale nie wydaje się to proste. Podkreślam ciągle, że mówię o poziomie naprawdę eksperckim, nie o znajomości języka tak sobie, żeby tylko było i kod jakoś działał.

To tak na dobrą sprawę ciekawy temat na odrębną dyskusję. Weź pod uwagę fakt, że nawet ogólnie rzecz biorąc nasza cywilizacja rozwija się coraz szybciej. Wszystko wskazuje na to, że tempo rozwoju wzrasta wraz z rozwojem. W związku z tym nie byłbym aż taki pewny tego o czym napisałeś. 

Zabrzmię teraz jak jakiś artykuł z portalu newsowego ale trudno: może obudzimy się za kilka lat i wcale nie będzie programistów tylko roboty nas zastąpią? ;) Kto to wie. Jakbym tak się zastanawiał to bym nie mógł robić nic, bo może to zostanie wyparte kiedyś tam.

No to z tego, że jedna osoba może ogarnąć zarówno front-end jak i back-end 

Ale po co? Znam PHP chyba całkiem w porządku, ekspertem się nie czuję i na ten moment chciałbym dalej się w nim rozwijać. Jest mi z tym bardzo dobrze, nie potrzebuję dokładać sobie frontu. JSa uczę się że tak to nazwę hobbystycznie, czasem sobie coś naskrobać.

Podobne pytania

0 głosów
2 odpowiedzi 233 wizyt
pytanie zadane 15 kwietnia 2020 w Python przez manjaro Nałogowiec (37,390 p.)
0 głosów
1 odpowiedź 486 wizyt
pytanie zadane 4 kwietnia 2020 w Python przez manjaro Nałogowiec (37,390 p.)
+1 głos
1 odpowiedź 130 wizyt
pytanie zadane 16 listopada 2016 w JavaScript przez hunter Początkujący (290 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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!

...