码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间


    PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间

    • 前言
    • 什么是PSR-4
    • 应用场景
    • PSR-4解析
      • 小疑问
      • 结论
    • 自定义命名空间
    • 结果
    • 结束语

    前言

    公司业务需要转学PHP,而PHP中一个功能强大且生态链完整的PHP接口框架 PhalAPI
    值得大家去学习,本学习笔记持续更新!
    虽然官方文档写的十分明白,以及CSDN中PhalAPI框架内容也少之又少。
    因此,以自我踩坑为基础,提供一个更为精简的学习笔记,本学习笔记将会省略部分安装及简单操作。

    什么是PSR-4

    简单来说就是一种规范,autoload自动加载规范,定义命名空间与路径的映射关系

    应用场景

    • 一般用于Composer依赖管理中配置项,配置自动加载路径,从而满足映射关系

    PSR-4解析

    打开PhalAPI下:composer.json文件。

    找到autoload项配置 (默认状态)

    	"autoload" : {
    		"files" : [
    			"src/app/functions.php",
    		],
    		"psr-4" : {
    			"App\\" : "src/app",
    			"Portal\\" : "src/portal",
    		}
    	},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    其中可以观察到下面拥有psr-4的配置项下有着两项配置!

    • App : src/app

    • Portal : src/portal

    App 以及 Portal则是外部命名空间名称 参数值则为:实际路径位置

    上图!
    图片

    由此可以推断出,外部命名空间App的映射地址则是src/app
    portal以此类推

    小疑问

    问:我们既然知道规律了,但这个命名空间在何处使用呢?

    答:观察App/Api/任意php文接口 或Portal/Api/任意php接口,观察仔细变化在这里插入图片描述
    在这里插入图片描述

    结论

    经过两轮筛查发现,在composer中 autoload的命名空间必须与该映射地址下的php文件的命名空间一致

    那么我们直接开始自定义我们的命名空间和路径映射吧!

    自定义命名空间

    复制一份App下所有文件,更名为demo同时更改php接口文件命名空间
    在这里插入图片描述

    修改composer.json中的autoload

    	"autoload" : {
    		"files" : [
    			"src/app/functions.php",
    			"src/app/common.php"
    		],
    		"psr-4" : {
    			"App\\" : "src/app",
    			"Portal\\" : "src/portal",
    			"Demo\\" : "src/demo",
    		}
    	},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    还没完,重点来了,你现在跑该接口是跑不通的,我们还需要在 composer 输入 composer update 修改自动注入

    随后浏览器跳转:http://127.0.0.1/phalapi/public/?s=Demo.HelloWorld.Index

    结果

    在这里插入图片描述

    结束语

    关于 PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间 就讲到这里,对你有帮助的话!

    • 点赞
    • 收藏

    谢谢你的观看!

  • 相关阅读:
    告警:线上慎用 BigDecimal ,坑的差点被开了
    网站使用谷歌登录 oauth java nuxt auth
    机器人与AGI会撞出什么火花?
    OSG第三方库编译之三十六:Protobuf编译(Windows、Linux、Macos环境下编译)
    切面编程@Aspect 获取 url参数 + requestBody参数
    Ubuntu Linux玩童年小霸王插卡游戏
    element-tiptap和vuedraggable的拖拽冲突
    Ubuntu下运行adb devices找不到设备的问题
    【CV】第 5 章:图像分类的迁移学习
    【Windows Server 2019】存储服务器的配置和管理——iSCSI的安装和配置(下)
  • 原文地址:https://blog.csdn.net/qq_33638188/article/details/125539311
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号