类构造函数PHP帮助

类构造函数PHP帮助,php,oop,class,Php,Oop,Class,任何人都知道如何在PHP中创建一个类,然后在调用时加载一个数组 $cart = new Cart(); //where Cart is the Class Name print_R($cart); //print the constructor 在这一点上,我想要这样的数组 $cart = ([id] => ,[currency]=> ,[country]=> ) 如何指导我如何为这个调用设置构造函数,即使属性为空,我只需要数组的键值,这样我就可以像下面那样设置它的值 $c

任何人都知道如何在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;

通过这种方式,在本例中调用新的购物车会容易得多。。。然后操纵类属性以保存到数据库etc

您可以将值作为参数传递给Cart的构造函数

像这样:

 function __construct( Class $var ) {
        $this->var = $var;
 }

还是我误解了您的问题?

您可以将值作为参数传递给Cart的构造函数

像这样:

 function __construct( Class $var ) {
        $this->var = $var;
 }

还是我误解了你的问题?

构造函数返回对刚刚创建的对象实例的引用。它不能返回任何不同的结果


您可以在购物车对象“toArray()”中实现一个方法,该方法返回一个关联数组“attribute”=>“value”,以满足您的需要。

构造函数返回对刚刚创建的对象实例的引用。它不能返回任何不同的结果

class Cart
{
    private $id, $currency, $country;

    public function __construct($id = 1, $currency = 'EUR', $country = 'DE')
    {
        $this->id = $id;
        $this->currency = $currency;
        $this->country = $country;
    }
}
您可以在购物车对象“toArray()”中实现一个方法,该方法返回一个关联数组“attribute”=>“value”,以满足您的需要

class Cart
{
    private $id, $currency, $country;

    public function __construct($id = 1, $currency = 'EUR', $country = 'DE')
    {
        $this->id = $id;
        $this->currency = $currency;
        $this->country = $country;
    }
}
如果没有向构造函数传递任何参数,它将继承函数参数规范中的默认值


如果您不向构造函数传递任何参数,它将继承函数参数规范中的默认值。

我认为您希望使用

手册中的示例:

<?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;
?>

将输出:你好


更改返回数组的方法。

我认为您希望使用

手册中的示例:

<?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;
?>

将输出:你好


更改方法以返回数组。

不应在构造函数中返回数组。您应该始终返回对购物车的引用。只需添加一个方法即可获取数据

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';

您不应该在构造函数中返回数组。您应该始终返回对购物车的引用。只需添加一个方法即可获取数据

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';

印刷厂可以做到这一点。只需指定
$id、$currency和$country
作为属性,打印将显示如下内容:

Cart Object ( [id:Cart:private] => 1 
              [currency:Cart:private] => EUR 
              [country:Cart:private] => DE 
            )

所以我不明白你的问题,我能做到。只需指定
$id、$currency和$country
作为属性,打印将显示如下内容:

Cart Object ( [id:Cart:private] => 1 
              [currency:Cart:private] => EUR 
              [country:Cart:private] => DE 
            )

所以我不明白你的问题,我想这就是我一直在寻找的。。我认为可以按这个顺序修改。想象一下,我从数据库中得到了一个包含列的数组。可以全部设置吗automatic@MRR:当与echo或print一起使用时,将不会输出阵列_r@MRR:既然你已经接受了这一正确答案,我假设你不知道你在问什么,因为这显然不会在回声时返回数组。理解这一点的关键是询问者需要什么,不是他想要的,因为由于缺乏对某些问题的了解,解释往往不清楚。是的,提供的代码不返回数组,如果在创建对象时未指定值,则会设置默认值。如果传递的数组不存在,可以用同样的方法传递一个值数组并设置默认值。。我认为可以按这个顺序修改。想象一下,我从数据库中得到了一个包含列的数组。可以全部设置吗automatic@MRR:当与echo或print一起使用时,将不会输出阵列_r@MRR:既然你已经接受了这一正确答案,我假设你不知道你在问什么,因为这显然不会在回声时返回数组。理解这一点的关键是询问者需要什么,不是他想要的,因为由于缺乏对某些问题的了解,解释往往不清楚。是的,提供的代码不返回数组,如果在创建对象时未指定值,则会设置默认值。如果传递的数组不存在,则可以以相同的方式传递值数组并设置默认值。