Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP 5 ist da!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] PHP 5 ist da!

    einen wunderschönen guten morgen. ich bin zwar neu in dem forum, wage es mir trotzdem diese frohe botschaft zu überbringen, da es ja meines achtens nach noch keiner tat: seit dem 29.6.2003 ist PHP 5.0.0 verfügbar. es ist zwar nur eine beta version, aber es kommen ja bald mehr.

    was hat sich denn verändert?

    1. zend engine 2.0
    php unterstützt die zend engine 2.0, was die meisten veränderungen erst möglich macht.


    2. neue variablentypen für klassen
    in klassen können jetzt die variablentypen private und protected verwendet werden können, wie es etwa in sprachen - etwa java oder c++ - typisch ist. variablen vom typen private können nur von funktionen der klasse selbst genutzt werden, für den rest des progammes sind sie unsichtbar. die vom typen protected können zwar vom gesammten programm gelesen, jedoch nur von klassen-internen funktionen verändert werden.
    beispiel:
    Code:
    <?php
    
    // beispielklasse
    class beispiel {
    
        // beispielvariablen
        private $bsp_1 = "Beispiel 1";
        protected $bstp_2  = "Beispiel 2";
    
        // funktion zum lesen von varialen
        function getVar($name) {
            if(!isset($this->$name)) return false;
            else return $this->$name;
        }
    
        // funktion zum setzen von variablen
        function setVar($name, $val) {
            if(!isset($this->$name)) return false;
            else return $this->$name = $val;
        }
    
    }
    
    $obj = new besipiel();
    echo $obj->bsp_1; // funktioniert nicht
    echo $obj->getVar("bsp_1"); // funktioniert
    echo $obj->bsp_2; // funktioniert
    $obj->bsp_2 = "Beispiel 3"; // funktioniert nicht
    echo $obj->setVar("bsp_2", "Beispiel 3"); // funktioniert
    
    ?>
    3. neue methodentypen
    private und protected können auch auf methoden (funktionen innerhalb einer klasse) angewendet werden. ich glaube ein beispiel ist nicht nötig.

    4. abstakte klassen
    wie in vielen anderen sprachen gibt es nun auch abstakte klassen.
    beispiel:
    Code:
    <?php
    
    // abstakte klasse
    abstract class AbstractClass {
        abstract public function test();
    }
    
    // vererbung
    class ImplementedClass extends AbstractClass {
        public function test() {
            echo "ImplementedClass::test() called.\n";
        }
    }
    
    $o = new ImplementedClass;
    $o->test();
    ?>
    5. interfaces
    es gibt für klassen nun interfaces, sie geben vor wie eine klasse auszusehen hat. ich denkemal das es bald bei php pear zum einsatz kommen wird. es ist auch möglich mehrere interfaces bei einer klasse anzuwenden. sie werden dann einfach durch ein komma getrennt.
    beispiel:
    Code:
    <?php
    interface Throwable {
        public function getMessage();
    }
    
    class Exception implements Throwable {
        public function getMessage() {
        // ...
    }
    ?>

    6. methodentyp final
    der methodentyp final verhindert das überschreiben einer funktion durch eine subklasse. auch hier braucht ihr sicher kein besipiel.

    klonen von objekten
    es ibt einen magische klasse wodurch das klonen von objekten möglich wird. der vorteil dieser variante des duplizieren ist, dass der vorgang von der klasse beeinflussbar ist.
    Beispiel:
    Code:
    <?php
    $copy_of_object = $object->__clone();
    ?>
    7. konstruktoren und destuktoren
    die aus php pear mehr oder weniger bekannten konstruktoren und destruktoren sind nun ein allgemeiner bestandteil von php. für alles die es nicht wissen: es ahndelt sich um die magischen methoden __constuct() und __destruct().

    8. konstanten
    auch innerhalb von klassen sind nun konstanten möglich.
    Beispiel:
    Code:
    <?php
    class Foo {
        const constant = "constant";
    }
    ?>
    9. static
    wie in anderen sprachen kann nun auch der typ static auf methoden und variablen angewannt werden.

    10. __autoload()
    ich glaube, ich geb euch einfach mal ein besipiel. ihr werdet es schon peilen:
    Code:
    <?php
    function __autoload($className) {
        include_once $className . ".php";
    }
    
    $object = new ClassName;
    ?>
    11. __get() und __set()
    die magischen methoden __get() und __set() können das setzen und lesen von variablen einer klasse beeinflussen.
    beispiel.
    Code:
    <?php
    class Foo {
        var $hallo = "hallo";
        function __get($name) {
            return "blah";
        }
        function __SET($name, $val) {
            return false;
        }
    }
    
    $obj = new Foo();
    eche $obj->hallo; // gibt "blah" aus
    $obj->hallo = "text" // nicht möglich
    ?>
    11. __call()
    __call() ist die magische methode zur kontrolle von methoden-aufrufen.
    besipiel:
    Code:
    <?php
    class Foo {
        function __call($methode, $parameter) {
            if(!function_exists($this->$methode)) {
                echo "Die Funktion Foo::$methode existiert nicht!";
                return false;
            } else return $this->$methode;
        }
    }
    3
    ja, ich habe total lang drauf gewartet
    100,00%
    3
    naja, ganz nützlich
    0,00%
    0
    sie werden meine zukünftigen scipts nicht verändern (abgesehen davon, das php 5 noch eine weile braucht um ein webstandard zu werden)
    0,00%
    0
    muss mal sehen ....
    0,00%
    0
    nein, sie sind definitiv unsinnig
    0,00%
    0
    sie werden mich behindern
    0,00%
    0

  • #2
    Moin!

    Die Änderungen sind imho ganz nützlich (so hab ich auch abgestimmt), aber ich werde mich jetzt neuem zuwenden, da ich PHP nach 3 Jahren ziemlich gut kenne: Ruby (Endlich eine Scriptsprache mit ordentlichem Design)

    iGEL

    Kommentar


    • #3
      eche $obj->hallo; // gibt "blah" aus

      gibt nur ein undefinited function aus

      echo $obj->hallo; // gibt "blah" aus
      wäre wohl sinnvoller

      ich finde es zwar ganz gut, aber mal ehrlich! mit php sind wir doch alle auch so ganz gut zurechtgekommen, oder??

      Kommentar


      • #4
        ich find die neuerungen durchweg nützlich, auch wenn manche sache ausschließlich in kombination mit anderen zend-produkten sinn machen (public private etc kann man, wenn man will als unterklassen-coder auch einfach im hauptscript ändern.) (hier käme der encoder glaub ich zum einsatz, weil man dann wirklich sich an das private und public halten müsste, weil man halt nix mehr ändern kann)
        besonders nützlich find ich den destructor.
        endlich mal ne möglichkeit ohne großen umstand nach script-ausführung die sql verbindung zu trennen, filehandler oder socket verbindungen zu schließen
        sehr nützlich, zumindest, wenn man vernünftigen code schreiben will (da php ja solche verbindungen bei script-ende automatisch trennt)

        btw wo wir grade beim thema php5 sind
        hat sich schon jemand die php5 beta mit mysql unterstützung kompiliert?
        das würd mich nämlich mal interessieren, weil ich vorher nicht wirklich zum testen kommen werde (hab keine lust auf SQLite umzulernen 0 )
        wenn das schon wer hat, könnte mir das dieser jemand eventuell dann per mail zu schicken?
        mail-addy wäre: webmaster@the-ds.net
        thx schonmal

        Kommentar


        • #5
          Hi,
          ich denke die Funktionen sind sehr nützlich, aber meine Scripts werde ich deswegen bestimmt nicht verändern... Für was braucht man im Web bitte Klassen!? Spezifisch welche mit protected und privat... In c++ sind sie sehr nützlich, doch in php, hm ...
          mfg

          Kommentar


          • #6
            Moin!

            Also ich finde ne objektorientierte Datenbankverbindung schon sehr praktisch... OK, für ein 100-Zeilen Script lohnt sich das nicht, aber wenn man mal was größeres macht, macht ein objektorientierter Ansatz schon mehr Spass. Und PHP 4 ist bei objektorientierem Code langsamer als bei strukturiertem (Ich nehme mal an, es liegt daran, dass alle Methoden mit nem Call-by-Value aufgerufen werden statt Call-by-Reference).

            iGEL

            Kommentar

            Lädt...
            X