在我的应用程序中,我使用ajax测试了Google Directions API,但由于我只是测试了所有逻辑,它们都在routes.php
文件中。现在我想以正确的方式做事,并且有三层:路线,控制器和服务。在Laravel4上使用我自己的服务
所以在路线我告诉Laravel应执行方法:
Route::get('/search', '[email protected]');
而且方法只是返回哪些服务应该返回:
class DirectionsAPIController extends BaseController {
public function search() {
$directionsSearchService = new DirectionsSearchService();
return $directionsSearchService->search(Input::all());
}
}
我app/libraries/Services/Directions
创建的服务并将其命名为DirectionsSearchService.php
并复制了我在路线中开发的所有逻辑:
class DirectionsSearchService {
public function search($input = array()) {
$origin = $input['origin'];
$destination = $input['destination'];
$mode = $input['mode'];
// do stuf...
return $data;
}
}
我读the docs和some place else(和this太),并做了我应该做的注册服务:
class DirectionsAPIController extends BaseController {
public function search() {
App::register('libraries\Services\Directions\DirectionsSearchService');
$directionsSearchService = new DirectionsSearchService();
return $directionsSearchService->search(Input::all());
}
}
// app/libraries/Services/Directions/DirectionsSearchService.php
use Illuminate\Support\ServiceProvider;
class DirectionsSearchService extends ServiceProvider {
}
我也试过在app/config/app.php
添加libraries\Services\Directions\DirectionsSearchService
到providers
阵列。
不过,我得到这个错误:
HP Fatal error: Class 'libraries\Services\Directions\DirectionsSearchService' not found in /home/user/www/my-app-laravel/bootstrap/compiled.php on line 549
我在做什么错?什么是通常的方式来使用自己的服务?我不想把所有的逻辑控制器...
友善的警告,你正在阅读Laravel 3文档在http://three.laravel.com/docs/models。自那以后,很多事情都发生了变化。 – Unnawut