php自学【笔记一】结合实战-读代码 学知识

<?php// [ 应用入口文件 ]
namespace think;if(version_compare(PHP_VERSION,'7.2.0','<')) {die('HkCms开源内容管理系统要求PHP版本 >= 7.2.0,当前PHP版本为:'.PHP_VERSION.',请更换PHP版本后再试!');
}if (file_exists(__DIR__ . '/../app/install/') && !file_exists(__DIR__ . '/../app/install/install.lock')) {header("location:/install.php");exit;
}require __DIR__ . '/../vendor/autoload.php';// 执行HTTP应用并响应
$http = (new App())->http;$response = $http->run();$response->send();$http->end($response);

PHP_VERSION是一个内置的常量,用于获取当前PHP解释器的版本号。它是一个字符串类型的常量,包含了PHP的主版本号、次版本号以及修订版本号。例如,当前PHP版本号为7.4.9,那么PHP_VERSION的值就是字符串"7.4.9"。通过使用PHP_VERSION常量,可以在PHP代码中获取当前运行环境的PHP版本号,以此来决定采用哪些特性或者避免一些已知的问题。

`__DIR__` 是一个魔术常量,表示当前执行脚本的目录。它可以用于获取当前脚本所在目录的绝对路径。需要注意的是,它返回的路径末尾没有斜杠。如果需要获取当前脚本所在目录的上级目录,可以使用 `dirname(__DIR__)`。

`version_compare`是一个PHP函数,用于比较两个版本号的大小。它可以用于判断是否需要升级或者比较软件的版本号等场景。

该函数的语法如下:

```
int version_compare ( string $version1 , string $version2 [, string $operator ] )
```

其中,`$version1`和`$version2`是要比较的两个版本号,可以是字符串类型;`$operator`是可选参数,用于指定比较运算符,返回结果为-1、0或1,分别表示$version1小于、等于或大于$version2。

例如,以下是使用`version_compare`函数比较两个版本号的示例:

```php
echo version_compare("1.2.3", "1.2.2"); // 1
echo version_compare("1.2.3", "1.3.0"); // -1
echo version_compare("1.2.3", "1.2.3"); // 0
```

这里第一个比较返回1,表示"1.2.3"大于"1.2.2";第二个比较返回-1,表示"1.2.3"小于"1.3.0";第三个比较返回0,表示"1.2.3"等于"1.2.3"。如果省略第三个参数,则默认使用等于号(==)进行比较。

`file_exists`是PHP语言中的一个函数,它用于判断指定文件或目录是否存在。如果文件或目录存在则返回`TRUE`,否则返回`FALSE`。该函数可以用于检查文件或目录是否存在,以及检查PHP脚本所需的文件是否已经加载等情况。

语法:`bool file_exists ( string $filename )`

其中,`filename`参数是要检查的文件或目录的路径和名称。

示例:

```php
$file = 'example.txt';
if (file_exists($file)) {
    echo "文件存在";
} else {
    echo "文件不存在";
}
```

require是JavaScript中用于引入模块的关键字,它可以将其他JavaScript文件中定义的变量、函数、类等引入到当前文件中使用。在Node.js中,require函数是全局可用的,通过require可以加载其他Node.js模块,例如Node.js自带的核心模块和第三方模块。在浏览器中,如果使用了一些模块打包工具(如Webpack、Browserify等),也可以使用require函数来加载其他JavaScript模块。

当我们在一个JavaScript文件中需要引用其他文件中定义的变量或函数时,可以使用require来实现模块的导入。require函数接受一个参数,即要加载的模块路径,它可以是相对路径或绝对路径。如果是相对路径,会相对当前文件所在目录来解析;如果是绝对路径,则会从根目录开始解析。当我们引用一个模块时,require会自动帮我们执行该模块,并返回该模块的导出对象,我们可以通过该对象来访问该模块中定义的变量和函数。

需要注意的是,为了防止模块之间出现变量名冲突等问题,在Node.js中每个模块都是独立的作用域,模块中定义的变量和函数只能在该模块内部使用,如果要在其他模块中访问该模块中的变量或函数,必须通过导出对象来实现。

if (file_exists(__DIR__ . '/../app/install/') && !file_exists(__DIR__ . '/../app/install/install.lock')) {header("location:/install.php");//exit;
}

这段代码是PHP中的重定向功能,它会将用户的浏览器重定向到指定的URL,这里是将用户重定向到/install.php页面。通过这种方式,我们可以在特定的情况下将用户从当前页面重定向到其他页面,例如在用户未登录时将其重定向到登录页面。这种技术也被称为HTTP重定向。

在PHP中,使用exit;可以直接终止当前脚本的执行;

header("location:install.php"); 是PHP中的一个重定向函数,它将当前页面重定向到指定的页面。在这个例子中,它会将当前页面重定向到install.php页面,这通常用于在网站安装或者用户登录验证等场景下跳转到指定页面。

需要注意的是,在调用header函数之前不能有任何输出,包括空格和换行符等,否则会导致header函数调用失败。因此,如果出现header函数无法正常跳转的情况,可以尝试检查前面是否有输出或者添加ob_start()函数来缓存输出。

<?phpuse GuzzleHttp\Client;use think\facade\Db;// 获取版本信息$ver = include ROOT_PATH.'config/ver.php';$Title   = $ver['cms_app'];$Powered = 'Powered by hkcms.cn';$version = $ver['cms_version'];$cms_build = $ver['cms_build'];$step = isset($_GET['step']) ? intval($_GET['step']) : 1;

$ver = include ROOT_PATH.'config/ver.php'是一条PHP代码,它的作用是引入并执行指定路径下的ver.php文件,并将该文件返回的值赋给$ver变量。在此过程中,$ver变量可以被用于输出版本号等相关信息。其中ROOT_PATH是一个常量,表示根目录路径。在该路径下的config文件夹中的ver.php文件应该定义了版本号等相关信息。

include './filename.php';

在 PHP 中,可以使用相对路径来访问当前层级下的文件。如果您需要访问当前层级下的文件,可以使用以下代码:

其中,“./” 表示当前层级。您需要将 “filename.php” 替换为您需要访问的文件名。如果您需要访问当前层级下的子文件夹中的文件,可以使用相对路径的方式访问,例如:

include './subfolder/filename.php';

这样就可以访问当前层级下名为 “subfolder” 的文件夹中的 “filename.php” 文件了。

<?php if (empty($errorInfo)):?><a href="./install.php?step=3" class="submit-btn ml-2">下一步</a><?php endif;?>

HTML中的<a>元素可以用于创建超链接。如果要访问同级目录路径,可以使用相对路径。相对路径是相对于当前文件所在的目录而言的,有两种方式来表示同级目录路径:

1. 直接使用文件名作为链接文本:

```
<a href="file.html">Link to file.html</a>
```

这里的`file.html`表示与当前文件在同一目录下的一个文件。

2. 使用相对路径:

```
<a href="./file.html">Link to file.html</a>
```

这里的`./`表示当前目录,所以`./file.html`也表示与当前文件在同一目录下的一个文件。

还可以使用`../`表示上一级目录,例如:

```
<a href="../file.html">Link to file.html in parent directory</a>
```

这里的`../`表示上一级目录,所以`../file.html`表示与当前文件在同一级别的上一级目录下的一个文件。

isset($_POST['test'])是一个PHP函数,用于判断是否存在名为"test"的POST参数。在Web开发中,当用户提交表单时,表单数据将通过POST方式发送给服务器,而$_POST是一个包含所有POST参数的关联数组。通过isset($_POST['test'])函数,我们可以判断是否存在名为"test"的POST参数,并做出相应的处理。如果存在,函数返回true,否则返回false。

 if (isset($_POST['test'])) {header('Content-Type: application/json; charset=UTF-8');// 测试数据库$res = ['code' => -1000, 'msg' => ''];$dbuser = $_POST['dbuser'] ?? '';$dbpw = $_POST['dbpw'] ?? '';$dbhost = $_POST['dbhost'] ?? '';$dbport = $_POST['dbport'] ?? '';$dbname = $_POST['dbname'] ?? '';Db::setConfig([// 默认数据连接标识'default'     => 'mysql',// 数据库连接信息'connections' => ['mysql' => [// 数据库类型'type'     => 'mysql',// 主机地址'hostname' => $dbhost,// 端口'hostport' => $dbport,// 用户名'username' => $dbuser,// 密码'password' => $dbpw,// 数据库调试模式'debug'    => true,],],]);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万字长文,小白新手怎么开始做YOLO实验,从零开始教!整体思路在这里,科研指南针!

最近专栏来了很多的新手小白&#xff0c;对科研实验的过程感到困惑和无从下手&#xff0c;这篇文章就来讲解一下整体的科研流程&#xff0c;从选择数据集到发表论文的各个步骤&#xff0c;并针对大家在实验中常犯的错误进行解答。并且为大家提供通向我其他相关博客的指引&#…

激光焊接机作为一种高效、精密的焊接设备

激光焊接机是一种用于材料加工时激光焊接的机器&#xff0c;以下是对其的详细介绍&#xff1a; 1. 定义与别称&#xff1a; 激光焊接机&#xff0c;又常称为激光焊机、镭射焊机&#xff0c;是材料加工激光焊接时用的机器。 2. 工作原理&#xff1a; 激光焊接是利用高能量…

【面试】Java的前端编译器和后端编译器

目录 1. 说明2. 前端编译器2.1 主要功能2.2 工作原理 3. 后端编译器3.1 主要功能3.2 工作原理 1. 说明 1.在Java的编译过程中&#xff0c;编译器通常被划分为前端编译器和后端编译器&#xff0c;各自负责不同的任务。2.前端编译器主要负责源代码的词法分析、语法分析和语义检查…

【计算机毕业设计】345大学生心理健康测评管理系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Sass它是什么?有什么功能和特性?它值不值得我们去学习?我们该如何去学习呢?

Sass是一种强大的CSS预处理器&#xff0c;通过增加一些额外的功能和语法&#xff0c;使得CSS代码更加模块化、可维护和易于编写。 Sass具有以下特点&#xff1a; 1. 变量&#xff1a;可以定义变量来存储颜色、字体大小、间距等属性值&#xff0c;以便在整个样式表中重复使用。…

【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)

1. 二叉树的概念 (1). 二叉树的结构 借用了一下力扣的模板 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.righ…

Linux下的Git应用

1、卸载 2、安装 3、创建并初始化 4、配置 &#xff08;附加删除语句&#xff09; 5、查看&#xff08;tree .git/&#xff09; 6、增加和提交 7、打印日志 8、验证已操作工作

函数指针用法详解

函数指针: 所谓函数指针, 就是指向函数的指针 一. 声明方式 函数指针"类型"声明 typedef void (*fp)(int, int) typedef 返回类型 (*类型名称)(参数...) 举例: void test(int x, int y) {cout << x << , << y << endl; }int main() {//…

公告:公众号铁粉粉丝介绍以及说明

大家好&#xff0c;我是公众号博主--夏目 机械电气电机杂谈是我个人建立&#xff0c;为分享机械&#xff0c;电气&#xff0c;电机知识为主&#xff0c;闲谈杂聊社会时事&#xff0c;职场见闻&#xff0c;生活琐事&#xff0c;成长趣事&#xff0c;学习心得&#xff0c;读书观影…

C#WPF数字大屏项目实战06--报警信息

1、ItemsControl 简介 ItemsControl 是用来表示一些条目集合的控件&#xff0c;所以它叫条目控件&#xff0c;它的成员是一些其它控件的集合&#xff0c;其继承关系如下&#xff1a; 其常用的派生控件为&#xff1a;ListBox、ListView、ComboBox&#xff0c;为ItemsCo…

vue3开发高德地图

在vue3的index.html 使用动态注入地址名和key <html lang"en"><head><meta charset"UTF-8" /><link rel"icon" type"image/svgxml" href"/vite.svg" /><meta name"viewport" conten…

【debian】常用指令

Debian是一个广受欢迎的自由和开源的操作系统&#xff0c;它使用Linux内核或者FreeBSD内核。Debian以其稳定性和安全性而闻名&#xff0c;是许多其他发行版如Ubuntu的基础。本文将介绍一些Debian系统中常用的命令&#xff0c;帮助用户更有效地使用和管理他们的Debian系统。 ap…

高可用数据库架构:互备(Multi-Master)技术详解

大家好,我是你们的小米,今天咱们来聊聊分布式系统中的一种重要容错机制——互备(Multi-Master)。这个话题可是技术圈里一个大热门,特别是在咱们追求高可用性和可靠性的数据库系统中,互备机制发挥着举足轻重的作用。今天就让小米带你一探究竟,详细了解一下互备的原理、应…

充电宝怎么选?充电宝目前什么牌子质量好耐用?盘点好用充电宝

充电宝怎么选&#xff1f;是不是很多朋友在选充电宝上非常的纠结&#xff1f;在买充电宝上面还是非常有讲究的&#xff01;市面上的充电宝虽然多&#xff0c;但是不排除很多存在安全隐患的&#xff0c;如果稍微没有挑选好充电宝的话&#xff0c;买来的充电宝极大可能是存在非常…

在 Kubesphere 中开启新一代云原生数仓 Databend

上周六&#xff0c;由 KubeSphere 社区联合 Databend 社区以及纵目科技共同组织的云原生 Meetup 北京站在北京圆满落幕。本次 Meetup 活动邀请到了 SkyWalking PMC 成员、青云科技架构及可观测性团队负责人、江苏纵目科技 APM 研发总监、青云科技容器产品经理、数元灵科技 CTO …

私有云也想要cdn加速服务怎么办?

提问&#xff1a;一个系统用的是OSS的私有云。云地址是bansheng.cdn.com/learn/2024/ww.mp4 &#xff0c;bansheng.cdn.com是cdn加速服务。 这时候通过cdn解析 将bansheng.cdn.com 外网解析到bansheng.cdn.learn.com 内网解析到oss 的bucke域名bansheng-shenzhen.aliyuncs.com …

[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

AWS需要实名吗?

AWS作为全球领先的云计算服务提供商&#xff0c;对于实名认证有着严格的要求。实名认证是指用户在使用AWS服务时需要提供真实有效的个人身份信息&#xff0c;以便AWS能够对用户的身份进行验证和管理。对于AWS而言&#xff0c;实名认证是确保用户安全和服务质量的重要环节&#…

Java——类型转换

一、类型转换 1、介绍 类型转换分为自动类型转换和强制类型转换。 2、自动类型转换 自动类型转换是指在表达式中&#xff0c;当两种不同的数据类型组合在一起时&#xff0c;较小的数据类型会自动转换为较大的数据类型&#xff0c;这个过程是自动的&#xff0c;无需编程者手…

内网穿透(Intranet Penetration)

内网穿透&#xff08;Intranet Penetration&#xff09;是一种网络技术&#xff0c;用于在局域网&#xff08;LAN&#xff09;或内部网络中访问或连接另一个局域网或外部网络的设备或服务。内网穿透技术旨在克服局域网内部设备无法直接通过公共互联网访问的限制&#xff0c;使得…