php construct 参数,php – 函数Db :: __ construct()的参数太少,传入0

我有3页用于连接数据库

class Db{

private $dbUserName ="root";

private $dbName = "oop";

private $dbPas = "";

private $dbHost = "127.0.01";

public function __construct($dbUserName, $dbName, $dbPas, $dbHost)

{

$this->dbUserName = $dbUserName;

$this->dbName = $dbName;

$this->dbPas = $dbPas;

$this->dbHost = $dbHost;

$con = new PDO("mysql:host= $dbHost; $dbUserName,$dbName,$dbPas");

return $con ;

}

2是

class User extends Db{

protected function getAllUser(){

$sql = "SELECT * FROM user";

$result = $this->connect()->query($sql);

$count = $result->rowCount();

// check if there'r date in the db

if($count > 0){

while($row = $result->fetchAll() ){

$data[] = $row;

}

return $data;

}

}

}

3是

class ViewUser extends User{

public function ViewAllUser (){

$datas = $this->getAllUser();

foreach($datas as $data){

//echo the db rows

echo $data['uid']."";

echo $data['pas']."";

}

}

}

当我尝试在其他页面上运行它们时

include 'Db.php';

include 'User.php';

include 'ViewUser.php';

?>

Oop

$users = new ViewUser();

$users->ViewAllUser();

?>

我得到一个错误Uncaught ArgumentCountError:函数Db :: __ construct()的参数太少,在第18行的/Users/mohamedelmasry/Documents/websites/oop/test.php中传递0,在/ Users / mohamedelmasry / Documents中预期传递4个/websites/oop/Db.php:18堆栈追踪:#0 /Users/mohamedelmasry/Documents/websites/oop/test.php(18):Db-> __ construct()#1 /Users/mohamedelmasry/.composer/ vendor / laravel / valet / server.php(128):require(‘/ Users / mohamede …’)#Users {mo}抛入/ Users / mohamedelmasr

解决方法:

您的基类构造函数需要4个参数:

class Db{

...

public function __construct($dbUserName, $dbName, $dbPas, $dbHost)

{

...

}

因此,您无法在没有参数的情况下创建子类.

你需要做:

$users = new ViewUser('root', 'dbname', 'pass', 'host');

或者将默认值放入构造函数声明中:

public function __construct($dbUserName='root', $dbName='db', $dbPas='pass', $dbHost='host')

{

...

}

但总的来说,继承在这里被滥用了.您最好有一个单独的Db类来管理DB并将其用作其他类中的组件(使用组合而不是继承).

标签:php,oop

来源: https://codeday.me/bug/20190928/1825770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值