首页 > 解决方案 > PHP 内部开发问题,想用引用功能扩展 curly 语法

问题描述

我知道这与 SO 有点离题,因为我没有代码而且我的问题很抽象。

我想在 PHP 语言中添加一个功能:
现有功能:

$var=123;
$string = "This is a {$var} variable";

需要 SQL 变量的新功能:

$var="asd' union ()";
$string = "This is a {(QUOTE)$var} quoted variable";

或者:

$var="asd' union ()";
$string = "This is a {QUOTE($var)} quoted variable";

这个想法是扩展字符串 curly 语法以支持函数或一些硬编码函数来引用变量。

我的问题是:
有没有办法编写一个提供这种功能的 php 模块/扩展?
如果是这样,我必须从哪里快速开始?

解决方案

function _quote($v) { return strtoupper($v); }
$_Q = '_quote';
$string = "This is an {$_Q($var)} integer";
echo $string;

我想这是我想要的最接近的,而不必破解 php 本身

标签: phpcustomizationphp-7.4

解决方案


请使用准备好的 SQL 语句。另外,请阅读:https ://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/

不喜欢准备好的语句并不是不使用它们的理由,而是可以找到一个可以更好地处理它们的可信库,以不同的方式处理它们,或者甚至可以切换到 ORM。

为了更多地关注您的问题,通过使用诸如 Mustache 之类的东西、将其分叉并在您的自定义中分层,可能会更容易完成您想要的事情。https://github.com/bobthecow/mustache.php

我非常怀疑您是否能够构建一个模块来提供这种功能。大多数模块都提供了非常具体/独立的附加功能。我想不出一个模块可以修改本地语言结构的行为方式。为此,您需要修改 PHP Core 本身,这意味着编写一些 C,然后部署与其他任何东西都不兼容的 PHP 版本。


推荐阅读