相关疑难解决方法(0)

PHP变量,方法,类等名称中的有效字符是什么?

在变量,常量,函数,方法,类等的PHP名称中可以使用哪些有效字符?

手动有一些 提到的正则表达式[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.这个限制什么时候适用,什么时候不适用?

php

30
推荐指数
1
解决办法
1万
查看次数

使用特殊字符的PHP变量/函数/类名

我理解下划线_是命名变量/函数/类等的可接受字符.但是我想知道是否还有其他特殊字符可以使用.我测试了一些没有运气并且已经假设很长时间没有,但我想我会看到是否有其他人知道肯定.这主要是为了审美目的,但是我想在与其他开发人员合作定义值类型等时,特殊的字符命名约定会很有用.

php syntax label function

16
推荐指数
1
解决办法
2万
查看次数

13
推荐指数
2
解决办法
611
查看次数

用于非本地化目的的Unicode标识符(函数名称)是否可取?

PHP无论如何都允许变量,函数,类和常量的Unicode标识符.它当然是为本地化应用程序.除了英语是有争议的,在任何事情上编写API都是一个好主意,但是一些开发设置可能要求它是无可争议的.

 $Schüssel = new Müsli(T_FRÜCHTE);
Run Code Online (Sandbox Code Playgroud)

但PHP不仅仅是\p{L}标识符.您可以使用几乎任何Unicode字符,但ASCII范围除外(例如:,特殊情况或\已经用作支持命名空间的内部黑客).
无论如何,您可以这样做,我甚至认为这对于有趣的项目是可行的:

 throw new ?_?("told you about the disk space before");
Run Code Online (Sandbox Code Playgroud)

但除了本地化,娱乐和装饰效果之外,使用Unicode标识符是可取的吗?

例如,我正在考虑将参数嵌入到魔术方法名称中.在我的情况下,我只需要注入数字参数,所以只用下划线就可以了:

 $what->substr_0_50->ascii("text");
  // (Let's skip the evilness discussion this time. Not quite sure
  // yet if I really want it, but the conciseness might make sense.)
Run Code Online (Sandbox Code Playgroud)

但如果我想嵌入其他文本参数,我需要另一个unicode字符.现在更难打字,但如果有一个有助于提高可读性并传达意义......?

 ->substr?0?50->   // doesn't look good
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下的问题:哪个符号作为虚拟函数名称中的混合参数的分隔符是有意义的. - 更广泛的元主题:你知道哪些使用Unicode标识符,或者你会考虑好吗?

php unicode identifier

12
推荐指数
2
解决办法
2262
查看次数

如何检查字符串是否可以在PHP中用作变量名?

在PHP中,可以使用变量变量......

例如...

class obj { }
$fieldName = "Surname";
$object = new obj();
$object->Name = "John";
$object->$fieldName = "Doe";
echo "{$object->Name} {$object->Surname}"; // This echoes "John Doe".
Run Code Online (Sandbox Code Playgroud)

但是,$ fieldName字符串可能包含变量名称中不允许的某些字符.PHP仍然会创建具有该名称的字段(很像关联数组),但我无法使用$ object - > ......访问它,因为它无法正确解析.

现在,是否有任何函数可以检查字符串是否可以用作有效的PHP变量名.如果没有,如何使用正则表达式创建它?PHP中的变量名称有哪些规则?

php variables object names variable-variables

7
推荐指数
2
解决办法
4700
查看次数

PHP:修剪对象中的每个元素,如果为空,则设置为N/A.

我有一个对象:

stdClass Object
(
    [Color] => Red
    [Shape] => Round
    [Taste] => Sweet
)
Run Code Online (Sandbox Code Playgroud)

我想修剪对象中的每个元素,如果该元素为空,则将其设置为"N/A"

所以这个对象:

stdClass Object
(
    [Color] => Red
    [Shape] => 
    [Taste] => Sweet
)
Run Code Online (Sandbox Code Playgroud)

会变成这样的:

stdClass Object
(
    [Color] => Red
    [Shape] => N/A
    [Taste] => Sweet
)
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一点,也许是array_walk?

php arrays trim object

5
推荐指数
1
解决办法
1901
查看次数