[php] classes php5 vragen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
beste mensen,
ik ben onlangs overgestapt van php4 naar php5. php5 heeft een veel betere en uitgebreidere object engine en er zijn een hoop dingen bij gekomen. over het OOP van php5 heb ik een aantal vragen (mede omdat de uitleg op php.net soms erg karig is) en omdat ik sowieso nog niet veel weet van OOP.

1) wat is het verschil tussen '$this' en 'self' ?
2) gebruik je als je verwijst naar een functie in de class zelf altijd de '::' of kan de '->' ook?
3) is de constructor standaard public of heeft hij een andere visibility?
4) je kunt in php5 abstracte classes maken. maar wat is dat nou precies en wat heb je er aan?
5) wat kun je met het 'final' keyword ?

alvast bedankt _/-\o_

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
Ik ben geen php'er, maar ik kan je wel een antwoord geven op je 2 laatste vragen:

- je kan geen objecten instantieren van abstracte classes; dwz dat je dus 'specifieke' classes moet gaan implementeren die dan kunnen gebruikt worden.
In die abstracte classes kan je dus bepaalde functionaliteit die voor iedere inherited class dezelfde moet zijn gaan opnemen, en kan je abstracte members kwijt. Die abstracte members moeten dan ook weer geimplementeerd worden door de inherited classes.
Het voordeel van abstracte classes is dat je, ahw, een soort 'contract' kunt definieren. Je kan dan bv in een functie-definitie dit kwijt:
code:
1
public void DoSomething( MyAbstractClass bliep )

Deze method neemt dus een argument van het type 'MyAbstractClass'. (Stell dus dat dit een abstracte class is. Aan die method kan je dus ieder type geven als argument dat afgeleid is van MyAbstractClass.

- Het final keyword zorgt er voor dat je de class die als final gedeclareerd is, niet meer kunt inheriten.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Tombo_inc:
1) wat is het verschil tussen '$this' en 'self' ?
$this is een reference naar de instantie "waarin" je zit. self is een static verwijzing naar de class "waarin" je zit.
2) gebruik je als je verwijst naar een functie in de class zelf altijd de '::' of kan de '->' ook?
Heeft te maken met bovenstaande. :: is een static verwijzing; je kunt dus alleen maar naar die dingen verwijzen die in een statische vorm ook betekenis hebben. statisch betekent: Dit geldt voor de class en niet (alleen) specifiek voor een instantie van deze class (object). De :: gebruik je dus in principe alleen bij statische (via de class) benadering van de dingen: MyClass::someStaticStuff () en -> gebruik je bij instanties van de classen ( $this->someMethod () en $obj->someMethod() ).
3) is de constructor standaard public of heeft hij een andere visibility?
Dit kun je makkelijk uitproberen.
4) 5)
zie whoami

edit:
Staat trouwens allemaal in de manual:
http://nl2.php.net/manual/en/language.oop5.php

[ Voor 10% gewijzigd door drm op 16-02-2005 16:18 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
1, 2)
$this:
The Basics Zie eerste voorbeeld.
$this is a reference to the calling object

Scope Resolution Operator (::)
Self (dit is in combinatie met static):
Two special keywords self and parent are used to access members or methods from inside the class definition.

3)
Visibility, zie Example 19-9. Method Declaration -> // Contructors must be public.

4) Abstracte klassen zie Object Abstraction

5) Final Keyword

Final:
which prevents child classes from overriding a method by prefixing the definition with final. If the class itself is being defined final then it cannot be extended.

Wat jij moet doen is jezelf verdiepen in de wereld die OOP heet. Koop een (beginners) boek, lees tutorials, want deze dingen die jij vraagt zijn basis OOP dingetjes.

Acties:
  • 0 Henk 'm!

  • raps
  • Registratie: April 2003
  • Laatst online: 06-09 19:51
Wellicht een interessant/leerzaam artikel voor je:
http://www.sitepoint.com/article/coming-soon-webserver-near

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022
ok ik ben al een stuk wijzer :d
bedankt allemaal _/-\o_

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition

Pagina: 1