require_once Fehler

awortmeier

Erfahrenes Mitglied
Hallo,
ich versteh nicht wo mein Fehler ist...

Fehlermeldung:
Code:
[Fri Oct 09 12:27:18 2009] [error] [client 127.0.0.1] PHP Parse error:  syntax error, unexpected T_REQUIRE_ONCE, expecting T_FUNCTION in /srv/www/Alex/classes/login.class.php on line 6

Quellcode:
PHP:
<?php

class login {

//	Required classes
	require_once("forms.class.php");

//	Creat objects
	$forms = new forms();

//	Global variables
	var $username;
	var $password;

//	###################
//	#### FUNCTIONS ####
//	###################

	function login(){
		$this->username = "Username";
		$this->password = "password";
	}

	function showLogin(){
		$forms->input("Benutzername", "left");
		$forms->password("Passwort", "left");
		$forms->submit("login", "text");
	}

}

?>

Dank im Vorraus
 
Du darfst in einer Klasse ausserhalb von Funktionsdeklarationen keine Funktionen aufrufen.
Nutze die Konstruktor-Funktion für den Funktionsaufruf:

Code:
function __construct()
{
  require_once("forms.class.php"); 
}
 
Hi,

schreibe das require_once() ausserhalb der Klasse (also direkt drüber), dann sollt es gehen.

Das geht nicht in der Klasse, weil die Klassenstruktur nicht fix ist.

Gruß
BK
 
Aller guten Dinge sind drei:

Wenn du willst, dass diese Klasse etwas von einer anderen erbt dann macht man das so:
PHP:
class Neue extends Andere
{
  ...
}
 
Ok, danke.

Hoffe du kannst mir nochmal helfen...

Fehlermeldung:
Code:
[Fri Oct 09 13:42:17 2009] [error] [client 127.0.0.1] PHP Parse error:  syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /srv/www/Alex/classes/login.class.php on line 6

Quellcode:
PHP:
<?php

class login {

//	Creat objects
	$forms = new forms();

//	Global variables
	var $username;
	var $password;

//	###################
//	#### FUNCTIONS ####
//	###################

	function __consruct(){
//		Required classes
		require_once("forms.class.php");
	}

	function login(){
		$this->username = "Username";
		$this->password = "password";
	}

	function showLogin(){
		$forms->startForm("", "post");
		$forms->input("Benutzername", "left");
		$forms->password("Passwort", "left");
		$forms->submit("login", "text");
		$forms->endtForm();
	}

}

?>
 
Hi,

du möchtest in Zeile 6 bereits eine Instanz von dem Objekt machen, obwohl die Klasse erst viel weiter unten bekannt ist.

Ich würde immer noch zu meiner Lösung tendieren, ist meiner Meinung nach am saubersten, oder irre ich mich da?

PHP:
<?php
require_once("forms.class.php");

class login {
//    Creat objects
    $forms = new forms();
...

Gruß
BK
 
Aber ist es nicht so, dass der constructor vor dem Erzeugen des Objektes aufgerufen und ausgeführt wird.

EDIT:
Hab die oben Posts nich gesehen! Vieleicht gehts gleich ;)

EDIT II:

Ich versteh nicht warum das so ist...?!

Fehlermeldung:
Code:
[Fri Oct 09 14:16:34 2009] [error] [client 127.0.0.1] PHP Parse error:  syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /srv/www/Alex/classes/login.class.php on line 14

Quellcode:
PHP:
<?php

//Required classes
require_once("forms.class.php");

class login {

//	Global variables
	var $username;
	var $password;
	var $forms;

//	Creat objects
	$forms = new forms();

//	Functions
	function login(){
		$this->username = "Username";
		$this->password = "password";
	}

	function showLogin(){
		$forms->startForm("", "post");
		$forms->input("Benutzername", "left");
		$forms->password("Passwort", "left");
		$forms->submit("login", "text");
		$forms->endtForm();
	}

}

?>
 
Zuletzt bearbeitet:
Und davor muss PHP erst alles parsen,
ich denke das Besate wäre die Datei davor includen und dann mit extends.
 
Ich versteh nicht warum das so ist...?!

Weil es so ist :-)

Der Klassen"körper" darf nur "Initialisierungen" beinhalten.

1.Variablen entweder initialisiert mit dem Wörtchen var oder aber mit Sichtbarkeitsdeklaration(public, static,protected)

2. Klassenkonstanten mit vorangestelltem const

3. Funktionen

Code:
$forms = new forms();

da fehlt also das var

Code:
var $forms = new forms();

Und wenn du das hinschreibst, kommt der nächste Fehler wegen dem new

denn...
Bratkartoffel hat gesagt.:
Das geht nicht in der Klasse, weil die Klassenstruktur nicht fix ist.

Du kannst bei der Initialisierung von Klassenmembers weder auf Variablen, Rückgabewerte von Funktionen, andere Klassen, mathematische Operationen, Stringverkettungen etc. zurückgreifen, alles muss halt fix sein.

Für alles andere sind die Konstruktor-Funktion und die Klassenmethoden da.

Wenn du aus deinem zuletzt geposteten Code jenes
Code:
$forms = new forms();

hierdurch ersetzt...
Code:
function __construct()
{
$this->forms = new forms();
}
ist alles in Butter(sofern die Member der Klasse forms public sind)
 
Zurück