栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

PHP学习笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP学习笔记

第一节 准备工作 一.环境配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C8Yxa422-1633351695439)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210916185255649.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o4F8Hj9Y-1633351695442)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210916184628449.png)]

二.前言

1.PHP也是用于开发web应用程序的技术,优点是入门相对较快,框架封装相对高效,有一定的市场,有很多第三方的库

2.是B/S应用程序,所以脱离不了请求响应模型

3.PHP和JAVA不同

(1)Java会有一个运行Java技术的应用服务器,一般称之为容器,例如tomcat就是一个jsp或servlet的容器

(2)php运行时大多数依赖web server (用业界很成熟的Apache、Nginx),不同于Java会单独去开发一个类似tomcat。也就是说静态的东西:HTML网页,图像,样式表,脚本,都会由前端的web server作响应,但是只有对Apache、Nginx做一些相应的配置,比方说接收到PHP文件index.php,提到该请求就不由Apache、Nginx作响应了,它会丢到一个类似于插件(PHP可以理解为PHP的虚拟机),把index.php这种动态程序交给PHP处理,之后返回给Apache、Nginx 配插件的事交给phpstudy

三.步骤

1.启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JK38d2Fv-1633351695443)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210916194404895.png)]

2.给项目进行配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePJvUQrk-1633351695446)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210916234343684.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMFIX8sZ-1633351695447)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210917100454195.png)]

上面的index.html如果把后缀改为php,就变为动态文件了,就可以写php相关内容了,如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c8Lwu7Dt-1633351695447)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210917100616547.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OhuDLcn-1633351695448)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210916194815744.png)]

这个host文件对于当前操作系统来说可以不需要去查询外部的dns服务器.

意思是例如在地址栏里输入一个网址,原本输入网址后浏览器需要去查找外部的dns服务器(域名服务器),官方的运营商会有域名服务器,这些域名服务器又和国际上的十几个根服务器接上,也就是某个域名服务器上会找到此域名所对应的IP地址,找到IP地址就相当于定位了主机,然后就可以将请求发出去,这是浏览器的行为.

这个host文件也是配置域名和IP地址的

小知识

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9W5E7Ew-1633351695448)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210917102402593.png)]

这是输入数据库的命令

mysql -u root -p

第二节 基础知识 一.变量
  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

注:1.php最早就是用来写网络动态程序的,到如今已经是面向对象的特性与JAVA非常相似:继承,多态,接口等等

但php是弱类型的语言(脚本语言偏向于弱类型),JVAVA是强类型

2.运行php时可以通过网页形式去访问,也可以运行如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oFp9zswF-1633351695449)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210917133405514.png)]

因为该文件夹不是new出来的,而是从项目中打开,所以没有选择php的执行程序,相当于新建项目没有指定JDK一样

解决如下

注意一下

这里有问题没解决,settings里没有PHP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R8DJoRlr-1633351695450)(file:///C:UsersASUSdocumentsTencent Files2193434426ImageC2CImage1DXFS]WA7$CFP][B{@I{_}CA.png)]

二.数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ig6HofGb-1633351695450)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210917131925958.png)]

上述响应的是静态文件

三.类型比较
  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

字符串的拼接用 . (一个点号)

PHP_EOL; // 换行符

第三节 ThinkPHP开发手册解读

网址https://www.kancloud.cn/manual/thinkphp6_0/1037510

一.基础 二.架构 1.请求流程

对于一个HTTP应用来说,从用户发起请求到响应输出结束,大致的标准请求流程如下:

  • 载入Composer的自动加载autoload文件
  • 实例化系统应用基础类thinkApp
  • 获取应用目录等相关路径信息
  • 加载全局的服务提供provider.php文件
  • 设置容器实例及应用对象实例,确保当前容器对象唯一
  • 从容器中获取HTTP应用类thinkHttp
  • 执行HTTP应用类的run方法启动一个HTTP应用
  • 获取当前请求对象实例(默认为 appRequest 继承thinkRequest)保存到容器
  • 执行thinkApp类的初始化方法initialize
  • 加载环境变量文件.env和全局初始化文件
  • 加载全局公共文件、系统助手函数、全局配置文件、全局事件定义和全局服务定义
  • 判断应用模式(调试或者部署模式)
  • 监听AppInit事件
  • 注册异常处理
  • 服务注册
  • 启动注册的服务
  • 加载全局中间件定义
  • 监听HttpRun事件
  • 执行全局中间件
  • 执行路由调度(Route类dispatch方法)
  • 如果开启路由则检查路由缓存
  • 加载路由定义
  • 监听RouteLoaded事件
  • 如果开启注解路由则检测注解路由
  • 路由检测(中间流程很复杂 略)
  • 路由调度对象thinkrouteDispatch初始化
  • 设置当前请求的控制器和操作名
  • 注册路由中间件
  • 绑定数据模型
  • 设置路由额外参数
  • 执行数据自动验证
  • 执行路由调度子类的exec方法返回响应thinkResponse对象
  • 获取当前请求的控制器对象实例
  • 利用反射机制注册控制器中间件
  • 执行控制器方法以及前后置中间件
  • 执行当前响应对象的send方法输出
  • 执行HTTP应用对象的end方法善后
  • 监听HttpEnd事件
  • 执行中间件的end回调
  • 写入当前请求的日志信息

至此,当前请求流程结束。

总结来说

我们要写的代码就在controller层,控制器里会调用一堆的公共函数,或业务、模型之类。控制器的return如果是HTML代码,则直接返回输出;此外,也可以返回模板,使用调用模板,把数据传给模板,然后模板生成HTML代码。如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x5BMvcyy-1633351695451)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210922212422517.png)]

如果是多应用的话则可以有多个入口文件:在public目录下可以写多个入口文件,将其转到不同的应用下即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4CkvGTQy-1633351695451)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210922215846260.png)]

2.入口文件

https://www.kancloud.cn/manual/thinkphp6_0/1037487

三.路由 四.控制器 1.控制器定义

控制器文件通常放在controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)

如果要改变controller目录名,需要在route.php配置文件中设置:

'controller_layer'    =>    'controllers',

默认就会有一个index.php如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8B8beTeI-1633351695452)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210920081048609.png)]

默认这个index的控制器里有index的动作,如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOCGcRnL-1633351695453)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210920081157409.png)]

(1)单应用模式

如果使用的是单应用模式,那么控制器的类的定义如下:

 
(2)多应用模式 

多应用模式下,控制器类定义仅仅是命名空间有所区别,例如:

 

控制器类文件的实际位置是

appshopcontrollerUser.php

访问URL地址是(假设没有定义路由的情况下)

http://localhost/index.php/shop/user/login
(3)渲染输出

默认情况下,控制器的输出全部采用return的方式,无需进行任何的手动输出,系统会自动完成渲染内容的输出。

控制器一般不需要任何输出,直接return即可。并且控制器在json请求会自动转换为json格式输出。

不要在控制器中使用包括die、exit在内的中断代码。如果你需要调试并中止执行,可以使用系统提供的halt助手函数。

halt('输出测试');

注:JSON的全称是”Javascript Object Notation”,意思是Javascript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(Javascript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。这篇文章主要从以下几个方面来说明JSON。

(4)多级控制器

由于URL访问不能访问默认的多级控制器(可能会把多级控制器名误识别为URL后缀),因此建议所有的多级控制器都通过路由定义后访问,如果要在路由定义中使用多级控制器,可以使用:

Route::get('user/blog','user.blog/index');
2.基础控制器

大多数情况下,我们建议给你的控制器继承一个基础控制器。

默认安装后,系统提供了一个appbaseController基础控制器类,你可以对该基础控制器进行修改。

注:继承可以实现依赖注入

之后自己定义的控制器都继承这个默认安装好的baseController

该基础控制器仅仅提供了控制器验证功能,并注入了thinkApp和thinkRequest对象,因此你可以直接在控制器中使用app和request属性调用thinkApp和thinkRequest对象实例,下面是一个例子:

namespace appcontroller;

use appbaseController;

class Index extends baseController
{
    public function index()
    {
        $action = $this->request->action();
        $path = $this->app->getbasePath();
    }
}
(1)控制器验证

基础控制器提供了数据验证功能,使用如下:

namespace appcontroller;

use appbaseController;
use thinkexceptionValidateException;

class Index extends baseController
{
    public function index()
    {
        try {
            $this->validate( [
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ],  'appindexvalidateUser');
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }
    }
}
3.空控制器

空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位当前应用下的空控制器(Error)类,利用这个机制我们可以用来定制错误页面和进行URL的优化。

解决的问题就是防止用户输入时输入了没有定义的控制器,即会跳转到该页面

4.资源控制器 5.控制器中间件

类似于spring中的切面编程的通知

中间件会在处理请求时预先做出一些设置

支持为控制器定义中间件,你只需要在你的控制器中定义middleware属性,例如:

 
五.视图 

注意

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hOvojc52-1633351695453)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210920092004193.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RgelIXuV-1633351695454)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210920092051976.png)]

1.模板变量 (1)助手函数

如果使用view助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值:

return view('index', [
    'name'  => 'ThinkPHP',
    'email' => 'thinkphp@qq.com'
]);

助手函数的变量赋值也是当次模板渲染有效。

模板引擎

使用模板去输出页面

新版框架默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。

composer require topthink/think-view

下载后如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMay1Qtj-1633351695454)(C:UsersASUSAppDataRoamingTyporatypora-user-imagesimage-20210920091718914.png)]

-1633351695453)]

[外链图片转存中…(img-RgelIXuV-1633351695454)]

1.模板变量 (1)助手函数

如果使用view助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值:

return view('index', [
    'name'  => 'ThinkPHP',
    'email' => 'thinkphp@qq.com'
]);

助手函数的变量赋值也是当次模板渲染有效。

模板引擎

使用模板去输出页面

新版框架默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。

composer require topthink/think-view

下载后如下

[外链图片转存中…(img-WMay1Qtj-1633351695454)]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291653.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号