PHP 5, OO und was die Zukunft noch bringt

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

  • PHP 5, OO und was die Zukunft noch bringt

    Hallo und nen schönen 1. Advent!!!

    Ich hab da mal ein Paar Fragen auf dem Herzen:

    Mit PHP 5 wird ja sehr viel für die Verbesserung der Objektorientiertheit von PHP getan. Ich würde mal gerne von euch wissen, ob ihr zur Zeit oo mit PHP programmiert und wie ihr das in der Zukunft vor habt(PHP5)?

    Man sieht ja in grossen Projekten wie dem phpBB, dass dort hauptsächlich strukturiert programmiert wird. Wird das der Performance wegen getan?

    Meine zweite Frage ist eher kanpp: Ich hab schon in 1-2 Threads gelesen, dass man die Objekterzeugung auf diese Art erledigen sollte:
    PHP-Code:
    $obj = & new Object
    Allerdings wird in fast allen sourcen die ich bisher gesehen habe(oder auch in den Büchern die ich habe) es auf die herkömmliche Art ohne & erledigt.

    In der Doku konnte ich auch nichts dazu finden, aber wenn ich ohne das & schon das erste mal das Objekt kopiere, dann wär das ja dämlich!

    Vielen Dank für Eure Antworten!

  • #2
    Re: PHP 5, OO und was die Zukunft noch bringt

    Original geschrieben von flolle
    Ich würde mal gerne von euch wissen, ob ihr zur Zeit oo mit PHP programmiert und wie ihr das in der Zukunft vor habt(PHP5)?
    wenn es sinnvoll ist: ja
    Man sieht ja in grossen Projekten wie dem phpBB, dass dort hauptsächlich strukturiert programmiert wird. Wird das der Performance wegen getan?
    ich denke mal nicht, aber wahrscheinlichkann dir TBT da mehr zu sagen
    Ich hab schon in 1-2 Threads gelesen, dass man die Objekterzeugung auf diese Art erledigen sollte:
    PHP-Code:
    $obj = & new Object
    [...]
    In der Doku konnte ich auch nichts dazu finden, aber wenn ich ohne das & schon das erste mal das Objekt kopiere, dann wär das ja dämlich!
    wäre es nicht nur, ist es sogar, deshalb nimmt man ja den referenzoperator
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      das habe ich woanders gefunden
      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:
      PHP-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:
      PHP-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:
      PHP-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:
      PHP-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:
      PHP-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:
      PHP-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.
      PHP-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:
      PHP-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;
          }
      }
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar

      Lädt...
      X