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

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中每个模块都是独立的作用域,模块中定义的变量和函数只能在该模块内部使用,如果要在其他模块中访问该模块中的变量或函数,必须通过导出对象来实现。

php 复制代码
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()函数来缓存输出。

php 复制代码
<?php

    use 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文件应该定义了版本号等相关信息。

php 复制代码
include './filename.php';

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

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

php 复制代码
include './subfolder/filename.php';

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

html 复制代码
<?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`表示与当前文件在同一目录下的一个文件。

  1. 使用相对路径:

```

<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。

php 复制代码
 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,
                    ],
                ],
            ]);
相关推荐
Elihuss4 小时前
ONVIF协议操作摄像头方法
开发语言·php
hopetomorrow19 小时前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
网络安全-杰克19 小时前
网络安全概论
网络·web安全·php
不是二师兄的八戒19 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
黑客Ela20 小时前
网络安全中常用浏览器插件、拓展
网络·安全·web安全·网络安全·php
蝶开三月1 天前
php:使用socket函数创建WebSocket服务
网络·websocket·网络协议·php·socket
Ai 编码助手1 天前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
wkj0011 天前
php操作redis
开发语言·redis·php
黑客Ash1 天前
【D01】网络安全概论
网络·安全·web安全·php
->yjy1 天前
计算机网络(第一章)
网络·计算机网络·php