Ankündigung

Einklappen
Keine Ankündigung bisher.

with do wie in Pascal !?

Einklappen

Neue Werbung 2019

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

  • dor557
    hat ein Thema erstellt with do wie in Pascal !?.

    with do wie in Pascal !?

    Hallöschen zusammen,

    ich suche grade eine möglichkeit wie ich z.b. Folgenden Code einfacher gestalten kann :

    PHP-Code:
         $template->assign_var('car_edit_buttons'$car_edit_buttons);
          
    $template->assign_var('car_title_img'$Daten['MImg_src']);
          
    $template->assign_var('galerie_title'$this->getName($car_id)); 
    unter Pascal ginge das wenn ich mich rechte erinnere so :

    Code:
    with $template do 
    begin
          assign_var('car_edit_buttons', $car_edit_buttons);
          assign_var('car_title_img', $Daten['MImg_src']);
          assign_var('galerie_title', $this->getName($car_id)); 
    end;
    die korrektheit des Pascal codes lassen wir mal weg.

    aber den sinn was ich meine dürfte klar sein.

    Ich möchte nicht immer wieder $template->assign_var eingeben müssen sondern einfach nur assign_var.

    Einfach um weniger schreibarbeit zu haben.

    Gibt es da ne möglichkeit ?

    lg Sascha

  • tr0y
    antwortet
    Nö. beide Methoden geben egal von wo sie aufgerufen werden immer den aktuellen Klassenscope als neue instanz zurück.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    das wars glaub ich
    jedenfalls kommt mir das ähnlich vor. der unterschied zwischen cool() und coolInStatic() ist dasss man cool auch static aufrufen kann, coolInStatic () aber static aufrufen muss ?

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    es gibt noch static als called class scope:

    PHP-Code:
    class somewhat {
        public function 
    cool()
        {
           return new static;
        }

        public static function 
    coolInStatic()
        {
           return new static;
        }

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    oder es eine Methode assign_vars gibt, welche ein Array erwartet.
    Das war damit gemeint.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von nikosch Beitrag anzeigen
    Wo hast Du das gelesen?
    hab alles durchgesucht hier, finde es nicht mehr.
    war wohl in meinem täumen; wenn nicht das gleiche ist, wie return self macht es auch in meinen träumen kein sinn....

    nächste mal melde ich mich früher.

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Zitat von nikosch Beitrag anzeigen
    A) Prüfen ob assign_var nicht ein assoziatives Array unterstützt
    oder es eine Methode assign_vars gibt, welche ein Array erwartet.

    Um kein Spielverderber zu sein, auch von mir noch eine Variante:
    PHP-Code:
    $assign_var = function($p1,$p2) use ($template) {
      
    $template->assign_var($p1$p2);
    };

    $assign_var('car_edit_buttons'$car_edit_buttons); 
    LG jspit

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    gut, auch vor nicht alzulanger zeit hab ich in beispielcode immer "return static" gelsen. wollte das mal recherchieren, hatte aber keine zeit.
    Wo hast Du das gelesen? return static::foo() höchstens…

    static ist halt leider etwas überfrachtet in seiner Bedeutung.

    - definiert statische Properties
    - Scope resolution operator
    - „lokale globale“

    Zur Ergänzung: das wurde unter Geltungsbereich von Variablen gepackt.
    Lustigerweise funktioniert das auch in Objektmethoden.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    //OT:

    haha, reingelegt

    Einen Kommentar schreiben:


  • lottikarotti
    antwortet
    Hallöchen,

    Zitat von moma Beitrag anzeigen
    ..alzulanger..
    Da hab ich doch tatsächlich Angular gelesen. Ich muss in's Bett

    Viele Grüße,
    lotti

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    //OT:
    hab ich doch leztens erst über mein docu lesen handicap nachgedacht
    gut, auch vor nicht alzulanger zeit hab ich in beispielcode immer "return static" gelsen. wollte das mal recherchieren, hatte aber keine zeit.
    was heisst das dann?

    Einen Kommentar schreiben:


  • lottikarotti
    antwortet
    Hallöchen,

    Zitat von moma Beitrag anzeigen
    mir jedenfalls hat das eine möglichkeit gezeigt, static zu nutzen, welche ich so nicht aus der docu lesen konnte.
    Zur Ergänzung: das wurde unter Geltungsbereich von Variablen gepackt.

    Viele Grüße,
    lotti

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von tr0y Beitrag anzeigen
    (..)
    Alternativ kannst du dir eine Query-Function bauen:
    (..)
    Mal abgesehen wie Sinnfrei oder Sinnvoll das ganze ist, es ist eine Möglichkeit.
    mir jedenfalls hat das eine möglichkeit gezeigt, static zu nutzen, welche ich so nicht aus der docu lesen konnte.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Nochmal bissl aufgebohrt:
    PHP-Code:
    class ObjectWrapper {

      public function 
    __construct ($obj) {
        
    $this->obj $obj;
      }

      public function 
    bindReturn (& $var) {
        
    $this->returnVar = & $var;
        return 
    $this;
      }

      public function 
    getReturn () {
        return 
    $this->returnVar;
      }

      public function 
    __call ($method $args) {
        
    $this->returnVar call_user_func_array (array ($this->obj $method) , $args);
        return 
    $this;
      }
    }

    function 
    with ($object) {
      return new 
    ObjectWrapper ($object);

    PHP-Code:
    class Test {
      public function 
    assign_var ($var $val) {
        
    $this->$var $val;
        return 
    strtoupper ($val);
      }
    }

    $template = new Test;

    with ($template)
      ->
    bindReturn ($ret)
      ->
    assign_var ('foo' 'bar')
      ->
    assign_var ('bar' 'baz' $ret)
      ->
    assign_var ('baz' 'hello world!')
    ;

    var_dump ($template); 
    Code:
    object(Test)#1 (3) {
      ["foo"]=>
      string(3) "bar"
      ["bar"]=>
      string(6) "bazBAR"
      ["baz"]=>
      string(12) "hello world!"
    }
    bindReturn könnte man auch in bind/den Konstruktor auslagern.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    A) Prüfen ob assign_var nicht ein assoziatives Array unterstützt
    B) Die Templateklasse zum ArrayAccess erweitern
    C)
    PHP-Code:
    foreach (array (
      
    'car_edit_buttons' => $car_edit_buttons
    'car_title_img'    => $Daten['MImg_src']
    'galerie_title'    => $this->getName($car_id)

    ) as 
    $sKey => $mData) {
      
    $template->assign_var $sKey $mData);


    D) Hüllenklasse
    PHP-Code:
    $storage = new TemplateWrapper ($template);

    $storage->foo 'bar';
    $storage->bar 'baz';
    $storage->baz 'hello world!'
    E) etwas in der Richtung:
    PHP-Code:
    class ObjectWrapper () {

      public function 
    __construct ($obj) {
        
    $this->obj $obj;
      }

      public function 
    __call ($method $args) {
        
    call_user_func_array (array ($this->obj $method) , $args);
        return (
    this); // Nachteil: Kann keine Rückgaben auswerten
      
    }

    }

    function 
    with ($object) {
      return new 
    ObjectWrapper ($object);
    }

    with ($template)
      ->
    assign_var ('foo' 'bar')
      ->
    assign_var ('bar' 'baz')
      ->
    assign_var ('baz' 'hello world!')

    Einen Kommentar schreiben:

Lädt...
X