TP6 验证(validate) php 动态类名(名称变量) 使用方法

104 篇文章 7 订阅

方法一:引用文件

use app\admin\validate\EnealValidate;
validate(EnealValidate::class)->check($postData);
或
validate(EnealValidate::class)->scene($scene)->check($postData);

不使用静态方法:
validate(EnealValidate)->check($postData);

方法二:直接使用

validate(app\admin\validate\EntalValidate::class)->check($postData);
或
validate(app\admin\validate\EntalValidate)->check($postData);

方法三:使用变量名称

$kd='\app\admin\validate\EntValidate';
// $kd=\app\admin\validate\EntValidate::class;
validate($kd)->check($postData);

其它例子:

要注意 '/' 字符的位置

 

php中的动态类名

参考:http://www.voidcn.com/article/p-sssefeod-btp.html

使用include_once()以递归方式在目录中动态调用扩展字段类的类.我这样做是为了让我(和其他人)只需添加一个文件即可轻松添加新的字段类型

我想知道的是:有没有办法从其中一个动态包含的变量名扩展类中证实一个新对象?

例如一个名为checkbox的类:

$field_type = 'checkbox';

$field = new {$field_type}();
也许这会起作用?但它没有?

$field_type = 'checkbox';

$field = new $$field_type();
这应该用于实例化具有字符串变量值的类:
$type = 'Checkbox'; 
$field = new $type();
echo get_class($field); // Output: Checkbox

 

参考:https://blog.csdn.net/weixin_39989688/article/details/115239879

我最近研究过一些代码,我必须在类中动态调用一个方法.

我最终使用的解决方案是2行,因为“动态”部分只是我需要调用的实际方法名称的一小部分.

这是我最终使用的解决方案:

$pull = "pull_{$type}_day";

$day = $download->$pull();

最初,我试图让这一行,但它没有用.从技术意义上讲,为什么上面的代码有效但下面的代码没有?

$day = $download->"pull_{$type}_day"();

解决方法:

如果您使用字符串或字符串的一部分作为方法(或属性),则需要将其包围在{}中,如下所示:

#property

echo $foo->{"bar"};

#method call

echo $foo->{"bar"}();

因此,如果您需要字符串部分中的变量,则遵循与任何普通字符串相同的规则.

echo $foo->{"bar".$bar}();

echo $foo->{'bar'.$bar.'bar'}();

echo $foo->{"bar{$bar}bar"}();

等等.这是一个完整的例子

class foo{
function pull_1_day(){
echo "bar";

}

}

$a = 1;

(new foo)->{"pull_{$a}_day"}();

输出

bar

这与PHP允许您使用字符串作为变量的方式相同,例如:

$foo = 'bar';

echo ${"foo"};

输出

bar

同样的语法.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值