Een Processor/Core/Kernel class doorloopt allerlei stappen. Mag de consructor deze stappen triggeren/uitvoeren? Even een heeeeel erg versimpeld voorbeeldje met 3 fictieve functies.
<?php
class Processor {
private $request;
public function __constructor($request) {
$this->request = $request.
$this->initializeRequest();
$this->executeRequest();
$this->sendResponse();
}
}
?>
Zou de constructor deze functies mogen triggeren? Is dat oké volgens het OOP principe?
Ozzie, PHP is niet de enige OOP taal. En er zijn nogal wat zaken die in PHP wél werken maar in een striktere taal absoluut niet. En onderstaand voorbeeld is er één van:
<?php
class Foo
{
private bar = 1; // <-- stom genoeg kan dit dus in PHP maar in andere talen weer niet.
}
?>
In andere talen heb je hiervoor dus persé een constructor nodig, en daar is dat ding dus voor bedoeld.
<?php
class Foo
{
private bar;
Een static function kan op zichzelf functioneren, net als een functie die je gewent bent in php. Verder zitten er regels aan vast en kan het dus niet geheel functioneren zoals je met andere functies in de class zou doen. Het is dus niet geheel onderdeel van de classe. Je kan dus niet direct gebruik maken van andere public classes. Dit geeft bijvoorbeeld een error omdat er een andere functie word aangeroepen uit dezelfde classe:
<?php
class FileClass {
public function foo() {
echo 'hoi';
}
public static function test(){
echo $this->foo();
echo 'doei';
}
De functionaliteit blijft hetzelfde, het organiseren van je code en bovendien de leesbaarheid is erg belangrijk. Daar hoort code doorlopen ook bij ;)(Ik heb overigens mijn post veranderd omdat ik te lui was om de topic te doorlezen :P)
Maar uiteindelijk gaat het dus om de situatie waarin je iets toepast.
Als je object oriented programmeert wil je dat je code ook meer aan elkaar gelijk is. Als je normale functies en classes door me kaar gebruikt is gewoon incorrect.
Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.
>> Wanneer je kleine acties onderneemt, die je een functie het werkt zou laten doen, gebruik je een static. Wanneer je een 'object' wil maken welk op verschillende manieren kan worden gebruikt dan gebruik je een classe.
Je gebruikt altijd een class hoor :) Ik denk dat je bedoelt dat wanneer je slechts 1 ding hoeft te doen, je een statische method zou kunnen gebruiken. Correct?