Nico
former person of interest
|
Here is an incomplete list of changes: - Added: Traits language construct
- Added: Array dereferencing support
- Added: DTrace support
- Improved: Improved Zend Engine memory usage and performance
- Moved: ext/sqlite moved to pecl (sqlite3 support is still built-in)
Removed features- break/continue $var syntax. (Dmitry)
- Safe mode and all related ini options. (Kalle)
- register_globals and register_long_arrays ini options. (Kalle)
- import_request_variables(). (Kalle)
- allow_call_time_pass_reference. (Pierrick)
- define_syslog_variables ini option and its associated function. (Kalle)
- highlight.bg ini option. (Kalle)
- Session bug compatibility mode (session.bug_compat42 and session.bug_compat_warn ini options). (Kalle)
- session_is_registered(), session_register() and session_unregister() functions. (Kalle)
- y2k_compliance ini option. (Kalle)
andere verbesserungen findet man im changelogdownload here
Bearbeitet von Nico am 05.03.2012, 13:38 (final)
|
watchout
Legendundead
|
Removed features
- Safe mode and all related ini options. (Kalle)
- register_globals and register_long_arrays ini options. (Kalle)
- import_request_variables(). (Kalle)
- allow_call_time_pass_reference. (Pierrick)
finally!
|
Paxi
Overclocking Team Member
|
Typehinting soll jz demnächst auch für integer gehen. Vl gibt es wirklich mal richtige Datentypen in PHP ![:D](/images/smilies/biggrin.gif) Und Mehrfachvererbung kommt auch
|
mat
AdministratorLegends never die
|
einfach den circle auswählen ![;)](/images/smilies/wink.gif)
Dafür würde ich dem "Pierrick" gerne mit der Faust auf die Nase schlagen. Call Time Pass References können wunderschönen Code ergeben, den ich gerne nutze. Zum Beispiel wenn man einen Parameter mit Default-Wert oder Referenz in eine Funktion schleusen will. Das geht ohne diesem Switch dann nicht mehr.
|
Paxi
Overclocking Team Member
|
public function doSomething(&$val = 5) {
}
ist immer noch möglich Man darf ja nur nicht an die Function per Reference mit &val passen. Oder meintest du was anderes?
|
mat
AdministratorLegends never die
|
Stimmt, das geht mittlerweile. In den ersten PHP5-Versionen ging das noch nicht. Aber ich bin sowieso grade draufgekommen, dass ich mein Framework sogar schon umgestellt habe ... habs einfach vergessen. Hach, es gibt nichts Schöneres, als unbewusst erledigte Arbeit. ![:cool:](/images/smilies/cool.gif) Aber ein Problem gibt es doch, weshalb Call Time References eine gute Sache sind. Das hatte ich im Hinterkopf: Wenn man über die Magic-Funktion __call() in einer Klassen arbeitet, dann ist der Funktionsaufruf ja nicht vorab festgelegt. Dort funktionieren die Referenzen dann nicht mehr. Ich verwende das für ein Event-System und das ist durchaus praktisch, weil genial flexibel.
|
Paxi
Overclocking Team Member
|
Gut die Funktion hab ich bisher noch nie verwendet daher trifft es mich jz nicht so :P Aber sieht interessant aus... muss ich mir mal ansehen
|
watchout
Legendundead
|
Wenn du Objekte übergibst sind das sowieso Referenzen seit PHP5. Also ich denk das is weniger problematisch für dein Event-System, mat
|
Obermotz
Fünfzylindernazi
|
Als langjähriger PHP-Programmierer, der vor einem Jahr angefangen hat sich in asp.net auf C# einzuarbeiten muss ich sagen ich will bestenfalls nie wieder PHP-Code schreiben oder warten
|
watchout
Legendundead
|
Ja, PHP hat die ungemütliche Eigenschaft sich von einer Template-Engine zu einer vollständigen Skriptsprache/Engine entwickelt zu haben. Und man merkts einfach.
|
mat
AdministratorLegends never die
|
Wenn du Objekte übergibst sind das sowieso Referenzen seit PHP5. Also ich denk das is weniger problematisch für dein Event-System, mat Wenn man nur Objekte als Parameter für Events übergeben will, ist das korrekt. Aber das ist in der Praxis natürlich uninteressant. Ich hab das ganze jetzt so gelöst, dass ich die Referenzen innerhalb eines Arrays an die Funktion übergebe. Natürlich nicht direkt an den "fiktiven" Funktionsaufruf, der via _call() abgefangen wird, sondern direkt an die dahinterstehende Funktion, die sich dann um das Event-Bubbling kümmert.
|
watchout
Legendundead
|
Wenn man nur Objekte als Parameter für Events übergeben will, ist das korrekt. Aber das ist in der Praxis natürlich uninteressant.
Ich hab das ganze jetzt so gelöst, dass ich die Referenzen innerhalb eines Arrays an die Funktion übergebe. Natürlich nicht direkt an den "fiktiven" Funktionsaufruf, der via _call() abgefangen wird, sondern direkt an die dahinterstehende Funktion, die sich dann um das Event-Bubbling kümmert. Wieso genau ist das in der Praxis uninteressant?
|
mat
AdministratorLegends never die
|
Wieso genau ist das in der Praxis uninteressant? ![:confused:](/images/smilies/confused.gif) Praxis: protected function onValidateData($aData,&$bDataValid)
{
$bDataValid = is_array($aData);
return true;
}
Nicht die Praxis, weil einfach zu mühsam und zu hohe Granularität und deshalb sinnlos: protected function onValidateData($oDataValidator)
{
$oDataValidator.validate();
return true;
}
|
watchout
Legendundead
|
class mydatacontainer
{
function onValidate($callback)
{
if(!$this->foo)
return $callback->bar("foobar!");
return true;
}
}
Wie wärs damit?
|
mat
AdministratorLegends never die
|
class mydatacontainer
{
function onValidate($callback)
{
if(!$this->foo)
return $callback->bar("foobar!");
return true;
}
}
Wie wärs damit?
Event-Bubbling mit Member-Variablen halte ich für schwer lesbar bzw. musst sehr gut dokumentiert werden. Die Callback-Funktion erfüllt jetzt auch nicht das, was ich mir vorstelle. Denn ich will ja möglichst viel allgemeinen Code schon im Event-System bzw. in den Basisklassen belassen. Die Idee hinter meinem Event-System ist, dass du jederzeit ohne zu detailliertem Wissen deinen Code in den Applikationsablauf einbauen kannst.
|