質問: NULL) PKGPATH/orm/classes/query/temporal.php @ line 0 ### 試したこと そもそものやり方が間違ってる可能性もあるので、行った手順も載せておきます。 1ローカルのリポジトリにclone 2developブランチを作成、最新のdevelopをpull 3vagrant up 4ssh接続して、php oil r migrate -v=0、php oil r migrateを実行 5テスト対象のブランチに移動 こんな感じです... ### 補足情報(FW/ツールのバージョンなど) Vagrant + VirtualBoxでWindows上に開発環境 FuelPHP 1.8
回答: > > fuelを直接いじっちゃうとマズイと言われたので、設定とかで何とかならないでしょうか > > テストを任されてるだけなんですが、これがそもそもバグなんでしょうか? > > > 本番環境のPHPバージョンが低いのであれば、バグではありません。 しかし、本番環境もPHP7なのであれば、クリティカルバグとして扱わなければなりません。 設定では変更できません。 テストだけなのであれば気にする必要はないと思いますが、ソースを直接直さないで修正する方法は非常に面倒です。普通はフレームワークを直接直さないで、クラスメソッドを上書きする方法でコアクラスを修正します。しかし、パッケージの場合は、コアクラスを拡張するやり方と同じ方法ではできません。 普通は、名前空間やクラス名を変える方法で対応します。新しいパッケージにまとめてもOKです。 `app/classes/Fixed/Orm/Query/Temporial.php`などとファイルを作って、あとはブートストラップで読み込みます。使用するときは異なったクラス名を呼ばなければなりません。 **app/bootstrap.php** ``` //... \Autoloader::add_classes(array( //... 'Fixed\\Orm\\Model_Temporal' => APPPATH.'classes/Fixed/Orm/Model/Temporial.php', 'Fixed\\Orm\\Query_Temporal' => APPPATH.'classes/Fixed/Orm/Query/Temporial.php', )); //... ``` **app/classes/Fixed/Orm/Model/Temporial.php** ※ Ormパッケージの該当クラスを丸ごとコピーして下記個所を書き換えます。 ``` namespace Fixed\Orm; class Model_Temporal extends \Orm\Model { //... public static function query($options = array()) { //... $query = \Fixed\Orm\Query_Temporal::forge(get_called_class(), static::connection(), $options) ->set_temporal_properties($max_timestamp, $timestamp_end_name, $timestamp_start_name); //... return $query; } //... } ``` **app/classes/Fixed/Orm/Query/Temporial.php** ※ Ormパッケージの該当クラスを丸ごとコピーして下記個所を書き換えます。 ``` namespace Fixed\Orm; class Query_Temporal extends \Orm\Query { //... public function hydrate(&$row, $models, \stdClass $result, $model = null, $select = null, $primary_key = null) { if( is_subclass_of($model, '\Orm\Model_Temporal')) { $primary_key[] = $this->timestamp_start_col; $primary_key[] = $this->timestamp_end_col; } parent::hydrate($row, $models, $result, $model, $select, $primary_key); } } ``` そして、クラスを上書きした`\Fixed\Orm\Model_Temporal`をロードします。 ``` class Model_MyTemporal extends \Fixed\Orm\Model_Temporal { //... } ```