に問題がありeval()
ます。後で実行される配列に文字列を格納する必要があります。
これで、文字列を文字列に格納することは問題ありません。しかし、そこに配列を格納するにはどうすればよいでしょうか? 変数にアクセスできないため、配列をこの文字列に直接格納する必要があります。
このコードを参照してください:
// ----------------------
// -- class A
$strId = 'id_1234';
$strClass = 'classname';
$arParams = array('pluginid' => 'monitor', 'title' => 'Monitor', ...);
$strClone = 'openForm(desktop(),"'.$strId.'","'.$strClass.'",'.$arParams.');';
$this->menu = array( "clone" => $strClone, ... );
// ----------------------
// -- class B
// loop through $this->menu, then..
{
eval( $this->menu[$item] );
}
// ----------------------
// -- class C
function openForm( $owner, $id, $class, $params )
{
...
}
array を除いて、すべてが完全に機能し$arParams
ます。
There is an error: PHP Parse error: syntax error, unexpected ')', expecting '(' in ... (441) : eval()'d code on line 1
何が問題ですか?なしでこれを行うことはできますserialize()
か?
編集:
私は何が起こっているかの表現を設定しました。これを実行すると、修正されます。
$ar = array('a' => 'value1', 'b' => 'value2');
$str = "something";
$run = " a('".$str."', \$ar); "; // this line may be changed
// this is done to represent the loss of the variables in another class
unset($ar);
unset($str);
// $run is kept
eval( $run );
function a($str, $ar) {
echo "\$str=" . $str . "<br>";
echo "\$ar['a']=" . $ar['a'] . "<br>";
echo "\$ar['b']=" . $ar['b'] . "<br>";
}