2016-05-30 4 views
1

Привет, ребята, я имел этот CodeIgniter код модель:как исправить эту ошибку php «предупреждение»?

<?php 

class Product extends CI_Model{ 
    var $title; 
    var $price; 
    var $name=" "; 
    public function __construct($title1,$price1,$name1) 
    { 
    parent::__construct(); 
    $this->load->database(); 
    $this->title=$title1; 
    $this->price=$price1; 
    $this->name=$name1; 
    } 
    function set_Name ($newname) 
    { 
    $this->name=$newname; 
    } 
    function get_Nmae() 
    { 
    return $this->name; 
    } 
    function set_title($newtitle){ 
    $this->title=$newtitle; 
    } 

    function set_price($newprice) { 
    $this->price=$newprice; 
} 
function get_productAttribute(){ 
    $x1=$this->name; 
    $x2=$this->title; 
    $x3=$this->price; 
    $productattribute = array("$x1","$x2","$x3"); 
    return $productattribute ; 

} 
public function get_data(){ 
    $query=$this->db->query('SELECT*FROM Saied'); 
    return $query->row_array(); 
} 
    public function insert_indb($var){ 
    if (is_a($var, 'Furniture')) 
    { 
$data= array(
    'id1' => '', 
    'name1'=> $this->title, 
    'title1' => $this->title, 
    'price1' => $this->price, 
    'size1' => $this->size, 
    'material1'=>$this->material 

    ); 
    $this->db->insert('Furn',$data); 
    return $data; 

} 
elseif (is_a($var, 'CDDVD')) 
{ 
    $data1= array(
    'id' => '', 
    'title'=>$this->title, 
    'price'=>$this->price, 
    'name'=>$this->name, 
    'sizemb'=>$this->sizeinmb."MB", 
    'manufacture'=>$this->manufacturer 
    ); 
    return $data1; 
} 
else 
{ 
    echo "no spicifed objech"; 
} 
} 
} 
class Furniture extends Product 
{ 
    var $size; 
    var $material; 
public function __construct($title1,$price1,$name1,$sizeset,$materialset) 
    { 
    $this->size=$sizeset; 
    $this->material=$materialset; 
    parent::__construct($title1,$price1,$name1); 
    $this->name1=" "; 
    } 
public function setAtribute_Furniture ($size1,$material1) 
    { 
    $this->size=$size1; 
    $this->material=$material1; 
    } 
} 
class CDDVD extends Product 
{ 
    var $sizeinmb; 
    var $manufacturer; 
    public function __construct($title1,$price1,$name1,$sizeinmbset,$manufacturerset) 
    { 
    $this->sizeinmb=$sizeinmbset; 
    $this->manufacturer=$manufacturerset; 
    parent::__construct($title1,$price1,$name1); 
    } 
    public function setAttribute_CDVD ($sizeinmb1,$manufacturer1) 
    { 
    $this->sizeinmb=$sizeinmb1."MB"; 
    $this->manufacturer=$manufacturer1; 
    } 
} 
$chair = new Furniture("ilove","200 euro"," ","200x200 ","wood"); 

print_r($chair->insert_indb($chair)); 

?> 

и контроллер для загрузки этой модели является:

public function __construct() 
     { 
     parent::__construct(); 
     $this->load->model('product'); 
     } 


     } 

вещь каждая вещь работает, как именно я хочу, где я вставить intodatabase и распечатать значение из массива или массива 1 для каждого класса, но codigniter дает мне текущую ошибку/предупреждение: произошла ошибка PHP:

Severity: Warning 

Message: Missing argument 1 for Product::__construct(), called in /Applications/MAMP/htdocs/SandWeb/system/core/Loader.php on line 353 and defined 

Filename: models/Product.php 

Line Number: 7 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 7 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

A PHP Error was encountered 

Severity: Warning 

Message: Missing argument 2 for Product::__construct(), called in /Applications/MAMP/htdocs/SandWeb/system/core/Loader.php on line 353 and defined 

Filename: models/Product.php 

Line Number: 7 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 7 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

A PHP Error was encountered 

Severity: Warning 

Message: Missing argument 3 for Product::__construct(), called in /Applications/MAMP/htdocs/SandWeb/system/core/Loader.php on line 353 and defined 

Filename: models/Product.php 

Line Number: 7 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 7 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: title1 

Filename: models/Product.php 

Line Number: 11 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 11 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: price1 

Filename: models/Product.php 

Line Number: 12 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 12 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: name1 

Filename: models/Product.php 

Line Number: 13 

Backtrace: 

File: /Applications/MAMP/htdocs/SandWeb/application/models/Product.php 
Line: 13 
Function: _error_handler 

File: /Applications/MAMP/htdocs/SandWeb/application/controllers/Pages.php 
Line: 80 
Function: model 

File: /Applications/MAMP/htdocs/SandWeb/index.php 
Line: 315 
Function: require_once 

поэтому мой вопрос в том, как я могу игнорировать это предупреждение или, может быть, я загружаю модель неправильно. ?

+0

Можете ли вы разместить код, в котором вы создаете продукт, пожалуйста? Вместо того, чтобы var $ name вы можете изменить это на public $ name и public $ title и public $ price, посмотрите, удаляет ли это некоторые предупреждения. – Brett

+1

Вы правильно загружаете модель, но в вашем конструкторе вам нужны 3 значения, которые вы никогда не отправляйте или выходите из него или инициализируйте, как 'public function __construct ($ title1 = NULL, $ price1 = NULL, $ name1 = NULL)' (таким образом, вы не можете использовать общее значение переменных) – elddenmedio

+0

в конце продукта я определяю один продукт как: $ chair = new Мебель («ilove», «200 евро», «», «200x200», «дерево»); print_r ($ chair-> insert_indb ($ chair)); –

ответ

0

Вы получаете эту ошибку, поскольку конструктор модели CI не может получать параметры. См исходный код КИ Модель погрузчика, который расположен в /YourCIAPP/system/Core/Loader.php метод назван model

В нижней части этого метода вы можете увидеть модель нагрузки CI с этим кодом

require_once($mod_path.'models/'.$path.$model.'.php'); 
$this->_ci_models[] = $name; 
$CI->$name = new $model(); 

See, CI только новая модель объекта с нет параметров для конструктора класса модели.

+0

. Итак, должен ли я сделать первый класс модели пустым конструктором, а затем сделать другой класс продукта, мебель ... .., я думаю, тогда это сработает, потому что все, что мне нужно, чтобы загрузить модель. в контроллере? ! –

+0

@saiedtrifess Да, попробуй, я думаю, это сработает. –

+0

нет! есть идеи ? –

Смежные вопросы