php定义的常量不能跨页使用?

这是index.php下的代码:

<?php
defined('admin') or define('admin', true);
echo admin;
echo "\n";

defined('root_path') or define('root_path', __DIR__ . '/');
echo root_path;
echo "\n";

defined('lib') or define('lib', root_path . 'lib/');
echo root_path;
echo "\n";

运行无报错

输出结果如下:

1
E:\php\huaiyouDome/
E:\php\huaiyouDome/

但是换一个php文件输出就会报错 例如Test.php下输出会报错:

PHP Fatal error:  Uncaught Error: Undefined constant "admin" in E:\php\huaiyouDome\View\Test.php:2

我就不理解,因为看朋友在写代码的时候明明是可以的,而且变量还可以跨页使用,自己写的时候就不行。

IDE: phpstorm 2021.2.3
PHP:8.0

php定义的常量是不能跨页面的。
你朋友的代码应该是在一个单独的php文件中定义常量。
然后在每个页面中都导入这个php文件

PHP 常量
常量是单个值的标识符(名称) ,在脚本中无法改变该值
有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)
与变量不同,常量贯穿整个脚本是自动全局的

这里的 贯穿整个脚本是自动全局的 意思是单页面 例如


```php
define("GNAME", "To Go!");

function myTest() {
echo GNAME;
}
myTest();


你把设置常量的那页namespace
在其他页面use xxx
其他页面就可以使用常量了。就如看你朋友那样,没包含这个页面也能使用。
使用namespace,然后use就可以了.