同じクラスを 2 回呼び出してエラーをスローするスクリプトを使用しています。
Fatal: Cannot redeclare class urlConverter (/var/www/core/cache/includes/elements/modsnippet/23.include.cache.php:14)
次のコードを配置しようとしました:
if( !class_exists( 'urlConverter', false ) )
{
$urlConverter = new urlConverter( $modx );
}
ただし、私が使用している CMS はエラー 500 を報告しており、そのエラーをスローしている理由をログで確認できませんでした。
そのクラスがすでに正しく宣言されているかどうかを確認する方法を知っている人はいますか?
編集:
私はCMSを使用しているため、クラスは実際のファイルではなくスニペットに格納されています。これは、彼らがスニペットを呼び出す方法です。
$data['viewonlinelink'] = $this->modx->runSnippet( 'urlConverter', array(
'action' => 'encrypt',
'string' => http_build_query( $string ) ) );
別の結果を得るには、もう一度呼び出す必要があります。
編集2:
ここにurlConverterがあります:
<?php
class urlConverter {
public $modx;
public function __construct( modX &$modx )
{
$this->modx =& $modx;
}
public function action( $scriptProperties )
{
return $this->$scriptProperties['action']( $scriptProperties['string'] );
}
private function encrypt( $str )
{
return $str;
}
private function decrypt( $str )
{
return $str;
}
}
}
$urlConverter = new urlConverter( $modx );
return $urlConverter->action( $scriptProperties );
別のスクリプトから、次のように呼び出します。
$data['viewonlinelink'] = $this->modx->runSnippet( 'urlConverter', array(
'action' => 'encrypt',
'string' => http_build_query( $string ) ) );
$data['confirmonline'] = $this->modx->runSnippet( 'urlConverter', array(
'action' => 'encrypt',
'string' => http_build_query( $reversed ) ) );
urlConverter クラス内で関数 encrypt を実行すると、2 つの異なる結果が返されます。