首页 \ 问答 \ PHP is_callable with Type Definitions(PHP is_callable with Type Definitions)

PHP is_callable with Type Definitions(PHP is_callable with Type Definitions)

一直在搜索PHP文档,这似乎不可能,但想检查。

说我有这样的功能:

class Utils {
  static function doSomething( Array $input ){
    ...
  }
}

是否可以使用像is_callable这样的内置PHP函数来检查函数是否存在以及函数中的类型定义是否接受我所拥有的变量。

所以:

$varA = array( 'a', 'b', 'c' );
$varB = 'some string';

$functionToCall = array( 'Utils', 'doSomething' );

is_callable( $functionToCall, $varA ) => true;
is_callable( $functionToCall, $varB ) => false;

当然is_callable不能像这样使用。 但是可以在不使用Try Catch的情况下完成吗?

如果不是这将是最好的方式吗?

try {
  Utils::doSomething( 10 )
} catch (TypeError $e) {
  // react here
}

谢谢!


Been searching the PHP documentation and this doesn't seem possible but wanted to check.

Say I have a function like this:

class Utils {
  static function doSomething( Array $input ){
    ...
  }
}

Is is possible to use a inbuilt PHP function like is_callable to check if both the function exists and if the variable I have will be accepted by the type definition in the function.

So:

$varA = array( 'a', 'b', 'c' );
$varB = 'some string';

$functionToCall = array( 'Utils', 'doSomething' );

is_callable( $functionToCall, $varA ) => true;
is_callable( $functionToCall, $varB ) => false;

Of course is_callable cannot be used like this. But can it be done without using a Try Catch?

If not would this be the best way around it?

try {
  Utils::doSomething( 10 )
} catch (TypeError $e) {
  // react here
}

Thanks!


原文:https://stackoverflow.com/questions/38916981
更新时间:2023-04-13 07:04

最满意答案

我们可以使用replace逻辑矩阵作为第二个参数,替换值作为第三个

replace(mat, mat < 0, 0)
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    0    0    0    0    1    0
#[2,]    0    0    0    0    2    1
#[3,]    0    0    0    0    1    2
#[4,]    0    0    0    0    0    1
#[5,]    1    2    1    0    0    0
#[6,]    0    1    2    1    0    0

或者通过基于逻辑矩阵提取'mat'的值并将其分配给0来使用分配

mat[mat < 0] <- 0

由于它是一个数字matrix ,所以算术也应该起作用

(mat >= 0) * mat

We can either use replace with the logical matrix as the second parameter and replacement value as the third

replace(mat, mat < 0, 0)
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]    0    0    0    0    1    0
#[2,]    0    0    0    0    2    1
#[3,]    0    0    0    0    1    2
#[4,]    0    0    0    0    0    1
#[5,]    1    2    1    0    0    0
#[6,]    0    1    2    1    0    0

or use the assignment by extracting the values of the 'mat' based on the logical matrix and assigning it to 0

mat[mat < 0] <- 0

As it s a numeric matrix, arithmetic should also work

(mat >= 0) * mat

相关问答

更多

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。