我想知道有什么方法可以将方法转换为php中的闭包类型吗?
class myClass{
public function myMethod($param){
echo $param;
}
public function myOtherMethod(Closure $param){
// do somthing here ...
}
}
$obj = new myClass();
$obj->myOtherMethod( (closure) '$obj->myMethod' );
Run Code Online (Sandbox Code Playgroud)
这仅是示例,但是我不能使用callable,然后使用[$obj,'myMethod']
我的类非常复杂,并且我不能仅为闭包类型更改任何内容。所以我需要将方法转换为闭包。还有其他方法还是我应该使用此方法?
$obj->myOtherMethod( function($msg) use($obj){
$obj->myMethod($msg);
} );
Run Code Online (Sandbox Code Playgroud)
我希望使用较少的内存和资源消耗方式。有没有这样的解决方案?
我想使用 Yii2 和 redis 作为数据库。
到目前为止,我从这里获得了 Yii2 的 Redis ActiveRecord 类。
但是,我遇到了问题。为什么这个类在 Redis 中添加任何内容作为哈希???
在上面我找不到它插入数据的模式。我添加一个用户,它将在命名空间下添加一个用户,并在等等下添加user:xxx另一条记录,但没有一个主题具有我在属性中定义的任何字段!s:user:xxx仅包含 ID。
我知道Key-value类型数据库和RDBMS是不同的,也知道如何在Redis中实现类似记录的关系,但我不知道为什么它只会保存ID。
到目前为止,我找不到任何使用 redis ActiveRecords 的示例。
这里有一个,但还不够好。
所以这是我的主要问题:如何在 YII2 中使用 activeRecords 和不同的数据类型向 redis 添加数据?
如果 ActiveRecords 无法实现,那么最好的解决方案是什么?在这种情况下
另一个问题:是否可以使用模型来代替并编写我自己的 model::save() 方法?以这种速度,最好的数据验证解决方案是什么?
实际上我想制作一个电报机器人,所以我应该获取消息并在 RabitMQ 中发送它们,并在工作程序中获取数据,执行该过程并将结果保存到 Redis,最后通过 RabitMQ 将响应发送给用户。
因此,我需要进行大量验证,当然还有身份验证,然后保存、选择、范围和保存以设置列表以及这个和那个......
我想要一种好方法来制作模型或活动记录或验证、保存和检索数据到 Redis 和 Yii2 的正确解决方案。
好的,我知道在 telegram bot API 中我们可以获取 file_id 并将其发送到getFile方法,它将为我们提供文件路径,以便我们可以通过 URL 下载它。
但每个文件的最大文件大小限制为 20MB。
这是我的问题:
这个机器人怎么能绕过大小限制?
个人并不相信这一点,直到用 200MB 大小的文件对其进行测试并且它运行得非常快。我想做一个这样的。
我多次看到php开发人员使用这样的东西:
if(null == $var){
}
Run Code Online (Sandbox Code Playgroud)
我用的时候
if($var == null){
}
Run Code Online (Sandbox Code Playgroud)
这两个不同吗?有没有理由使用每一个?或者它在任何方面都是一个选择问题?
我的表中有一个字符串字段,其中包含 json 字符串。让我们命名为 tbl_table
假设它有这 3 条记录:
id json
----------------
1 [123,45,1]
2 [23,4,5]
3 [7,8,9]
Run Code Online (Sandbox Code Playgroud)
现在我想获取 json 字段中包含数字的记录(使用 Yii2 中的活动记录),所以:
$res = Table::find()->where(['like','json','23'])->all();
Run Code Online (Sandbox Code Playgroud)
此查询返回这些记录:
id json
----------------
1 [123,45,1]
2 [23,4,5]
Run Code Online (Sandbox Code Playgroud)
这实际上并不是一个错误的结果,但我想要的是只返回带有 的记录id=2。我怎样才能做到这一点?
等等['like','json','5']等等['like','json','4'] ?数字相似,但我希望确切的数字匹配。
另一个问题我希望最后一个问题的答案在这部分有所改变['like','json',[4,5,6]]。换句话说,我想将一个数组传递给 like 运算符,它会自动对每个元素进行 OR 运算。这有可能吗?如果不是,我如何迭代数组并使用最后一个问题功能创建多个 Or_like 条件,而无需执行多个查询?