Wie beschränke ich Methodenparameter in PHP? Der Parameter ist ein Array. Wie werden die Anzahl und Schlüsselnamen der übergebenen Array-Elemente angegeben?
淡淡烟草味
淡淡烟草味 2017-06-14 10:49:58
0
3
920
<?php

class mysql
{
    private $con;
    private $query;


    public function err($error)
    {
        die('操作错误,错误信息为:' . $error);
    }


    public function connect(array $config)
    {
        extract($config);
        $this->con = mysqli_connect($dbhost, $dbuser, $dbpsw);
        if (!$this->con) {
            $this->err(mysqli_connect_error());
        }
        if (!mysqli_select_db($this->con, $dbname)) {
            $this->err(mysqli_error($this->con));
        }
        mysqli_query($this->con, "set name " . $dbcharset);
    }
}
?>

Bei der Verbindungsmethode muss die Anzahl der eingehenden Arrays 5 betragen: keyarray($dbhost,$dbuser,$dbpsw,$dbname,$dbcharset)

Ich bin an die starke Typisierung von Java gewöhnt, aber ich habe das Gefühl, dass PHP an vielen Stellen nicht streng ist. Wird dies die Menge an Code im Methodenkörper erhöhen? (Urteil in den Methodenkörper schreiben?)

淡淡烟草味
淡淡烟草味

Antworte allen(3)
世界只因有你

定义一个标准的取值数组,使用 array_merge 把标准数组和传递的参数合并,使用时按标准数组的键名取值。
参考:https://github.com/top-think/...

漂亮男人

function connect(array $config) {
    $requiredColumns = ['host','port','database','username','password'];
    foreach($requiredColumns as $column) {
        if(!isset($config[$column])) {
            throw new Exception("缺少参数{$column}");
        }
    }
}
代言

可以考虑用array_diff

array array_diff ( array $array1 , array $array2 [, array $... ] )

对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage