Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengehadkan parameter kaedah dalam php? Parameter ialah tatasusunan Bagaimana untuk menentukan nombor dan nama kunci elemen tatasusunan yang diluluskan?

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

Dalam kaedah sambung, bilangan tatasusunan yang masuk mestilah 5: keyarray($dbhost,$dbuser,$dbpsw,$dbname,$dbcharset)

Saya sudah biasa dengan penaipan Java yang kuat, tetapi saya merasakan PHP tidak ketat di banyak tempat. Adakah ini akan meningkatkan jumlah kod dalam badan kaedah? (Tulis pertimbangan dalam badan kaedah?)

淡淡烟草味淡淡烟草味2663 hari yang lalu884

membalas semua(3)saya akan balas

  • 世界只因有你

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

    Tentukan tatasusunan nilai standard, gunakan array_merge untuk menggabungkan tatasusunan standard dengan parameter yang diluluskan dan dapatkan nilai mengikut nama kunci tatasusunan standard apabila menggunakannya.
    Rujukan: https://github.com/top-think/...

    balas
    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}");
            }
        }
    }

    balas
    0
  • 代言

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

    Anda boleh pertimbangkan untuk menggunakannyaarray_diff

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

    Perbandingan mengembalikan nilai yang terdapat dalam tatasusunan1 tetapi tidak dalam tatasusunan2 atau mana-mana tatasusunan parameter lain.

    balas
    0
  • Batalbalas