PHP @new PDO

Nevim

PHP @new PDO
« kdy: 09. 12. 2015, 20:42:02 »
Ahoj,
Můžete mi někdo vysvětlit proč  před vytvořením objektu je @?

Kód: [Vybrat]
class Databaze {

    private static $spojeni;

    private static $nastaveni = Array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );
    public static function pripoj($host, $uzivatel, $heslo, $databaze) {
        if (!isset(self::$spojeni)) {
            self::$spojeni = @new PDO(
                "mysql:host=$host;dbname=$databaze",
                $uzivatel,
                $heslo,
                self::$nastaveni
            );
        }
        return self::$spojeni;
    }


Kit

Re:PHP @new PDO
« Odpověď #1 kdy: 09. 12. 2015, 21:03:30 »
Zavináč se dává tam, kde je potřeba potlačit chybové hlášení. V daném případě zbytečně.

Jako zbytečná se mi jeví skoro celá třída a asi nejzbytečnější jsou tam řádky
Kód: [Vybrat]
private static $spojeni;
public static function pripoj(...
které znemožňují otevření více databází. Statické proměnné a metody jsou prostě fuj.

Nevim

Re:PHP @new PDO
« Odpověď #2 kdy: 09. 12. 2015, 21:18:02 »
Díky za vysvětlení.

karel

Re:PHP @new PDO
« Odpověď #3 kdy: 10. 12. 2015, 07:34:33 »
Není zbytečná jde o klasický způsob sdílení připojení do databáze.
V 99% php projektů a nebude to platit jen pro php ti jedno spojení na jednu databázi stačí.

Kit

Re:PHP @new PDO
« Odpověď #4 kdy: 10. 12. 2015, 07:46:17 »
Není zbytečná jde o klasický způsob sdílení připojení do databáze.
V 99% php projektů a nebude to platit jen pro php ti jedno spojení na jednu databázi stačí.

To ještě neznamená, že by se Singleton měl používat tam, kde se používat nemá.

V projektech běžně používám 2-3 databáze. Na jednu databázi mám vždy jen jedno spojení, ale Singleton na to opravdu nepotřebuji.