これは私が見落としていた基本的な構文エラーであると期待していますが、理解できません。
PHPスクリプトでは、次のエラーが発生し続けます。
_Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in [path]/scripts/users/database_connection.php on line 4
_
これは、データベースに接続するスクリプトがinclude_once()
で呼び出されたときに発生します。スクリプトを最も基本的なコード(他のコードに必要なものを残して)に落としましたが、それでもこのエラーを呼び出しています。
_<?php
class UserDatabaseConnection
{
$connection = sqlite_open("[path]/data/users.sqlite", 0666);
public function lookupUser($username)
{
// rest of my code...
}
}
$udb = new UserDatabaseConnection;
?>
_
私はしばらくこれに苦労してきましたが、他の誰かが私が間違った場所を見つけることができるかどうか疑問に思いました。
入れられない
$connection = sqlite_open("[path]/data/users.sqlite", 0666);
クラス構築の外。その行を関数またはコンストラクター内に配置する必要がありますが、現在の場所に配置することはできません。
クラス構築では関数呼び出しを使用できません。コンストラクター関数でその値を初期化する必要があります。
この宣言には初期化が含まれる場合がありますが、この初期化は定数値でなければなりません。つまり、コンパイル時に評価できなければならず、評価するためにランタイム情報に依存しません。
動作するコードサンプル:
<?php
class UserDatabaseConnection
{
public $connection;
public function __construct()
{
$this->connection = sqlite_open("[path]/data/users.sqlite", 0666);
}
public function lookupUser($username)
{
// rest of my code...
// example usage (procedural way):
$query = sqlite_exec($this->connection, "SELECT ...", $error);
// object oriented way:
$query = $this->connection->queryExec("SELECT ...", $error);
}
}
$udb = new UserDatabaseConnection;
?>
必要に応じて、protected
またはprivate
が$connection
。これにより、誤って接続を閉じたり、接続を乱したりすることがなくなります。
$ connectionの前にpublic、protected、またはprivateを配置します。