php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.05.2005, 11:49  
Gast
 
Beiträge: n/a
Standard PHP5: unexpected T_STRING bzw. unexpected T_OBJECT_OPERATOR

Hallo,

ich bastel' zurzeit eine abstrakte PHP5-Klasse zum Datenbankzugriff, aber die schmeißt mir ganz merkwürdige Fehlermeldungen. Zunächst der Quelltext der Klasse:
PHP-Code:
<?php
abstract class DB_Baseclass {


    
/**
     * Handle for DB-Connection
     */
    
static private $db NULL;

    
/**
     * Constructor
     *
     * Checks whether a connection to the database exists, else establishes a 
     * connection and stores it in the Classvariable $db. 
     *
     * @return Boolean True if succeeded, else false
     */
    
    
function __construct() {
    global 
$config;

    
/**
     * Including Pear-DB
     */
    
include_once($config['path_db']."DB.php");

    
//create DSN
    
$dsn "mysql://".$config['db_user'].":".$config['db_pwd']."@".$config['db_host']."/".$config['db_database'];
    
$db  DB::connect($dsn);
    
    if (
DB::isError($db)) {
        
logerror(___FILE____LINE__"Verbindungsaufbau zur DB gescheitert! Fehler: ".$db->getMessage());
        return 
false;
    }
//if
    
    
$this->db $db;
        return 
true;
    }
//Constructor

?>
Die Fehlermeldungen sind 1. (so wie der Quelltext oben steht): "Parse error: parse error, unexpected T_STRING, expecting T_VARIABLE or '$' in /opt/lampp/htdocs/v2/inc/DB_Baseclass.inc.php on line 64" (Z.64 ist die mit $this->db = $db) und 2. wenn ich Z.64 auskommentiere "Parse error: parse error, unexpected T_OBJECT_OPERATOR in /opt/lampp/htdocs/v2/inc/DB_Baseclass.inc.php on line 65".
Ich extende die Klasse in einer neuen Klasse, in der ich dann parent::__construct() aufrufe. Einfach mal das Schlüsselwort vor der Klassendefinition rauszunehmen habe ich auch schon versucht, hat leider nichts geändert.
Hat jemand eine Idee?

Besten Dank,
Michael
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.05.2005, 11:55  
Gast
 
Beiträge: n/a
Standard

Der Fehler scheint vor dem hier gezeigten Ausschnitt zu liegen.
  Mit Zitat antworten
Alt 18.05.2005, 12:13  
Gast
 
Beiträge: n/a
Standard

Hmm, davor ist aber nichts, nur VarDeklaration und Getmethoden Ich paste trotzdem nochmal komplett.
Ich hab aber mittlerweile den Verdacht dass das ein Bug ist, obwohl der schon heftig wäre...

PHP-Code:
<?php
/**
 * Abstract Baseclass for Database-Access
 * 
 * This class makes the establishes the connection to the database 
 * and stores it in the classvariable $db. The Accessdata for the 
 * Database are taken from the configuration file. 
 * 
 * Created at 2005-05-17, 15:15
 * @package db-classes
 */
 
abstract class DB_Baseclass {


    
/**
     * Handle for DB-Connection
     */
    
static private $db NULL;


    
//############################## Get-Methods ##################################


    /**
     * Get-Method for db
     * 
     * @return Handle db
     */
    
public function getDb() {
        return 
$this->db;
    }
//function getdb


    //############################## Konstruktor ##################################

    /**
     * Constructor
     *
     * Checks whether a connection to the database exists, else establishes a 
     * connection and stores it in the Classvariable $db. 
     *
     * @return Boolean True if succeeded, else false
     */
    
    
function __construct() {
    global 
$config;

    
/**
     * Including Pear-DB
     */
    
include_once($config['path_db']."DB.php");

    
//create DSN
    
$dsn "mysql://".$config['db_user'].":".$config['db_pwd']."@".$config['db_host']."/".$config['db_database'];
    
$db  DB::connect($dsn);
    
    if (
DB::isError($db)) {
        
logerror(___FILE____LINE__"Verbindungsaufbau zur DB gescheitert! Fehler: ".$db->getMessage());
        return 
false;
    }
//if
    
    
$this->db $db;
        return 
true;
    }
//Constructor
    

    //############################## Destruktor ###################################

    /**
     * Destructor
     *
     * Unsets the object and does cleanup-work if necessary
     */
    
function __destruct() {
    if (
$this->db != NULL) {
        
$this->db->disconnect();
        
$this->db NULL;
    }
//if
    
}//Destructor
    

    //############################ Other Functions ################################
    
abstract function storeObj($obj);
    abstract function 
readObj($obj);
    abstract function 
deleteObj($obj);
    abstract function 
readListOfObj();

}
//class


?>
und die erweiternde Klasse ist:

PHP-Code:
<?php
/**
 * Testfile which implements the DB_Baseclass
 *
 * @package testfiles
 */
class DB_DB_Baseclass extends DB_Baseclass {
    function 
__construct() {
//    DB_Baseclass::__construct();
return true;
    }
//function
    
    
function storeObj($obj) {
    return 
true;
    }
    function 
readObj($obj) {
    return 
true;
    }
    function 
deleteObj($obj) {
    return 
true;
    }
    function 
readListOfObjects() {
    return 
true;
    }
}
//class
?>
  Mit Zitat antworten
Alt 18.05.2005, 12:18  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

falls ich dir einen tipp geben darf:
tu dir selbst einen gefallen und gib deiner klasse ein fertig initialisiertes DB-objekt als parameter in den konstruktor oder verzichte zumindest auf die besch*ssenen globals und gib die konfigurations-variablen in den konstruktor mit - so wie du arbeitest wirst du früher oder später nicht glücklich werden.


wie rufst du die klasse beim benutzen auf? hoffentlich schon mit '$obj = & new Object() ' und nicht mit
$obj = ClassName::__construct(); ?

zweiteres würde bedeuten, dass du den konstruktor statisch aufrufst und damit keinen zugriff auf $this hast.
axo ist offline   Mit Zitat antworten
Alt 18.05.2005, 12:51  
Gast
 
Beiträge: n/a
Standard

Hmm, also nur dass wir nicht aneinander vorbeireden: Es gibt die eigentliche PHP-Datei, in dieser wird wie von dir beschrieben ein neues Objekt der Klasse DB_DB_Baseclass erzeugt. Diese erweitert die DB_Baseclass.
Mit $this hast du also in Bezug auf die abstrakte Klasse wahrscheinlich Recht - ich habs aber gerade in die DB_DB_ verschoben, der Fehler ist gleich...
  Mit Zitat antworten
Alt 18.05.2005, 12:53  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zeig mal einfach, wie du das ganze verwendest. dann kann ich's selbst mal ausprobieren. ich will also auch die instanziierung des objekts sehen.
axo ist offline   Mit Zitat antworten
Alt 18.05.2005, 12:54  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

nur so btw:

parse-error
Parse-Errors selbst finden:
http://tut.php-q.net/parseerrorfind.html#u2
robo47 ist offline   Mit Zitat antworten
Alt 18.05.2005, 12:56  
Gast
 
Beiträge: n/a
Standard

Das hier ist die dritte, aufrufende Datei:
PHP-Code:
<?php
/**
 * Testfile for testing the class DB_Baseclass
 *
 * @package testfiles
 */

/**
 * Including Config
 */
include_once("/opt/lampp/htdocs/v2/inc/config.inc.php");

/**
 * Including DB-baseclass
 */
include_once("/opt/lampp/htdocs/v2/inc/DB_Baseclass.inc.php");

/**
 * Including DB-Class
 */
include_once("/opt/lampp/htdocs/v2/inc/DB_DB_Baseclass.inc.php");

$obj = new DB_DB_Baseclass();
var_dump($obj);
?>
  Mit Zitat antworten
Alt 18.05.2005, 13:06  
Gast
 
Beiträge: n/a
Standard

Auch beim kompletten Skript mit DB_Baseclass bekomme ich keinen parse-error.
  Mit Zitat antworten
Alt 18.05.2005, 13:09  
Gast
 
Beiträge: n/a
Standard

ach? Das ist interessant. Wieso denn nicht bei mir?
Bei dir läuft das also alles so wie ich mir das dachte?
Dann wäre es sehr hilfreich wenn wir mal eben Systeme vergleichen könnten.
  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
php5 braucht 4 mal so lange wie php4? CC84 PHP Tipps 2006 4 12.04.2006 09:55
PHP5 erkennt kein PHP5!? DaOnkel PHP Tipps 2006 4 14.03.2006 11:56
[Erledigt] Seit PHP5 - vB sehr Langsam PHP Tipps 2006 3 02.03.2006 10:11
[Erledigt] IIS6 mit PHP5 / CGI-Timeout PHP Tipps 2006 3 01.02.2006 14:00
2 (blöde) Fragen zur Installation von PHP5 PHP Tipps 2006 7 03.01.2006 14:49
Php4 vs php5 PHP-Fortgeschrittene 10 27.10.2005 00:38
[Erledigt] PHP5 mit Apache zum Laufen bringen... PHP Tipps 2005-2 11 22.10.2005 17:52
php4 und php5 gleichzeitig test022 Server, Hosting und Workstations 13 24.08.2005 10:25
SOAP in PHP5 für NuSoap deaktivieren PHP-Fortgeschrittene 2 03.08.2005 18:23
Suche PHP5 Cache! atom-dragon Beitragsarchiv 1 25.06.2005 17:40
php4 und php5 auf einem indianer Server, Hosting und Workstations 2 22.05.2005 18:06
suche gut erklärtes Tutorila zu php5 und oop Beitragsarchiv 24 03.03.2005 12:38
[Erledigt] Unterschiedliche Ergebnisse: PHP4 / PHP5 PHP-Fortgeschrittene 2 03.01.2005 00:45
[Erledigt] Erfahrung mit PHP5 / Stabilität PHP-Fortgeschrittene 3 30.08.2004 12:48
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
t_object_operator, php unexpected t_object_operator, php t_object_operator, unexpected t_object_operator, unexpected t_object_operator php, t_object_operator php, http://www.php.de/php-fortgeschrittene/23234-php5-unexpected-t_string-bzw-unexpected-t_object_operator.html, php \unexpected t_object_operator\, unexpected t_string php5, parse error: syntax error, unexpected t_object_operator, php t_string, unexpected t_object_operator in php, php4 unexpected t_object_operator, php5 return mit if, syntax error, unexpected t_object_operator php5, php mysql unexpected t_object_operator, t_object_operator php5 php4, php5 t_object_operator, unexpected t_string, t_object_operator php 5

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:35 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.