"We are back" « oc.at

PHP 5.4 released

Nico 03.07.2011 - 08:39 5906 26
Posts

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
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 changelog

download here
Bearbeitet von Nico am 05.03.2012, 13:38 (final)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Nico
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! :eek:

Paxi

Overclocking Team Member
Avatar
Registered: Oct 2009
Location: Wien
Posts: 389
Typehinting soll jz demnächst auch für integer gehen.
Vl gibt es wirklich mal richtige Datentypen in PHP :D
Und Mehrfachvererbung kommt auch

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von Nico
Zitat von M4D M4X
einfach den circle auswählen ;)
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. :bash:

Paxi

Overclocking Team Member
Avatar
Registered: Oct 2009
Location: Wien
Posts: 389
Code: PHP
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
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:

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
Avatar
Registered: Oct 2009
Location: Wien
Posts: 389
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
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 :D

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von watchout
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von 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.
Wieso genau ist das in der Praxis uninteressant? :confused:

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von watchout
Wieso genau ist das in der Praxis uninteressant? :confused:
Praxis:
Code:
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:
Code:
protected function onValidateData($oDataValidator)
{
    $oDataValidator.validate();

    return true;
}

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Code: PHP
class mydatacontainer
{
  function onValidate($callback)
  {
    if(!$this->foo)
      return $callback->bar("foobar!");

    return true;
  }
}
Wie wärs damit?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat von watchout
Code: PHP
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz