kostenloser Webspace werbefrei: lima-city


Auf im Konstruktor gesetzte Felder zugreifen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ybook

    ybook hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    ybook

    ybook hat kostenlosen Webspace.

    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
  5. 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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!