pakrchen/caravel

一个简单的PHP框架。

dev-master 2020-04-28 13:40 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:16:19 UTC


README

一个简单的PHP框架。(要快速构建Web应用,请参阅caravel-mvc

如何使用Caravel框架

  1. 您需要在项目根目录下创建一个名为 "composer.json" 的文件。其中的内容如下。

    {
      "require": {
        "pakrchen/caravel": "dev-master"
      }
    }
    
  2. 然后在根目录下运行 "composer install",Composer将自动将其作为包获取框架。

    如果您尚未在服务器上安装Composer,请安装它。Composer使您强大,您将肯定从各种其他优秀包中受益。

    以下是Composer的安装说明:https://getcomposer.org/doc/00-intro.md#installation-nix

  3. 您已获取框架的核心部分。做得好!现在在根目录下分别创建名为 "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

  4. 在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;
  }
}