Heim  >  Fragen und Antworten  >  Hauptteil

Wie beschränke ich Methodenparameter in PHP? Der Parameter ist ein Array. Wie werden die Anzahl und Schlüsselnamen der übergebenen Array-Elemente angegeben?

<?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?)

淡淡烟草味淡淡烟草味2663 Tage vor888

Antworte allen(3)Ich werde antworten

  • 世界只因有你

    世界只因有你2017-06-14 10:51:58

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

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-06-14 10:51:58

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

    Antwort
    0
  • 代言

    代言2017-06-14 10:51:58

    可以考虑用array_diff

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

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

    Antwort
    0
  • StornierenAntwort