Ik ben bezig met het schrijven van een PHP framework/cms:

https://github.com/FabianM/FaabBB

Er is nog maar weinig, maar hebben jullie verbeter punten?
Die eerste is echter onmogelijk, omdat trim() al een php-functie is.
Nee hoor, kan prima.

Alles een object maken werkt wel in principe fijn, maar omdat PHP geen operator overloading heeft wordt het al snel een ramp. Tel daarbij op dat je new X en $x->method niet kan combineren, en PHP ook geen autoboxing of autocasting heeft:
<?php
echo '<input type="text" value="' . htmlspecialchars($value, ENT_QUOTES) . '">';
?>
versus:
<?php

class String
{
private $data;

public function __construct($c_str)
{
$this->data = $c_str;
}

public function concat(String $other)
{
return new String($this->data . $other->data);
}

public function encodeSpecialChars($mode = ENT_COMPAT)
{
return new String(htmlspecialchars($this->data, $mode));
}

public function c_str()
{
return $this->data;
}
}

// trucje om (new String('xxx'))->concat mogelijk te maken
function r($x)
{
return $x;
}

$value = new String('Tony "Sterretje" Star');

echo r(new String('<input type="text" value="'))
->concat($value->encodeSpecialChars())
->concat(new String('">'))
->c_str();
?>

PHP is geen Java, en ook geen C++, en ook geen Javascript en ook geen Ruby. Al die talen hebben hun eigen kracht, en de kracht van PHP is dat je een heleboel standaard functies gratis krijgt die allemaal compatible met elkaar zijn. Als je nu Java gaat nabouwen gooi je al dat voordeel weg (want die functies accepteren en returnen niet jouw String object)
Jelmer rrrr op 22/08/2011 17:30:45

Nee hoor, kan prima.

Alles een object maken werkt wel in principe fijn, maar omdat PHP geen operator overloading heeft wordt het al snel een ramp. Tel daarbij op dat je new X en $x->method niet kan combineren, en PHP ook geen autoboxing of autocasting heeft:
<?php
echo '<input type="text" value="' . htmlspecialchars($value, ENT_QUOTES) . '">';
?>
versus:
<?php

class String
{
private $data;

public function __construct($c_str)
{
$this->data = $c_str;
}

public function concat(String $other)
{
return new String($this->data . $other->data);
}

public function encodeSpecialChars($mode = ENT_COMPAT)
{
return new String(htmlspecialchars($this->data, $mode));
}

public function c_str()
{
return $this->data;
}
}

// trucje om (new String('xxx'))->concat mogelijk te maken
function r($x)
{
return $x;
}

$value = new String('Tony "Sterretje" Star');

echo r(new String('<input type="text" value="'))
->concat($value->encodeSpecialChars())
->concat(new String('">'))
->c_str();
?>

PHP is geen Java, en ook geen C++, en ook geen Javascript en ook geen Ruby. Al die talen hebben hun eigen kracht, en de kracht van PHP is dat je een heleboel standaard functies gratis krijgt die allemaal compatible met elkaar zijn. Als je nu Java gaat nabouwen gooi je al dat voordeel weg (want die functies accepteren en returnen niet jouw String object)


PHP vraagt dan naar de __toString method. En omdat ik deze klassen maak, zijn standaard functies niet meer nodig.

PHP vraagt dan naar de __toString method. En omdat ik deze klassen maak, zijn standaard functies niet meer nodig.


Dat is dubbel op toch? En, je bent dan nog wel even bezig als je alles opnieuw wilt maken..

@Jelmerr

Met wat extra classes is autoboxing wel mogelijk: klik
Zou ik namespaces gebruiken?
Fabian M, ik vindt jouw Framework erg interessant. Ik heb er erg veel leuke dingen in gevonden voor mijn eigen Framework voor inspiratie.

Op dit moment ben ik nog bezig met de Core en de Exception's. Ik wil zo snel mogelijk beginnen met het MVC en de Routes.

Super, ga zo door! ;-)
Bedankt, en ik ben ook wel nieuwschierig naar jouw framework. Link?
Sorry, ik heb hem niet online staan ;-)
PHP Scripter op 31/08/2011 22:14:29

Sorry, ik heb hem niet online staan ;-)


Ok.

Reageren