2016-05-21 8 views
-1

Ich möchte Übersetzung auf einer Website implementieren, und ich versuche, das Verfahren bei http://we-love-php.blogspot.com.ar/2012/07/how-to-implement-i18n-without.htmlPHP-Rückkehrmethode von einer eingeschlossenen Seite?

ich es mit Leichtigkeit herausgefunden tun können, wenn die angeforderte Seite eine komplette Seite ist, aber ich weiß nicht, was wann zu tun ist Die angeforderte Seite besteht aus vielen enthaltenen Dateien.

Hier ist, was meine index.php wie folgt aussehen:

<?php 
include 'includes/header.php'; 
include 'includes/index.php'; 
include 'includes/footer.php'; 
?> 

Und was ich versucht habe, ist, wie dies die Klasse in jedem der Template-Dateien zu setzen:

<?php 

class example{ 
    public function now() { 
    return <<<FOOBAR 
     <!DOCTYPE html> 
     <html> 
     <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <title>MY SITE's TITLE</title> 
     <meta name="keywords" content="SOME KEYWORDS" /> 
     <meta name="description" content="SOME DESCRIPTION"> 
     <meta name="author" content="MY NAME"> 
     ........... 
FOOBAR; 
} 
} 
?> 

Die ‚didn t arbeiten, wie es versucht, die Klasse mehr als einmal zu erstellen. Dann habe ich versucht, die Klasse über Header zu erstellen und dann nach der Fußzeile zu schließen. Es wirft mich einen Fehler, als ob PHP versuchte, Fußzeile zuerst zu öffnen, also ordnete ich die Reihenfolge der eingeschlossenen Dateien neu, also schließt es footer.php zuerst und header.php zuletzt ein. Nicht nur kam es als ein Chaos, sondern auch mit einer Warnmeldung an der Unterseite sagen:

Parse error: syntax error, unexpected end of file, expecting variable

Wie kann ich dieses Problem lösen? Ich mochte diese Methode, meine Seite zu übersetzen, aber sie muss funktionieren, während sie Vorlagen enthält. Ist es möglich?

Vielen Dank im Voraus!

Antwort

0

Das Einfügen einer Datei weist den Compiler buchstäblich an, den exakten Inhalt einer Datei zu erfassen und sie beim Ausführen des Skripts in die andere Datei zu kopieren/einzufügen. Wenn Sie also eine Klassendeklaration in mehrere Dateien einfügen, erhalten Sie mehrere Deklarationen dieser Klasse.

Der ganze Sinn der Verwendung von Include ist es, Sie Ihren Code aufbrechen und Redundanzen innerhalb zu entfernen. Sie sollten nicht immer die gleiche Klasse, Funktion oder Code in mehreren Dateien haben, da Sie sehr seltsames Verhalten und Konflikte bekommen.

Wählen Sie eine Datei aus, in die Ihre Klassendeklaration eingefügt werden soll, und vergewissern Sie sich, dass sie sich in keiner der anderen befindet.

Ich hoffe, das hilft!