b/w 可数对象和不可数对象有什么区别
What is the difference b/w Countable and Non Countable Objects
我正在尝试找出区别 b/w 可数对象和不可数对象
首先我找出了对象的类型
echo gettype($data["current_fiat_currency"]);
这是一个Object
但是当我检查它是否是可数对象时
var_dump($data["current_fiat_currency"] instanceof Countable );
然后 returns
False
以下为对象内容
var_dump($data["current_fiat_currency"]);
object(stdClass)[2010]
public 'id' => string '1399' (length=4)
public 'currency_name' => string 'US Dollar' (length=9)
public 'currency_slug' => string '' (length=0)
public 'currency_code' => string 'USD' (length=3)
public 'currency_logo' => string '0' (length=1)
public 'currency_type' => string '3' (length=1)
public 'logo' => string '.png' (length=4)
public 'exe' => string '0' (length=1)
public 'logo_exe' => string '1' (length=1)
public 'symbol_native' => string '$' (length=1)
public 'symbol' => string '$' (length=1)
public 'name_plural' => string 'US dollars' (length=10)
public 'market_cap' => string '0' (length=1)
public 'circulating_supply' => string '0' (length=1)
public 'max_supply' => string '0' (length=1)
public 'total_supply' => string '0' (length=1)
public 'cryptoid_info_exe' => string '0' (length=1)
public 'show_on_website' => string '1' (length=1)
public 'default_selected' => string '1' (length=1)
public 'exchange_rate' => string '1' (length=1)
public 'currencies_stats_exe' => string '0' (length=1)
public 'currencies_stats_last_updated' => null
public 'mineable_or_not' => string '0' (length=1)
public 'show_on_top_bar' => string '0' (length=1)
public 'added_date' => string '2018-01-11 05:21:37' (length=19)
public 'graph_size_chart_status' => string '0' (length=1)
public 'twitter' => null
public 'reddit' => null
public 'status' => string '1' (length=1)
public 'for_pair_status' => string '0' (length=1)
如果现有对象根据 Php 7.2 不可数,我该如何将其转换为可数对象,因为我的代码在 Php 7.0 下运行良好。
为了使对象可数,它必须实现接口 countable
并具有 count
方法。即
class YourObject implements Countable
{
private $whatYouWantToCount = 0;
public function count()
{
return $this->whatYouWantToCount;
}
}
一个对象在实现接口Countable
时是Countable
。
该接口正在为可数对象定义 public 合同。这意味着作为合同的一部分,意味着您的 class 必须实现方法 $object.count()
.
不同之处在于,实现 Countable interface
的对象意味着您可以执行计数 PHP 个本机方法,例如 count()
将您的对象作为参数传递,结果是您在实现的方法上定义的值。例如,对于不可数对象,您将收到 warning.
黑客可能是
echo count((array) $data["current_fiat_currency"]);
这只是一个补丁解决方案,我认为它只在某些情况下有效,您不应该依赖它。
我正在尝试找出区别 b/w 可数对象和不可数对象
首先我找出了对象的类型
echo gettype($data["current_fiat_currency"]);
这是一个Object
但是当我检查它是否是可数对象时
var_dump($data["current_fiat_currency"] instanceof Countable );
然后 returns
False
以下为对象内容
var_dump($data["current_fiat_currency"]);
object(stdClass)[2010]
public 'id' => string '1399' (length=4)
public 'currency_name' => string 'US Dollar' (length=9)
public 'currency_slug' => string '' (length=0)
public 'currency_code' => string 'USD' (length=3)
public 'currency_logo' => string '0' (length=1)
public 'currency_type' => string '3' (length=1)
public 'logo' => string '.png' (length=4)
public 'exe' => string '0' (length=1)
public 'logo_exe' => string '1' (length=1)
public 'symbol_native' => string '$' (length=1)
public 'symbol' => string '$' (length=1)
public 'name_plural' => string 'US dollars' (length=10)
public 'market_cap' => string '0' (length=1)
public 'circulating_supply' => string '0' (length=1)
public 'max_supply' => string '0' (length=1)
public 'total_supply' => string '0' (length=1)
public 'cryptoid_info_exe' => string '0' (length=1)
public 'show_on_website' => string '1' (length=1)
public 'default_selected' => string '1' (length=1)
public 'exchange_rate' => string '1' (length=1)
public 'currencies_stats_exe' => string '0' (length=1)
public 'currencies_stats_last_updated' => null
public 'mineable_or_not' => string '0' (length=1)
public 'show_on_top_bar' => string '0' (length=1)
public 'added_date' => string '2018-01-11 05:21:37' (length=19)
public 'graph_size_chart_status' => string '0' (length=1)
public 'twitter' => null
public 'reddit' => null
public 'status' => string '1' (length=1)
public 'for_pair_status' => string '0' (length=1)
如果现有对象根据 Php 7.2 不可数,我该如何将其转换为可数对象,因为我的代码在 Php 7.0 下运行良好。
为了使对象可数,它必须实现接口 countable
并具有 count
方法。即
class YourObject implements Countable
{
private $whatYouWantToCount = 0;
public function count()
{
return $this->whatYouWantToCount;
}
}
一个对象在实现接口Countable
时是Countable
。
该接口正在为可数对象定义 public 合同。这意味着作为合同的一部分,意味着您的 class 必须实现方法 $object.count()
.
不同之处在于,实现 Countable interface
的对象意味着您可以执行计数 PHP 个本机方法,例如 count()
将您的对象作为参数传递,结果是您在实现的方法上定义的值。例如,对于不可数对象,您将收到 warning.
黑客可能是
echo count((array) $data["current_fiat_currency"]);
这只是一个补丁解决方案,我认为它只在某些情况下有效,您不应该依赖它。