【问题标题】:how to fix this php error "warning "?如何修复这个 php 错误“警告”?
【发布时间】:2016-09-28 19:25:15
【问题描述】:

大家好,我有这个 codeigniter 代码,模型是:

<?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');
      }


      }

事情是每件事都完全按照我想要的方式工作,我插入数据库并打印每个类的数组或数组 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

所以我的问题是如何忽略这些警告,或者我以错误的方式加载模型。 ?

【问题讨论】:

  • 你能把代码贴在你创建产品的地方吗?您可以将其更改为 public $name 和 public $title 和 public $price ,而不是使用 var $name ,看看是否消除了一些警告
  • 您正在以正确的方式加载模型,但是在您的构造函数中,您需要 3 个从未发送过的值,或者您退出它或像 ` public function __construct($title1 = NULL,$price1 = NULL,$name1 = NULL) `(这样你不能使用变量的一般值)
  • 在产品的末尾,我将一种产品定义为:$chair = new Furniture("ilove","200 euro","","200x200","wood"); print_r($chair->insert_indb($chair));
  • 就像我猜我需要在控制器中定义对象 $car = new Furniture 。现在有任何身体怎么做?
  • 是的,您在家具中发送构造函数值,而不是在您正在扩展的产品模型中发送构造函数值

标签: php codeigniter


【解决方案1】:

您收到此错误是因为 CI 模型的构造函数无法接收参数。 查看 CI 的 Model Loader 的源代码,它位于 /YourCIAPP/system/Core/Loader.php 一个名为 model 的方法

在该方法的底部,您可以看到带有此代码的 CI 加载模型

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

看,CI 只是新的模型对象,模型类的构造函数没有参数。

【讨论】:

  • 好吧,我应该让模型的第一个类为空构造函数,然后,让另一个类产品,家具......,我想它会工作,因为我需要加载该模型 。在控制器中? !
  • @saiedtrifess 是的,试一试,我认为它会工作。
  • 它没有!有什么想法吗?
【解决方案2】:

只有两种可能:路径错误,或者权限错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 2023-03-19
    相关资源
    最近更新 更多