メソッドを使用してオブジェクトを呼び出そうとしていますが、固まってしまいました。メソッドを呼び出すことによって、他の既存のオブジェクトの参照を取得する適切な方法はありますか?
私は、pseudo-struct-type変数に使用されたEntity
という名前のクラスがあるとします。
オブジェクトEntity
は、通常、他のインスタンス間で複数の関係を持ちます。だから、クラスEntityModule
を作成して、データベースの保存、読み込み、その他の便利なメソッドを処理します。私は、テーブルにEntity
オブジェクトを挿入したい場合
ができます私は何をしようとしている
ます。..。 メソッドEntity->save()
では、EntityModule
オブジェクトからEntityModule->saveEntity()
メソッドを呼び出す必要があります。
どうすればよいですか? 私は、クラス内でインスタンス化された他のオブジェクトを使用していると思います。
..アマチュアにとって非常に混乱しています。以下は私の例です。
<?php
class Container
{
public function __get($varName)
{
if(!isset($this->varName)) {
// Can it be more simpler?
switch($varName) {
case 'PDO':
$this->PDO('dbdbdb');
break;
case 'SessionStorage':
$this->SessionStorage($this->PDO);
break;
default:
break;
}
}
}
// This is weird method.. can it be more simpler?
public function __call($method, $args) {
$n = count($args);
if($n === 0) {
$this->$method = new $method();
} elseif($n === 1) {
$this->$method = new $method($args[0]);
} elseif($n === 2) {
$this->$method = new $method($args[0], $args[1]);
} elseif($n === 3) {
$this->$method = new $method($args[0], $args[1], $args[2]);
} elseif($n === 4) {
$this->$method = new $method($args[0], $args[1], $args[2], $args[3]);
} elseif($n === 5) {
$this->$method = new $method($args[0], $args[1], $args[2], $args[3], $args[4]);
} elseif($n === 6) {
$this->$method = new $method($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
} elseif($n === 7) {
$this->$method = new $method($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
};
}
}
?>
オブジェクトを動的にインスタンス化しようとします。
class Schema
{
public $id;
public $type;
public $name;
public $desc;
public function __construct(int $id = false, $type = 0, $name = 'Temporal schema name', $desc = 'No description.')
{
$this->id = $id;
$this->type = $type;
$this->name = $name;
$this->desc = $desc;
return;
}
public function save()
{
if(!isset($ctn->SchemaModule)) {
// This is another weird part.
// Is this the right way to make a class? Call a random instance inside the class? Doesn't it wierd?????????? ???? ?.?? ??? mentalbreak.
$ctn->SchemaModule->save($this);
}
}
}
あなたが試していることを示している(短い)コード例がありますか、それに問題がありますか? – ChristianF
ありがとうChristianF。私はスレッドを編集するだけです。 – GatesPlan