最新消息:

学习猿地MVC商城自学,第11集: 搭建自定义框架的控制器笔记

MVC商城自学 59PHP_COM 32浏览 0评论

demo.php

<?php
namespace admin;
use controllersBaseControllers

class Demo extends BaseControllers {
function index(){
echo "index ......";

$this->success('/home',"成功");
}
function add(){
echo "add ......";
$this->success('/home/add',"失败");
}
}

BaseController.php

<?php
    namespace controllers;
    class BaseControllers{
        protected function success($url,$mess){
            echo "<script>";
            echo "alert('{$mess}')";
            if (!empty($url)){
                echo "location.href='{$url}'";
            }
            echo "</script>";
        }

        protected function error($url,$mess){
            echo "<script>";
            echo "alert('ERROR:{$mess}')";
            if (!empty($url)){
                echo "location.href='{$url}'";
            }
            echo "</script>";
        }
    }

composer.json

{
    "require": {
        "noahbuscher/macaw": "dev-master"
    },
    "autoload": {
        "psr-4": {
            "admin" : "app/controllers/admin/",
            "home" : "app/controllers/home/",
            "controllers" : "app/controllers/"
        }
    }
}

index.php

<?php             
//包含组件库           
require('vendor/au
use NoahBuscherMa
Macaw::get('/',fun
    echo "11111111
});               
                  
Macaw::get('/(:num
    echo "11111111
});               
                  
Macaw::get('/hello
    echo "22222222
});               
                  
    Macaw::get("/a
    Macaw::get("/a
                  
    Macaw::get("/h
    Macaw::get("/h
                  
                  
Macaw::dispatch();

需要了解的PHP知识

我去找AI帮我整理

 

该 PHP 代码示例主要应用了以下核心知识点:

 

  1. 命名空间(Namespace)
    通过namespace adminnamespace controllers分别声明命名空间,实现了代码逻辑的分层管理。使用use controllersBaseControllers引入其他命名空间的类,符合 PSR-4 自动加载规范。
  2. 面向对象编程(OOP)
    • 类继承:Demo类继承BaseControllers,体现了子类复用父类方法(如success/error)的特性。
    • 访问控制:protected修饰符限制方法仅在类内部或子类中调用,符合封装原则。
    • 方法调用:$this->success()展示了类内部通过$this指针调用继承方法。
  3. 前端交互逻辑
    BaseControllers中通过输出<script>标签,结合alert()location.href实现弹窗提示与页面跳转,体现了 PHP 生成动态前端脚本的能力。
  4. 流程控制
    使用if (!empty($url))进行条件判断,控制是否输出页面跳转逻辑,展示了基础的条件分支结构。
  5. 基础语法
    包含echo输出语句、方法参数传递、字符串拼接(如alert('{$mess}')的变量插值语法)等 PHP 基础操作。

 

代码问题提示
实际代码中存在两处需修正:

 

  • use controllersBaseControllers应改为use controllersBaseControllers(缺少反斜杠分隔符)
  • success/error方法中的字符串插值需确保使用双引号包裹(如echo "alert('{$mess}')"),否则变量无法解析。

 

User::make() 是 PHP 中的一个静态方法调用。以下是与该代码相关的 PHP 知识点:

1. 静态方法

  • User::make() 中的 :: 是范围解析操作符(也称为双冒号),用于调用类的静态方法或访问静态属性。
  • 静态方法属于类本身,而不是类的实例。因此,可以直接通过类名调用,而不需要创建对象。
  • 静态方法通常用于工具函数、工厂方法(如 make())或单例模式。
class User {
    public static function make() {
        return new self();
    }
}

$user = User::make(); // 调用静态方法

2. 工厂方法

  • make() 是一个常见的工厂方法名称,用于创建并返回类的实例。
  • 工厂方法可以封装对象的创建逻辑,方便统一管理对象的初始化过程。
class User {
    public static function make($name) {
        $user = new self();
        $user->setName($name);
        return $user;
    }

    private function setName($name) {
        $this->name = $name;
    }
}

$user = User::make("John");

 

 

命名空间相关视频:

https://www.bilibili.com/video/BV1Zx411R7Wv/

转载请注明:59PHPER学习之路 » 学习猿地MVC商城自学,第11集: 搭建自定义框架的控制器笔记

与本文相关的文章

  • 暂无相关文章!
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址