0

Laravel 4 (L4) でhttp://geotools-php.org/を使用しようとしています。

Composer を介してダウンロードするための指示に従いました (および vendors フォルダーに geotools が存在することを確認しました)。

autoload クラスマップに「app/providers/GeoTools.php」を追加しました。

内容は次のとおりです。

{
    "require": {
        "laravel/framework": "4.0.*",
        "toin0u/geotools": "@stable"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            ... more laravel stuff
            "app/providers/GeoTools.php"
        ]
    }
    ... more laravel stuff

/providers/GeoTools.php ファイルを作成しました。

内容は次のとおりです。

<?php

use Illuminate\Support\ServiceProvider;

class GeoToolsServiceProvider extends ServiceProvider {

    public function register()
    {
        $this->app->bind('Coordinate', function()
        {

            return new Geotools\Coordinate;

        });
    }

}

app.php プロバイダー配列に、「GeoToolsServiceProvider」を追加しました。

ここに私の質問があります:

  1. 明らかに私は何か間違ったことをしました。これをどのように行うべきですか。
  2. 上記のコードを修正したら、アプリケーション全体でどのように適切に使用しますか?
4

3 に答える 3

0

サービスプロバイダーは実際には大丈夫に見えます。問題はおそらく自動読み込みにあり、クラスマップにどのように追加したかがわからないと、何が起こっているのかを判断するのが困難です。使用法に関しては、次のことを試してください。

class Foo {

   protected $coordinate;

   public function __construct(Coordinate $coordinate)
   {
       $this->coordinate = $coordinate
   }
}
于 2013-03-22T04:27:49.080 に答える
0

You should be ables to access the instance by using the app facade

App::make('Coordinate')->$someGeotoolCoordinateFunction();
于 2013-03-22T06:42:11.413 に答える