调用class时__construct出错

时间:2013-03-01 23:14:32

标签: php

我上了PHP课程,当调用它时,函数__construct($_POST)必须处理。

__construct()函数定义为:

// Constructor Function
function __construct($_POST){
    $this->customer       = trim($_POST['customer']);
    $this->CreateDate   = date('Y/m/d');    
}

当我在类上调用任何函数时,它会被处理并插入到DataBase中但是这个按钮出现了: -

Missing argument 1 for Draft::__construct(), called in .... 

我的代码有什么问题

thankx

4 个答案:

答案 0 :(得分:3)

我对你的意图感到困惑。

$_POSTPHP superglobal,意味着它适用于所有范围。

如果您打算使用发布的数据:

无需将其作为参数传递

如果您传递的变量恰好叫做$ _POST:

更改变量的名称。

答案 1 :(得分:1)

有两件事:

  1. 您的类构造函数将超全局作为参数。
  2. 您可能不会将参数传递给构造对象的调用:
  3. 对于2号,你应该打电话:

    $draft = new Draft($var);

答案 2 :(得分:0)

当您尝试使用保留变量时,PHP也应该发出通知,例如$_POST$_GET$_COOKIE“非法偏移”。

从您的问题来看,似乎您不理解the difference between function parameters and arguments。你已经传递了一个参数,而它应该是一个参数。

此:

function __construct($_POST){
    $this->customer       = trim($_POST['customer']);
    $this->CreateDate   = date('Y/m/d');    
}

应改写为:

function __construct($POST){
    $this->customer       = trim($POST['customer']);
    $this->CreateDate   = date('Y/m/d');    
}

然后:

$object = new YourClass($_POST);

答案 3 :(得分:0)

$_post is super global variable and you are using as constructor parameter change the variable name 
function __construct($post){

    $this->customer       = trim($post['customer']);
    $this->CreateDate   = date('Y/m/d');    
}

Or Second remove $_Post in constructor parameter 

function __construct(){

        $this->customer       = trim($_POST['customer']);
        $this->CreateDate   = date('Y/m/d');    
    }