PHP code example of dvaknheo / duckphp

1. Go to this page and download the library: Download dvaknheo/duckphp library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

dvaknheo / duckphp example snippets


 declare(strict_types=1);
/**
 * DuckPhp
 * From this time, you never be alone~
 */
ld";
    }
}
$options = [
    'namespace_controller' => "\\",   // 本例特殊,设置控制器的命名空间为根,而不是默认的 Controller
    // 还有百来个选项以上可用,详细请查看参考文档
];
\DuckPhp\Core\App::RunQuickly($options);


 declare(strict_types=1);
/**
 * DuckPHP
 * From this time, you never be alone~
 */

// 以下部分是核心工程师写。

namespace MySpace\System
{
    ends DuckPhp
    {
        // @override 重写
        public $options = [
            'is_debug' => true,
                // 开启调试模式
            'path_info_compact_enable' => true,
                // 开启单一文件模式,服务器不配置也能运行
            'ext' => [
                CallableView::class => true,
                // 默认的 View 不支持函数调用,我们开启自带扩展 CallableView 代替系统的 View
            ],
            'callable_view_class' => Views::class,
                // 替换的 View 类。
        ];
        // @override 重写
        protected function onInit()
        {
            //初始化之后在这里运行。
            //var_dump($this->options);//查看总共多少选项
        }
    }

} // end namespace
// 助手类

//------------------------------
// 以下部分由应用工程师编写, 和 DuckPhp 的类较弱。如果你有洁癖,还能再缩减。

namespace MySpace\Controller
{
    use DuckPhp\Foundation\Controller\Helper;
    use DuckPhp\Foundation\SimpleControllerTrait;
    use MySpace\Business\MyBusiness;

    class MainController
    {
        use SimpleControllerTrait;
        public function __construct()
        {
            // 在构造函数设置页眉页脚。
            Helper::setViewHeadFoot('header', 'footer');
        }
        public function action_index()
        {
            //获取数据
            $output = "Hello, now time is " . __h(MyBusiness::_()->getTimeDesc()); // html编码
            $url_about = __url('about/me'); // url 编码
            Helper::Show(get_defined_vars(), 'main_view'); //显示数据
        }
    }
    class aboutController
    {
        public function action_me()
        {
            $url_main = __url(''); //默认URL
            Helper::setViewHeadFoot('header', 'footer');
            Helper::Show(get_defined_vars()); // 默认视图 about/me ,可省略
        }
    }
} // end namespace

namespace MySpace\Business
{
    use MySpace\Model\MyModel;
    use DuckPhp\Foundation\Business\Helper;
    use DuckPhp\Foundation\SimpleBusinessTrait; //为了 Business::_() 可变单例。

    class MyBusiness
    {
        use SimpleBusinessTrait;
        
        public function getTimeDesc()
        {
            return "<" . MyModel::getTimeDesc() . ">";
        }
    }

} // end namespace

namespace MySpace\Model
{
    //use DuckPhp\Foundation\Model\Helper;
    use DuckPhp\Foundation\SimpleModelTrait;
    
    class MyModel
    {
        use SimpleModelTrait;
        
        public static function getTimeDesc()
        {
            return date(DATE_ATOM);
        }
    }
}
// 把 PHP 代码去掉看,这是可预览的 HTML 结构

namespace MySpace\View {
    class Views
    {
        public static function header($data)
        {
            extract($data); 

cd template
php ./duckphp-project run
text
.
├── config
│   ├── DuckPhpApps.config.php
│   └── DuckPhpSettings.config.php
├── duckphp-project
├── public
│   └── index.php
├── runtime
│   └── keepme.txt
├── src
│   ├── Business
│   │   ├── Base.php
│   │   ├── BusinessException.php
│   │   ├── CommonService.php
│   │   ├── DemoBusiness.php
│   │   └── Helper.php
│   ├── Controller
│   │   ├── Base.php
│   │   ├── CommonAction.php
│   │   ├── ControllerException.php
│   │   ├── ExceptionReporter.php
│   │   ├── Helper.php
│   │   ├── MainController.php
│   │   ├── Session.php
│   │   ├── dbtestControllert.php
│   │   └── testController.php
│   ├── Model
│   │   ├── Base.php
│   │   ├── CrossModelEx.php
│   │   ├── DemoModel.php
│   │   └── Helper.php
│   └── System
│       ├── App.php
│       ├── Helper.php
│       ├── Options.php
│       └── ProjectException.php
└── view
    ├── _sys
    │   ├── error_404.php
    │   └── error_500.php
    ├── files.php
    ├── main.php
    └── test
        └── done.php


server {
    root DUCKPHP_ROOT/template/public;
    index index.php index.html index.htm;
    
    try_files $uri $uri/ /index.php$request_uri;
    location ~ \.php {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.*\.php)(/.*)?$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;