php.de

Zurück   php.de > Stellenangebote und Projektausschreibungen > Sonstige

Hinweise

Sonstige Suche nach Mithilfe an privaten oder Opensource-Projekten, Suche nach Gleichgesinnten zur Umsetzung neuer Ideen etc.

Antwort
 
LinkBack Themen-Optionen
Alt 20.02.2011, 15:49  
Neuer Benutzer
 
Registriert seit: 14.03.2009
Beiträge: 16
ZodiacXP befindet sich auf einem aufstrebenden Ast
Standard Review von "Pipelines" in OOP (neues Framework)

Seit PHP 5.3 gibt es __invoke() welches Objekte aufrufbar macht wie eine Funktion. Damit lässt sich einiges einfacher gestalten, was in rpd auch realisiert wurde. Hierzu würde ich mich über Resonanz freuen damit das ganze noch einfacher, schneller und sicherer wird.

Der Clou ist das man für gängige Operationen durch diese "Pipelines" in Objekten nur noch eine Zeile braucht:
PHP-Code:
$v = new View("ein/view"); 

// gesendeten Daten zeigen
echo $v($_POST); 

// Benutzer wählen über die gesendeten Daten (SQL-Injection wird verhindert) 
$mdl = new Model_Users($_POST);   

// Neuen Benutzer anlegen / aktualisieren (vgl. Arrays) 
$mdl[] = $_POST

// Alle Benutzer mit Namen Hugo ausgeben 
$hugo = new Model_Users("name = '%s' ""Hugo");  // Escape - vgl. sprintf 
echo $v($hugo); 

// etc. 
Das Model klappt noch nicht ganz, aber das wird in der nächsten Woche erledigt Würde mich über Resonanzen freuen!

Download: http://rpd.googlecode.com/files/rpd-v0.1.0-r270.zip

Manual: http://rpd.googlecode.com/svn/tags/manual/index.html
ZodiacXP ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.02.2011, 15:59  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich persönlich mag das überhaupt nicht wenn zu viel mit diesen "Magic" Methoden gearbeitet wird. Was genau passiert wenn ich nen Objekt als Funktion aufrufe wird aus dem Kontext nicht wirklich klar. Hab ich aber sowas wie $view->render() oder $view->set('bla', $blub); dann ist mir allein beim Code anschauen schon klar was er macht. Dieses "pipelining" wie du es bezeichnest mag vlt. weniger Tipparbeit bieten, dafür kostet es wesentlich mehr Zeit nachzuschauen was genau das dort macht, wann man es verwenden kann und welche Objekte das überhaupt anbieten.
Flor1an ist offline   Mit Zitat antworten
Alt 20.02.2011, 18:48  
Neuer Benutzer
 
Registriert seit: 14.03.2009
Beiträge: 16
ZodiacXP befindet sich auf einem aufstrebenden Ast
Standard

Danke, hab dafür schonmal ein Alias angelegt. So dürfte mittels $obj->pipe($foo); klar sein das $foo in $obj eingespeißt wird im sinne von Pipes.

Unter dem Kontext Model -> View kann doch sicherlich abgeleitet werden, dass die Daten aus dem Model in den View gepusht werden oder nicht?
Bzw für Array -> Model
PHP-Code:
$daten  = array("feld" => "wert");
$model->pipe($daten); 
das Daten aus dem Model per View wiedergegeben werden.
ZodiacXP ist offline   Mit Zitat antworten
Alt 20.02.2011, 19:55  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wie greife ich den dann auf die Daten im View zu? Wenn du sowas hast:

PHP-Code:
$v = new View("ein/view"); 

// Alle Benutzer mit Namen Hugo ausgeben 
$hugo = new Model_Users("name = '%s' ""Hugo");  // Escape - vgl. sprintf 
echo $v($hugo); 
Wie sieht jetzt der zugehörige View aus? Wie greife ich auf die Daten in $hugo zu ?
Flor1an ist offline   Mit Zitat antworten
Alt 20.02.2011, 20:22  
Neuer Benutzer
 
Registriert seit: 14.03.2009
Beiträge: 16
ZodiacXP befindet sich auf einem aufstrebenden Ast
Standard

Read / Update
Angenommen es gibt die Tabelle "users".
Dann wird die Verbindung in der "configuration.php" eingestellt (wie bei einer INI)
und die Datei "app/Model/Users.php" angelegt:
PHP-Code:
class Model_Users extends Model {} 
reicht schon.

Nun hat man ein ORM auf diese Tabelle wie folgt (vgl. Handbuch zur Klasse "Model"):
PHP-Code:
$mdl = new Model_Users("name = 'Rudi'"); // alle mit dem Namen "rudi"

foreach ($mdl as $row)
{
  echo 
$mdl->name;    // Read
  
$mdl->name "foo"// Update

Der Zugriff wie bei einem Array kommt evtl auch noch.

Liste erstellen
Oder man lässt sich eine Liste ausgeben (agenommen "name" ist ein Feld):

/app/View/liste.php
Code:
<li><?=$name?></li>
/app/Controller/index.php
PHP-Code:
<?php
$mdl 
= new Model_Users();  // ganze Tabelle
$view = new View('liste');
echo 
$view($mdl);  // oder demnächst: $view->pipe($mdl)
?>
Alias und Join
Der Alias $view->pipe(...) wird dann nächsten Montag dabei sein. Werde wöchentliche Updates machen. Was auch noch kommt bzw. zur Zeit testweise schon geht ist ein LEFT JOIN wenn es mehrere Model gibt:

PHP-Code:
$users = new Model_Users("iduser = 5"); // Benutzer Nr 5
$users->Rights = new Model_Rights();  // Rechte für Benutzer 5 
ZodiacXP ist offline   Mit Zitat antworten
Alt 21.02.2011, 16:12  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.992
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Kann mit dem Konzept nichts anfangen, sorry. Außer in seltenen Fällen, in denen Objekte tatsächlich eine Art Funktions-Funktionalität abbilden (wie Strategie Pattern), würde ich __invoke auch nicht anwenden. Methodenbezeichner heißen ja nicht ohne Grund „Bezeichner“, sie beschreiben die Funktionalität.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 28.02.2011, 18:52  
Neuer Benutzer
 
Registriert seit: 14.03.2009
Beiträge: 16
ZodiacXP befindet sich auf einem aufstrebenden Ast
Standard

Das stimmt es sind einige Stategy Pattern dabei. Dies soll einem u.a. die Arbeit abnehmen.

Aufgrund eurer Vorschläge und berechtigten Meinungen (es sei zu viel Magie) wurden einige Alternativen erstellt die ohne Magie handeln (ganz im Sinne von OOP) - siehe Changelog.

Diese werden im Manual als Alternativen genannt und gekennzeichnet (z.B. im View).

Vielen Dank für eure Meinungen und Kritiken. Die haben sehr geholfen das Ganze zu verbessern!
ZodiacXP ist offline   Mit Zitat antworten
Antwort


Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Framework Wahl - Produktivurteile cydox PHP Einsteiger 14 31.12.2010 18:50
Framework, für mich(ja oder warten?), wenn ja welches? ArtiHl Off-Topic Diskussionen 7 24.09.2010 18:59
Neues PHP-Projekt - Framework oder nicht? Thoresus PHP Tipps 2010 2 19.04.2010 19:53
Unterschied zwischen Framework und CMS auf Basis OOP litterauspirna Off-Topic Diskussionen 1 24.03.2009 20:10
Zend Studio for Eclipse und Zend Framework KeKs0r PHP-Fortgeschrittene 5 15.12.2008 15:10
Lerne Grundlagen | Quellensammlung cycap PHP Einsteiger 0 12.11.2008 16:23
BrickOO :: PHP Framework Hroudtwolf Scriptbörse 14 06.05.2008 12:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pipeline pattern oop

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum