php - 通过 PHP 中的函数动态(Shell Exec)定义常量
问题描述
在过去的一个小时里,我只是在研究这个,试图找出最好的方法。
我正在开发一个 PHP CLI 应用程序,它使用以下函数来查找命令行宽度。
function getColLen() {
$getcolLen = shell_exec('tput cols');
$colLen = (int) $getcolLen;
return $colLen;
}
现在,我现在正在使用大约 8 个类,并且我使用了相当多的这个函数——在大多数类和类中的许多方法中。
以前它只是包含在作曲家供应商自动加载functions.php
文件中,我在每个函数中初始化它,比如
public function Tagger()
{
$colwidth = getColLen();
. . . . .
等等
我研究了许多在 PHP 类中使用动态全局变量的不同选项,其中有很多,有些变得相当复杂。
为了好玩,我决定尝试并将其添加到CONSTANT
我的functions.php
文件中
define('CLIWIDTH', getColLen());
我认为这行不通,因为我阅读的所有信息(以及我看到的所有示例)都是关于定义静态变量(例如字符串或目录)的。
但令我惊讶的是,这工作得很好。一个简单的echo CLIWIDTH;
任何地方都会带来命令行宽度(在以不同大小启动控制台时针对不同输出进行了成功测试)。
这不是被广泛认为是在所有文件中创建动态变量的正确方法吗?也许我没有搜索正确的术语,但我从未听说过有人在诸如此类的已定义常量内使用函数。
这是正确的代码吗?在讨论常量、全局变量等时,是否有理由不推荐这样做?
解决方案
对于 value 参数可以是什么没有限制define()
,并且常量将被定义为具有该表达式的任何内容。虽然它主要用于为文字命名,例如数据库配置设置,但它并非必须如此。您可以在那里放置一个动态表达式,例如
define("DB_USER", $hostname == "dev" ? "devuser" : "produser");
推荐阅读
- python - Difference between torch.flatten() and nn.Flatten()
- c - 无法在 C 中打印出带有可变参数的 char *
- perl - 如何在文件夹和子文件夹中运行命令
- kubernetes - Kubernetes 负载均衡 HTTP/1.1 请求
- python - 如何堆叠多个图
- sql - SQL 将行数据放入列(长到宽格式)
- python - 使用 chess.uci 更改鳕鱼技能等级
- azure - 将错误从 Azure 数据工厂记录到 Application Insights(ADF 到 ApplicationInsights)
- mongodb - Elasticsearch 7.1:将 mongodb 聚合管道转换为弹性搜索查询
- delphi - 如何在 Delphi 中将“字符集”转换为“字节集”