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,
                    ],
                ],
            ]);
相关推荐
JaguarJack11 小时前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo11 小时前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack1 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo1 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack2 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay3 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954483 天前
CTF 伪协议
php
BingoGo5 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack5 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo6 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php