$output
が文字列の場合、以下の方法は完全に機能します。まれに、$output
は配列として渡すことができます。PHP配列をチェックし、この配列の最後の項目のみを使用する
$output
が配列であり、配列の最後の部分のみを取得する方法を確認できます。
/**
* Output writer.
*
* @param string $output
* @param Controller $oController
* @throws Output_Exception
*/
public static function factory($output,Controller $oController) {
$outtype = ucfirst(strtolower(str_replace(".","_",$output)));
$classname = __CLASS__ . "_" . $outtype;
try {
Zend_Loader::loadClass($classname);
$oOutputter = new $classname($oController);
if(! $oOutputter instanceof Output_Abstract)
throw new Output_Exception("class $classname is not an instance of Output_Abstract");
} catch (Zend_Exception $e) {
throw $e;
}
return $oOutputter;
}
エラー:
警告:strtolower()パラメータ1は Cで与えられた文字列、配列ことを期待:ライン16上のOutput.php \ \ WAMP \ WWW \ CMS \ Webアプリケーション\ライブラリ
警告:のinclude_once(Output.php)function.includeワンス]: ストリームを開くことに失敗していない: Cにおけるようなファイルまたはディレクトリなしに:\ WAMP \ PHPの\は、ライン146上の\ Zendの\ Loader.phpを含みます
のvar_dump($出力)
array(2) { [0]=> string(6) "xml" [1]=> string(6) "smarty" }
"関数を呼び出すコードが配列を変更しないと予期しない結果になることがあります。" - 配列は参照として渡されないため、発生しません。 – VolkerK
ええ、あなたは正しいです。何らかの理由で、私は配列とオブジェクトの両方が参照渡しされたと考えましたが、明らかに配列については間違っていました。 – itsananderson