-
Type: Bug
-
Resolution: Fixed
-
Priority: Minor
-
Affects Version/s: S2Dao.PHP5-1.1.1, S2Dao.PHP5-1.1.2, S2Dao.PHP5-1.2.0-beta1, S2Dao.PHP5-1.2.0-beta2, S2Dao.PHP5-1.2.0
-
Component/s: S2Dao.PHP5
-
None
-
Environment:S2Dao.PHP5-1.1.1, S2Dao.PHP5-1.2.0-beta1
see: http://ml.seasar.org/archives/s2container-php5/2007-March/000083.html
植山です。
<snip>
2)S2Dao_MySQLDBMetaDataクラスについて
S2Base.PHP5のPRADO pluginとS2Dao.PHP5を用いたプログラムを実行したところ、
下記のようなエラーが発生しました。S2Dao_SQLRuntimeException
Description
SQLException occured, because [Warning]
PradoBase::include_once(S2Dao_MySQLDBMetaData.php)
[<a href='function.PradoBase-include-once'>function.PradoBase-include-once
</a>]:
failed to open stream: No such file or directory
(@line 98 in file
/private/var/www/public_html/prado/framework/PradoBase.php).これは、S2Dao_DBMetaDataFactoryの下記の処理実行時に
class S2Dao_DBMetaDataFactory {const DBMetaData_Suffix = 'DBMetaData';
public static function create(PDO $db, S2Dao_Dbms $dbms){
$dbmd = get_class($dbms) . self::DBMetaData_Suffix;
if(class_exists($dbmd))Unknown macro: { return new $dbmd($db, $dbms); }return new S2Dao_StandardDBMetaData($db, $dbms);
}
}S2Dao_MySQLDBMetaDataクラスをロードする必要が出てきて、
PradoBaseクラスの下記メソッドが実行された際に
public static function autoload($className)Unknown macro: { include_once($className.self}S2Dao_MySQLDBMetaData.phpが存在していないために発生したと推測しています。
(あまり深くソースを追ってませんが・・)今は、S2Dao_MySQLDBMetaDataを継承しただけのS2Dao_MySQLDBMetaDataクラスが定義された
S2Dao_MySQLDBMetaData.class.phpを作成し、エラーが発生しないようにしましたが、本来はどのように
対処すべきでしょうか?