グローバル変数をメソッド パラメータのデフォルト値として割り当てようとしているように見えます...これは実行できません。これには多くの理由がありますが、現時点で最も重要なのは、これが OOP の主な考え方と矛盾していることです: OOP のポイントは、他に何が起こっているかに関係なく、コードを複数回書く必要がないということです:
class My_DB_Object
{
private $_connection = null;
public function __construct($dbType = 'mysql', array $loginParams = array())
{
switch(strtolower($dbType))
{
case 'mysql':
return $this->constructMySQL($loginParams);
case 'pgsql':
return $this->constructPGSql($loginParams);
case 'mssql':
return $this->constructMSSQL($loginParams);
default:
throw new InvalidArgumentException($dbType.' is not supported, yet?');
}
}
private function constructMySQL(array $loginParams)
{
//and so on...
}
}
このオブジェクトは、使用するデータベースに関係なく、すべてのプロジェクトで使用できselect
ます。メソッドが定義されている可能性があり、さまざまな DB をクエリするさまざまな方法を処理します。同じクエリの時間を書き直す必要はありません。もう一度...
デフォルト値として割り当てようとしている変数が設定される、またはスコープ内にあるという保証はありません。完全に異なる名前空間にある別のオブジェクトのメンバー関数内に新しいインスタンスを作成することもできます。 .
基本的に: デフォルト値はハードコーディングされています。
ファイルには、出力を生成するクラス定義またはコードのいずれかが含まれています。スニペットは両方を実行しているようです。
コードは次のようになります。
require_once('UploadHandler.php');//or look into __autload()
$uploadInstance = new UploadHandler(null, $userdata['user_id']);
ファイルUploadHandler.php
は次のようになります。
<?php
class UploadHandler
{
protected $options = null;
public function __construct (array $options = array(), $getid = '1')
{//assuming $options should be an array
$this->options = $options;
$this->options['script_url'] = 'myfile/'.$getid.'/';
}
}
//no closing ?> tag!