类构造函数PHP帮助

时间:2011-05-30 09:37:22

标签: php oop class

任何人都知道如何在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会更容易...然后操纵类属性以便保存到数据库等

6 个答案:

答案 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 
            )

所以我没有得到你的问题