2013-07-13 2 views
1

Я очень новичок в Fat-Free и Backbone.js. Я занимаюсь поиском и чтением статей и поиском и чтением статей, пытаясь найти способ маршрутизации к отдельным файлам PHP, содержащим связь с базой данных. Ниже приведен код, и я могу его использовать, но он кажется хакерским. Есть ли способ вызвать внешний PHP-файл (в каталоге server/models /) и конкретный метод из строки $ f3-route (...)?Использование 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

Ok Я нашел этот способ без жира для загрузки динамически динамически ... $ f3-> set ('AUTOLOAD', "server/models /"); Однако, это будет загружать _all_ модели в этой папке, поэтому я не уверен, что мне это нравится лучше, чем мой хак выше. – Locohost

+0

Вы можете использовать Composer для создания файла автозагрузки, который будет запрашивать ваши модели динамически, когда они понадобятся, больше информации здесь: [композитор аудиозагрузка] (http://getcomposer.org/doc/04-schema.md#autoload) – Ingro

+0

вы «Неправильно Locohost, он не будет« загружать все модели »мгновенно ... кроме того, он скажет функции spl_autoload_register для поиска в этом пути для классов, которые вы используете, но уже не был загружен. Таким образом, это AUTOLOADER ... если вы не используете один из файлов в этом пути, если не загружаете ничего ... поэтому вам не нужно беспокоиться. – ikkez

ответ

0

Вы должны добавить каталог server/models автозагрузчику F3, используя функцию autoloader.

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

Таким образом, необходимые исходные файлы ваших классов будут загружаться по требованию. Однако обратите внимание, что файлы должны иметь то же имя, что и ваш класс, т. Е. Класс Foo должен быть определен в foo.php или Foo.php. Случай с именем файла не имеет значения.