3
3

More than 5 years have passed since last update.

FuelPHP 1.7でMongo_Db::__construct()の挙動が変わった

Last updated at Posted at 2014-04-08

\Fuel\Core\Mongo_Dbが依存するPECL::Package::mongoの1.5以上はインスタンス作成時の new \Mongo() がなくなっています。

* [PHP-818] - Deprecate "Mongo" in favour of MongoClient.

インスタンス生成時は new \MongoClient() に変更しろということですかね。

この変更はFuelPHP 1.7で取り込まれています。
多くの人はまったく気にすることはないと思いますが、FuelPHP 1.6をメンテナンスするときにちょこっと厄介。例えば、Homebrew(他のパッケージ管理ツールでも同様だと思う)でお気楽に環境を整えてしまおうとするとPECL::Package::mongoの最新が入ってしまう可能性があります。FuelPHP 1.6の\Fuel\Core\Mongo_Db::__construct()は

// Let's give this a go
try
{
    $this->connection = new \Mongo(trim($connection_string), $options);
    $this->db = $this->connection->{$config['database']};
    return $this;
}
catch (\MongoConnectionException $e)
{
    throw new \Mongo_DbException("Unable to connect to MongoDB: {$e->getMessage()}");
}

こうなっていて、最新のPECL::Package::mongoが期待する new \MongoClient() ではありません。なので、

Fuel\Core\PhpErrorException [ 8192 ]: Fuel\Core\Mongo_Db::__construct(): The Mongo class is deprecated, please use the MongoClient class

こんなエラーが発生してしまいます。

ということでPECL::Package::mongoはパッケージ管理ツールに頼らずに、pecl コマンドで古いバージョンをインストールしましょう。

sudo pecl install mongo-1.4.5

こうするとバージョン 1.4.5 のPECL::Package::mongoがインストールされます。

これでFuelPHP 1.6のMongo_Dbも大丈夫。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3