任何人都知道如何在PHP中创建一个类,然后在调用时加载一个数组,例如
$cart = new Cart(); //where Cart is the Class Name
print_R($cart); //print the constructor
在这一点我想要这样的数组
$cart = ([id] => ,[currency]=> ,[country]=> )
如何有人指导我如何为此调用设置构造函数,即使属性为空,我只需要数组的键值,以便我可以设置其值,如下所示
$cart->id = 1;
$cart->currency = EUR;
$cart->country= DE;
以这种方式在这个例子中调用一个新的CART会更容易...然后操纵类属性以便保存到数据库等
答案 0 :(得分:5)
class Cart
{
private $id, $currency, $country;
public function __construct($id = 1, $currency = 'EUR', $country = 'DE')
{
$this->id = $id;
$this->currency = $currency;
$this->country = $country;
}
}
如果没有向构造函数传递参数,它将继承函数参数规范中的默认值。
答案 1 :(得分:2)
您不应该在构造函数中返回数组。您应该始终将引用返回到购物车。只需添加一种方法即可获取数据。
class Cart {
public $id = 1;
public $currency = 'EUR';
public $country = 'DE'
public function getData() {
return array(
'id' => $this->id,
'currency' => $this->currency,
'country' => $this->country
);
}
}
$cart = new Cart();
print_r( $cart->getData() ); //will print the array
//you can also get at the property
$cart->id = 1;
$cart->currency = 'EUR';
$cart->country= 'DE';
答案 2 :(得分:1)
您可以将值作为参数传递给Cart
的构造函数像这样:
function __construct( Class $var ) {
$this->var = $var;
}
或者我误解了你的问题?
答案 3 :(得分:0)
构造函数返回对刚刚创建的对象实例的引用。它不能返回任何不同的东西。
您可以在Cart对象“toArray()”中实现一个方法,该方法返回一个关联数组“attribute”=> “价值”,以满足您的需求。
答案 4 :(得分:0)
我想你想使用magic method __toString()
手册中的示例:
<?php
// Declare a simple class
class TestClass
{
public $foo;
public function __construct($foo)
{
$this->foo = $foo;
}
public function __toString()
{
return $this->foo;
}
}
$class = new TestClass('Hello');
echo $class;
?>
将输出:你好。
更改方法以返回阵列。
答案 5 :(得分:0)
Print_r可以做到这一点。只需将$id, $currency and $country
指定为属性,print就会显示如下内容:
Cart Object ( [id:Cart:private] => 1
[currency:Cart:private] => EUR
[country:Cart:private] => DE
)
所以我没有得到你的问题