fuelを直接いじっちゃうとマズイと言われたので、設定とかで何とかならないでしょうか
テストを任されてるだけなんですが、これがそもそもバグなんでしょうか?
本番環境のPHPバージョンが低いのであれば、バグではありません。
しかし、本番環境もPHP7なのであれば、クリティカルバグとして扱わなければなりません。
設定では変更できません。
テストだけなのであれば気にする必要はないと思いますが、ソースを直接直さないで修正する方法は非常に面倒です。普通はフレームワークを直接直さないで、クラスメソッドを上書きする方法でコアクラスを修正します。しかし、パッケージの場合は、コアクラスを拡張するやり方と同じ方法ではできません。
普通は、名前空間やクラス名を変える方法で対応します。新しいパッケージにまとめてもOKです。
app/classes/Fixed/Orm/Query/Temporial.php
などとファイルを作って、あとはブートストラップで読み込みます。使用するときは異なったクラス名を呼ばなければなりません。
app/bootstrap.php
php
1//...
2\Autoloader::add_classes(array(
3 //...
4 'Fixed\Orm\Model_Temporal' => APPPATH.'classes/Fixed/Orm/Model/Temporial.php',
5 'Fixed\Orm\Query_Temporal' => APPPATH.'classes/Fixed/Orm/Query/Temporial.php',
6));
7//...
app/classes/Fixed/Orm/Model/Temporial.php
※ Ormパッケージの該当クラスを丸ごとコピーして下記個所を書き換えます。
php
1namespace Fixed\Orm;
2
3class Model_Temporal extends \Orm\Model
4{
5 //...
6 public static function query($options = array())
7 {
8 //...
9 $query = \Fixed\Orm\Query_Temporal::forge(get_called_class(), static::connection(), $options)
10 ->set_temporal_properties($max_timestamp, $timestamp_end_name, $timestamp_start_name);
11 //...
12
13 return $query;
14 }
15 //...
16}
app/classes/Fixed/Orm/Query/Temporial.php
※ Ormパッケージの該当クラスを丸ごとコピーして下記個所を書き換えます。
php
1namespace Fixed\Orm;
2
3class Query_Temporal extends \Orm\Query
4{
5 //...
6
7 public function hydrate(&$row, $models, \stdClass $result, $model = null, $select = null, $primary_key = null)
8 {
9 if( is_subclass_of($model, '\Orm\Model_Temporal'))
10 {
11 $primary_key[] = $this->timestamp_start_col;
12 $primary_key[] = $this->timestamp_end_col;
13 }
14 parent::hydrate($row, $models, $result, $model, $select, $primary_key);
15 }
16}
そして、クラスを上書きした\Fixed\Orm\Model_Temporal
をロードします。
php
1class Model_MyTemporal extends \Fixed\Orm\Model_Temporal
2{
3 //...
4}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。