Auf im Konstruktor gesetzte Felder zugreifen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beschreibung
code
date
eigenschaft
grad
guter stil
klammern
klasse zugreifen
konkreten beispiel
lang lang start
lang string
modul
problem
string
syntax
tag
text
url
zugreifen
zugriff
-
Moin,
ich habe mich nun mal mit dem OOP in PHP befasst und habe ein tag/problem">Problem.
<?php /** * Created by PhpStorm. * User: Yannick * Date: 7. 2. 2015 * Time: 18:27:41 */ namespace MEC\Modules; class Head { private $title, $author, $charset, $publisher, $describtion, $keywords, $lang; /** * @param $title String Der Seiten Titel * @param $author String Der Autor, nicht unbedingt der ganze Seite Autor * @param $charset String Das Charset, normalerweiße UTF-8 * @param $publisher String Der Publisher der GANZEN Seite * @param $describtion String Die Beschreibung der Seite * @param $keywords String Die Schlüsselwörter für Google, etc. * @param $lang String Die Sprache - meist DE */ function __construct($title, $author, $charset, $publisher, $describtion, $keywords, $lang) { $this->$title = $title; $this->$author = $author; $this->$charset = $charset; $this->$publisher = $publisher; $this->$describtion = $describtion; $this->$keywords = $keywords; $this->$lang = $lang; } /** * Start and Content of Module */ public function startAndContentOfMe() { $text = <<<END <head> <title>$title</title> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" /> <meta name="" content="" />\n END; echo $text; } //(...) }
Ich habe durch den Konstruktor das Feld $title gesetzt. Wenn ich jetzt aber in der Methode startAndContentOfMe() darauf zufreifen möchte meckert PHPStorm gleich mit "Undifined Variable 'title'". Auch wenn ich das Ausführe wird nichts im Tag title ausgegeben
Beitrag zuletzt geändert: 7.2.2015 20:00:40 von ybook -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Im Konstruktor stimmt der Zugriff auf die Eigenschaft:
$this->$title = $title;
Um den Wert wieder zu laden, musst du ebenfalls über $this zugreifen.$text = <<<END <head> <title>$this->title</title> <meta name="" content="" /> ... <meta name="" content="" />\n END;
(Ich bin nur grad unsicher, ob deine Heredoc-Syntax das zulässt...)
Edit: Ja funktioniert, ich habs getestet. Man kann in der Heredoc-Syntax auf Eigenschaften einer Klasse zugreifen.
Beitrag zuletzt geändert: 7.2.2015 19:49:06 von fuerderer -
Mit dem $this hatte ich vorher auch probiert, dann aber auch mit $title wie oben.
Jetzt ist mir auch aufgefallen im Konstruktor muss das $ auch weg.Dann funkts.
Danke.
Yannick -
fuerderer schrieb:
(Ich bin nur grad unsicher, ob deine Heredoc-Syntax das zulässt...)
Ein guter Stil wäre, das in geschweifte Klammern zu setzen:
{$this->title}
Damit wäre sichergestellt, dass PHP genau weiß, wo die Variable zu Ende ist. In diesem konkreten Beispiel ist das unkritisch, generell kann es aber vorkommen, dass beispielsweise ohne Leerzeichen weiterer Text folgen soll.
Bei
Dies$this->titleisteinSatz
würde PHP die Variable titleisteinSatz suchen, die es nicht gibt. Hier wäre man also angewiesen auf
Dies{$this->title}isteinSatz
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage