laminas应用程序创建与使用

本文详细介绍了如何使用Composer安装Laminas框架,配置镜像加速安装,创建并配置自定义控制器、路由规则,以及设置视图管理。通过实例演示了如何在本地开发环境中构建一个基本的Laminas应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • laminas中文官方文档

  • 1、安装composer工具和git,自行官网下载即可

  • 2、使用composer创建laminas项目(速度太慢可以选择阿里云或者腾讯云的镜像)

    composer create-project -s dev laminas/laminas-mvc-skeleton /安装路径
    // 如果出现安装错误(例如:Your requirements could not be resolved to an installable set of packages 依赖安装错误)
    // 可以进入项目目录下,然后修改composer.json文件中("description": "Laminas MVC Skeleton Application",)后添加或者修改选项配置("minimum-stability": "dev","prefer-stable": true,),执行以下命令安装缺失的依赖项文件
    composer update
    // 以上解释:在项目的 composer.json 文件中设置 minimum-stability 为 dev,是为了允许 Composer 安装开发版的包。同时,使用 "prefer-stable": true 以确保当稳定版可用时,Composer 会优先选择稳定版。
      
    // 配置 composer 镜像
    // 阿里云
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    
    // 腾讯云
    composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
    
    // 还原配置
    composer config -g --unset repos.packagist
    
  • 3、cd切换到laminas项目目录下并启动内置web开发服务器(在项目路径的cmd下):

    php -S 0.0.0.0:8080 -t public public/index.php
    // 或
    php -S 0.0.0.0:8080 -t public public/
    // 或
    php -S 127.0.0.1:8080 -t public public/index.php
    // 或
    php -S localhost:8080 -t public public/index.php
    
  • 或者选择使用xampp自带的apache服务访问(laminas项目放在htdocs目录下,这样才能被Apache服务自动加载到)

创建新的控制器(正式使用):

  • 在 项目目录/module/Application/src/Controller/ 下创建新的控制器文件:TestController.php

    <?php
    namespace Application\Controller;
    use Laminas\Mvc\Controller\AbstractActionController;
    use Laminas\View\Model\ViewModel;
    class TestController extends AbstractActionController
    {
        public function indexAction(): ViewModel
        {
            return new ViewModel();
        }
    }
    
  • 在 项目目录/module/Application/view/application/ 下创建目录和文件 test/index.phtml

    <?php
    echo "创建新页面控制器成功";
    
  • 在 项目目录/module/Application/config/module.config.php文件中修改路由规则

    <?php
    // PHP 中的严格模式声明,表示启用严格类型检查
    declare(strict_types=1);
    //定义了当前文件中的代码属于 Application 命名空间。
    namespace Application;
    // 引入Laminas\Router\Http\Literal 类,用于定义基于 URI 字符串的路由规则。
    use Laminas\Router\Http\Literal;
    //引入了 Laminas\Router\Http\Segment 类,用于定义基于 URI 片段的路由规则。
    use Laminas\Router\Http\Segment;
    //引入了 Laminas\ServiceManager\Factory\InvokableFactory 类,用于创建控制器的工厂
    use Laminas\ServiceManager\Factory\InvokableFactory;
    //定义了一个数组,包含了模块的路由、控制器和视图管理配置
    return [
        // 定义了路由配置,包括不同路由规则的设置。
        'router' => [
            // 定义了具体的路由规则
            'routes' => [
                // 定义了一个名为 home 的路由规则,使用Literal类型(适合用于精确匹配固定的URI路径,不包含变量部分),表示根路径 / 的访问
                'home' => [
                    'type'    => Literal::class,
                    'options' => [
                        'route'    => '/',
                        'defaults' => [
                            'controller' => Controller\IndexController::class,
                            'action'     => 'index',
                        ],
                    ],
                ],
                // 定义了一个名为 application 的路由规则,使用Segment类型(适合用于定义包含变量的动态路径,可以根据变量值执行不同的操作),表示 /application 路径的访问
                'application' => [
                    'type'    => Segment::class,
                    'options' => [
                        'route'    => '/application[/:action]',
                        'defaults' => [
                            'controller' => Controller\TestController::class,
                            'action'     => 'index',
                        ],
                    ],
                ],
                // 新增路由规则,定义了一个名为 test 的路由规则,使用 Literal 类型,表示 /test 路径的访问。
                'test' => [
                    'type'    => Literal::class,
                    'options' => [
                        'route'    => '/test',
                        'defaults' => [
                            'controller' => Controller\TestController::class,
                            'action'     => 'index',
                        ],
                    ],
                ],
            ],
        ],
        // 定义了控制器配置,包括控制器类和工厂的映射
        'controllers' => [
            // 定义了控制器类和对应的工厂类,用于实例化控制器
            'factories' => [
                Controller\IndexController::class => InvokableFactory::class,
                Controller\TestController::class => InvokableFactory::class,
            ],
        ],
        // 定义了视图管理配置,包括视图模板的设置和路径。
        'view_manager' => [
            // 设置是否显示未找到原因的错误信息
            'display_not_found_reason' => true,
            // 设置是否显示异常信息
            'display_exceptions'       => true,
            // 设置文档类型为 HTML5。
            'doctype'                  => 'HTML5',
            // 设置未找到页面的模板。
            'not_found_template'       => 'error/404',
            // 设置异常页面的模板
            'exception_template'       => 'error/index',
            // 定义了模板文件的映射关系,将模板文件名映射到实际文件路径
            'template_map' => [
                'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
                'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
                'error/404'               => __DIR__ . '/../view/error/404.phtml',
                'error/index'             => __DIR__ . '/../view/error/index.phtml',
            ],
            // 定义了模板文件的路径栈,用于查找模板文件的路径
            'template_path_stack' => [
                __DIR__ . '/../view',
            ],
        ],
    ];
    
    
  • 访问本地配置的路由规则,查看是否正确显示:https://localhost:82/laminasProduct/public/test

  • 显示结果:
    在这里插入图片描述
    在这里插入图片描述

到此,已经完成了基础内容,也了解了如何创建一个自定义路由控制器并且映射页面到网站。

进阶(cookie,session,国际化自动翻译等)实战内容正在准备中…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值