2013-07-13 24 views
1

我對Fat-Free和Backbone.js非常陌生。我一直在搜索和閱讀文章,搜索和閱讀文章,試圖找到一種方法來路由到包含數據庫通信的各個PHP文件。下面的代碼工作,我可以使用它,但它似乎hackish。有沒有辦法從$ f3-route(...)行調用外部PHP文件(位於server/models /目錄中)和特定的方法?使用Fat-Free PHP進行Backbone.js與外部Model.php文件的路由

<?php 

// File: /index.php 

define("PATH",1); 

$f3 = require('server/fatfree/lib/base.php'); 

$uri = explode('/', $_SERVER["REQUEST_URI"]); 
require_once "server/models/{$uri[PATH]}.php"; 

$f3->route('GET /hello/@file', 'HelloModel->doSomething'); 
$f3->route('GET /project/@file', 'ProjectModel->doSomething'); 
$f3->route('GET /book/@file', 'BookModel->doSomething'); 

$f3->run(); 

?> 

非常感謝您的建議。

+0

好的,我發現這種無脂的方式來動態加載模型... $ f3-> set('AUTOLOAD',「server/models /」); 但是,這會加載該文件夾中的所有模型,所以我不確定我比上面的黑客更喜歡這種模式。 – Locohost

+0

您可以使用Composer生成一個自動載入文件,當需要的時候可以請求您的模型dinamically,更多信息在這裏:[composer audoload](http://getcomposer.org/doc/04-schema.md#autoload) – Ingro

+0

你它錯誤的Locohost,它不會立即「加載所有模型」......此外,它會告訴spl_autoload_register函數在該路徑中搜索正在使用的類,但尚未加載。所以它是一個AUTOLOADER ...如果你不使用這個路徑中的文件之一,如果不加載任何東西......所以,你不必擔心。 – ikkez

回答

0

您應該使用autoloader功能將server/models目錄添加到F3的自動裝載機。

$f3->set('AUTOLOAD','server/models/'); 

這樣,您所需的類的源文件將按需加載。但是請注意,這些文件的名稱必須與您的班級相同,即類別Foo必須在foo.phpFoo.php中定義。文件名的大小寫無關緊要。