- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我需要了解魔术函数 __isset()
和普通函数 isset()
。实际上 php 语言构造 isset()
和 php 魔术方法 __isset()
之间的真正区别是什么?当我用谷歌搜索时,他们告诉我 __isset()
是一个神奇的功能。 php中常用的php函数和魔术函数有什么区别?
最佳答案
isset()
它是一种检查变量或类属性初始化的语言结构:
$a = 10;
isset($a); // true
isset($a, $b); // false
class Test
{
public $prop = 10;
}
$obj = new Test;
isset($obj->prop); // true
__isset()
这是一个神奇的方法,当 isset()
或 empty()
检查不存在或不可访问的类属性时调用:
class Test
{
public function __isset($name) {
echo "Non-existent property '$name'";
}
}
$obj = new Test;
isset($obj->prop); // prints "Non-existent property 'prop'" and return false
isset() __isset()
Language construct | Magic method |Always return bool | Result depends on custom logic* |Must be invoked in code | Called automatically by event |Unlimited number of parameters | Has only one parameter |Can be used in any scope | Must be defined as method** |Is a reserved keyword | Not a reserved keyword |Can't be redefined (Parse error) | Can be redefined in extended class***
__isset()
结果将是 automatically casted作为 bool
.
其实你可以定义自定义函数__isset()
,但它与魔术方法无关。
见 this example .
与普通函数不同,只能在类范围内定义并在特定事件上自动调用,例如:不可访问的方法调用、类序列化、当 unset()
用于不可访问的属性等。另见官方文档:Overloading .
关于php - isset() 和 __isset() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21227585/
我有以下不能正常工作的 $_GET['category'] 也可以等于 0。 if ( empty( $_GET['category'] ) ){ // do something } else
我最近被安排做一个需要一些PHP的项目,我对PHP了解不多。站点中有几个实例,单击按钮后,用户会被重定向到带有一些 URL 参数的另一个页面。然后下一页使用 $_GET 获取这些参数并继续。 代码中的
如果我使用此代码将数字作为输入,它可以正常工作 Hours: Hours: Minutes: Hours: Minutes
我希望扩展我的 PHP 知识,但我遇到了一些我不确定它是什么或什至不知道如何搜索它的东西。我正在查看 php.net isset 代码,我看到了 isset($_GET['something']) ?
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
isset($var) == "Test" 和 isset($var) && $var == 'Test" 有什么区别? 最佳答案 这里是一个简短的例子: $var = "Chuck Test"; v
例如,如果我实现一些简单的对象缓存,哪种方法更快? 1. return isset($cache[$cls]) ? $cache[$cls] : $cache[$cls] = new $cls; 2.
{if isset({$LANG.domainmoreinfo}){$LANG.domainmoreinfo}{/if} 这似乎是一个不正确的语法,有人能告诉我我做错了什么吗? 也许我们不能在“$LA
这个问题在这里已经有了答案: Weak typing in PHP: why use isset at all? (9 个回答) 关闭 6 年前。 我是 PHP 的初学者,想知道这之间有什么区别 $
根据文档 isset 条款“测试此项目中是否已设置给定属性”。我不明白设置属性时 isset 返回 true 还是 false 在下面的代码片段中,当 env.JAVA_HOME 未设置时,java.
这个问题在这里已经有了答案: Search nested object for property (4 个答案) 关闭 2 年前。 我找不到与我的问题非常相似的问题,但如果你能找到一个,请随时告诉我
有人可以帮助我学习 PHP 吗?我想创建简单的表单,并在添加“isset 函数”后返回所有表单。 Monitors Graphics Peripher
当我打印它时,我有 $list 然后我得到以下输出 AWeberEntry Object ( [_privateData:protected] => Array ( [0] =
知道 PHP 的 memcached 模块是否支持某种 isset() 方法吗? 以下案例: Memcached::set('foo', false); if(Memcached::get('foo'
我正在阅读“Head First PHP & MySQL”一书,书中的许多部分都有用于处理 HTML 表单的代码片段。他们是这样开始的: if (isset($_POST['submit'])){ .
有没有一种快捷方式可以将$_GET['values']赋值给变量? 我现在和其他人一样: if(isset($_GET['type'],$_GET['case']) $type = $_GET[
知道 PHP 的 memcached 模块是否支持某种 isset() 方法吗? 以下案例: Memcached::set('foo', false); if(Memcached::get('foo'
我有一个表格 > Note Add More Notes Next call date
这是我的Python代码: if onerow[0]['result'] is None or not result['GetOdds'][0]['result']is None: 当result为空
我创建了一个 isset 函数来检查变量是否已定义且不为空。这是我的代码: isset = function(a) { if ((typeof (a) === 'undefined') ||
我是一名优秀的程序员,十分优秀!