小编moh*_*jad的帖子

PHP-将方法转换为闭包

我想知道有什么方法可以将方法转换为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)

我希望使用较少的内存和资源消耗方式。有没有这样的解决方案?

php oop callback

5
推荐指数
2
解决办法
690
查看次数

Yii2 + Redis 作为数据库

我想使用 Yii2 和 redis 作为数据库。

到目前为止,我从这里获得了 Yii2 的 Redis ActiveRecord 类。

链接1

链接2

但是,我遇到了问题。为什么这个类在 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 的正确解决方案。

database activerecord models redis yii2

4
推荐指数
1
解决办法
4217
查看次数

如何从 Telegram bot API 下载大文件

好的,我知道在 telegram bot API 中我们可以获取 file_id 并将其发送到getFile方法,它将为我们提供文件路径,以便我们可以通过 URL 下载它。

但每个文件的最大文件大小限制为 20MB。

这是我的问题:

这个机器人怎么能绕过大小限制?

个人并不相信这一点,直到用 200MB 大小的文件对其进行测试并且它运行得非常快。我想做一个这样的。

php telegram-bot

4
推荐指数
1
解决办法
9888
查看次数

php - 哪个更好接近null ==或== null

我多次看到php开发人员使用这样的东西:

if(null == $var){

}
Run Code Online (Sandbox Code Playgroud)

我用的时候

if($var == null){

}
Run Code Online (Sandbox Code Playgroud)

这两个不同吗?有没有理由使用每一个?或者它在任何方面都是一个选择问题?

php syntax

3
推荐指数
1
解决办法
91
查看次数

Yii2 - 活动记录查询在字符串字段中搜索数字

我的表中有一个字符串字段,其中包含 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 条件,而无需执行多个查询?

php mysql activerecord yii2-advanced-app

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