php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.11.2008, 15:01  
Neuer Benutzer
 
Registriert seit: 05.10.2008
Beiträge: 20
JudGer befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Auf Objektattribute ohne $this zugreifen

Huhu,

ich arbeite grade an einem System auf MVC-Basis. Im Controller werden Variablen im View gesetzt und dort dann ausgelesen und angezeigt.

Das geschieht folgendermaßen:

Im View gibt es das Objektattribut "$vars" als Array. Mittels der Methode __set werden im Controller die Variablen folgendermaßen gesetzt:
PHP-Code:
$this->view->artikel "Auto"
(view ist ein Objektattribut im Controller und enthält die Referenz auf das View-Objekt).

In den Templates greife ich mit folgender Variante auf die gesetzten Variablen zu:
PHP-Code:
<?=$this->artikel?>
Die Templates werden im View-Objekt geladen, daher kann ich mit $this->artikel auf die __get Methode zugreifen, die dann den entsprechenden Wert aus dem "$vars"-Array zurückgibt.

Aber die Schreibweise gefällt mir nicht so besonders gut. Möchte die Designer nicht unbedingt mit diesem "$this->" belasten. Gibt es eine Möglichkeit auch folgendermaßen auf die Variablen zuzugreifen?
PHP-Code:
<?=$artikel?>
LG
JudGer
JudGer ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.11.2008, 15:04  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Hi.
Nein, diese Möglichkeit gibt es nicht; nicht ohne einen eigenen Parser zu schreiben.
David ist offline   Mit Zitat antworten
Alt 27.11.2008, 15:08  
Neuer Benutzer
 
Registriert seit: 05.10.2008
Beiträge: 20
JudGer befindet sich auf einem aufstrebenden Ast
Standard

Schade, aber vielen Dank für die blitzschnelle Antwort
JudGer ist offline   Mit Zitat antworten
Alt 27.11.2008, 15:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.254
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Es sei denn, Du entpackst in der entsprechenden Methode des View Objektes alle gegebenen Variablen. Bspw. mit extract.
__________________
--
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 27.11.2008, 15:40  
Neuer Benutzer
 
Registriert seit: 05.10.2008
Beiträge: 20
JudGer befindet sich auf einem aufstrebenden Ast
Standard

Oh klasse, jep, so funktioniert es.
Vielen Dank, auch von den Designern, die schon nach Smarty gerufen haben
JudGer ist offline   Mit Zitat antworten
Alt 27.11.2008, 15:58  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Oops, wieder mal in die falsche Richtung gedacht. Ich bitte die Falschinformation zu entschuldigen.
David ist offline   Mit Zitat antworten
Alt 28.11.2008, 09:27  
Erfahrener Benutzer
 
Registriert seit: 26.05.2008
Beiträge: 196
PHP-Kenntnisse:
Fortgeschritten
[-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
Standard

Halte ich aber für riskant, die Eigenschaften alle global zu machen. Ein unbedachtet Nutzer überschreibt so schnell ein paar an anderen Stellen genutzte Variablen.

Edit sagt: Manchmal sollte man erst denken und dann schreiben. Da die Variablen ja wahrscheinlich innerhalb einer Methode "extracted" werden, unterliegen sie ja dem Funktions-Scope *peinlich*
[-UFO-]Melkor ist offline   Mit Zitat antworten
Alt 28.11.2008, 09:45  
Neuer Benutzer
 
Registriert seit: 05.10.2008
Beiträge: 20
JudGer befindet sich auf einem aufstrebenden Ast
Standard

Hm, wenn ich die Funktion richtig verstanden habe, verwandelt die die Variablen eines Arrays in lokale Variablen.

Ich habe im View die Methode "render()". Darin Rufe ich diese Methode auf. Hier sollte normal niemand mehr etwas ändern später.
Und die Variablen, die in dem Array stehen, dass mit extract auseinandergepackt wird, sind nur Variablen für das Template.

Dürfte dann eigentlich kein Problem mehr sein, oder?

Edit: Dein Edit zu spät gesehen
JudGer ist offline   Mit Zitat antworten
Alt 28.11.2008, 09:54  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Es muss nur die Disziplin bewahrt werden, dass nicht mehr PHP Code ins Template "wandert", als dafür notwendig ist. Der Code wird vollständig im Kontext der Methode ausgeführt. Wird also zum Beispiel eine Funktion definiert, ist diese dann global und bei einem erneuten Aufruf knallt es gegebenenfalls usw. usw.
David ist offline   Mit Zitat antworten
Alt 04.12.2008, 12:06  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von David Beitrag anzeigen
Hi.
Nein, diese Möglichkeit gibt es nicht; nicht ohne einen eigenen Parser zu schreiben.
gibt es doch PHP: extract - Manual
PHP: get_object_vars - Manual
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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
via php auf Dateien zugreifen oepfeli PHP Tipps 2008 3 16.06.2008 09:27
Mit PHP auf Lotus Notes Datenbanken zugreifen buggybugga PHP Tipps 2007 2 02.05.2007 11:33
auf unterobjekte von div zugreifen JS/DOM Crypi HTML, Usability und Barrierefreiheit 4 05.04.2007 16:27
Per LIMIT auf bestimmte Reihen zugreifen m.h Datenbanken 6 26.09.2006 21:43
Via PHP auf eine andere festplatte zugreifen? skytrance PHP Tipps 2006 6 05.05.2006 16:23
Seltsames $this :-| Finkman PHP Tipps 2006 2 03.02.2006 12:56
Rechte für user vergeben - auf externe Datenbank zugreifen PHP Tipps 2005-2 8 07.10.2005 13:59
Von Server auf die Platte des Clients zugreifen PHP Tipps 2005-2 6 21.08.2005 15:56
Objekt-Reassign mit $this Andreas PHP-Fortgeschrittene 0 01.08.2005 10:50
[Erledigt] Mit PHP auf ASP dot NET Webservice zugreifen PHP-Fortgeschrittene 3 08.01.2005 22:41
mit Skript auf geschützten Bereich zugreifen Olsen PHP-Fortgeschrittene 5 30.12.2004 14:36
Mit PHP auf Acces Datenbank zugreifen? PHP-Fortgeschrittene 3 29.12.2004 14:03
[Erledigt] Kann auf phpmyadmin nicht zugreifen Datenbanken 5 05.12.2004 00:23
[Erledigt] Auf &lt;td&gt; zugreifen ??? HTML, Usability und Barrierefreiheit 3 07.11.2004 05:41
OOP: $this & :: DutziMan PHP-Fortgeschrittene 33 26.08.2004 14:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
objektattribute, php alle objektattribute, auf attribut eines objektes zugreifen php, php auf objekt attribute zugreifen, view_artikel.php?seite=41, php auf attribute über variablen zugreifen, objekt zugriff ohne this, php array als attribut eines objektes zugriff, objektattribut php, auf variable einer methode zugreifen php, php auf attribut zugreifen, $this-> zugreifen php, object auf attribute zugreifen php, php von einer methode auf die andere zugreifen ooop, php zugriff auf objektattribute, php variable objektattribute, php auf attribute von objekten zugreifen ohne ->, php array objektattribute, php ohne this, auf $this-> zugreifen

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 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