2013-07-13 36 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中定义。文件名的大小写无关紧要。