pakrchen / caravel
一个简单的PHP框架。
Requires
- php: >=5.3.0
- swiftmailer/swiftmailer: 5.3.*@dev
- symfony/console: 2.6.*@dev
This package is not auto-updated.
Last update: 2024-09-14 17:16:19 UTC
README
一个简单的PHP框架。(要快速构建Web应用,请参阅caravel-mvc)
如何使用Caravel框架
-
您需要在项目根目录下创建一个名为 "composer.json" 的文件。其中的内容如下。
{ "require": { "pakrchen/caravel": "dev-master" } }
-
然后在根目录下运行 "composer install",Composer将自动将其作为包获取框架。
如果您尚未在服务器上安装Composer,请安装它。Composer使您强大,您将肯定从各种其他优秀包中受益。
以下是Composer的安装说明:https://getcomposer.org/doc/00-intro.md#installation-nix。
-
您已获取框架的核心部分。做得好!现在在根目录下分别创建名为 "app" 和 "public" 的两个文件夹。
在 "public" 文件夹中,创建一个名为 "index.php" 的文件,这是您的Web应用的唯一入口。其中的内容如下。
<?php require_once dirname(__DIR__) . "/vendor/autoload.php"; $app = new Caravel\App(); $app->run();
在 "app" 文件夹中,创建一个名为 "controllers" 的文件夹来存储您的控制器,一个名为 "models" 的文件夹来存储您的模型,以及一个名为 "views" 的文件夹来存储您的视图。
没错!这就是我们所说的“MVC”结构。(请参阅caravel-mvc)
-
在Caravel框架中,我们在app目录中需要一个“custom.php”文件来接受您的自定义配置。
例如,下面的配置告诉框架您在哪里存储您的控制器和模型。这是必需的。
<?php use Caravel\App; use Caravel\Core\ClassLoader; use Caravel\Core\Log; /* |-------------------------------------------------------------------------- | Register The Class Loader |-------------------------------------------------------------------------- | | You may use the class loader to load your controllers and models. | This is useful for keeping all of your classes in the "global" namespace. | */ ClassLoader::addPaths(array( APP::getAppRoot() . "/controllers", APP::getAppRoot() . "/models", ))->register();
这意味着只要您在“custom.php”中定义它,您就可以更改存储控制器的文件夹名称。
显然,您还可以添加其他文件夹,如“libraries”,并让Caravel知道如何找到它。
此外,您还可以通过将这些代码附加到“custom.php”中定义应用程序日志的存储位置以及如何处理未捕获的异常。但是,这是可选的。
/* |-------------------------------------------------------------------------- | Application Error Logger |-------------------------------------------------------------------------- | | Here we will configure the error logger setup for the application. | By default we will build a basic log file setup which creates a single | file for logs. | */ Log::useFile("/tmp/caravel.log"); /* |-------------------------------------------------------------------------- | Application Error Handler |-------------------------------------------------------------------------- | | Here you may handle any errors that occur in your application, including | logging them or displaying custom views for specific errors. | */ App::error(function(Exception $e) { Log::exception($e); });
一个示例
我相信一个实际的例子比任何言语都好。
在caravel-mvc中提供了一个简单的示例。您可以在https://github.com/pakrchen/caravel-mvc中找到它,预览您的项目将是什么样子。强烈推荐。
为您提供的nginx配置
希望它能帮到您。但您可能需要根据您的环境进行调整。
server { listen 80; server_name your-domain; # eg. example.com root your-project-root-directory/public; # eg. /data/www/example/public index index.php; access_log where-you-store-access-log; # eg. /data/logs/example_access.log; error_log where-you-store-error-log; # eg. /data/logs/example_error.log; # Check if file exists if (!-e $request_filename) { rewrite ^/(.*)$ /index.php last; break; } location ~ \..*/.*\.php$ { # I'm pretty sure this stops people trying to traverse your site to get to other PHP files return 403; } location ~* \.php { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; } }