jacko1998
(jacko1998)
#1
Mam taki kod:
<?php
require_once 'theme/theme/header.php';
echo '1';
class DB {
protected $db;
private function __construct() {
try {
$this->db = new PDO('mysql:host=127.0.0.1;dbname=cms', 'root', 'haslo');
echo 'Connected !';
} catch(PDOException $e) {
die($e->getMessage());
exit;
}
}
}
echo '2';
$a = new BD();
echo '3';
require_once 'theme/theme/footer.php';
?>
i wypisuje tylko 1, 2 ale 3 i footera już nie.Nie ma komunikaty o jakimkolwiek błędzie. Korzystam z PHP bodajże wersji 5.5.3
GioWDS
(GioWDS)
#2
Bo ogólnie to niema prawa zadziałać.
Masz prywatny konstruktor, a próbujesz go wywołać z zewnątrz. Podejrzewam, że chciałeś uzyskać Singletona, ale nie bardzo pykło.
W php.ini zmień display_errors na On, error_reporting na E_ALL.
A w klasie dodaj kod:
protected static $h;
public static function handle()
{
if (!is_object(self::$h))
self::$h = new self;
return self::$h;
}
zac7
(Piotr Drozdz)
#3
Panieee, włącz Pan sobie error_reporting(E_ALL) i nie wywołuj klasy “new BD” tylko “new DB”
GioWDS
(GioWDS)
#4
Mimo wszystko kod w stylu:
private function __construct(){};
a potem
$x = new X();
nie powinno zadziałać.
jacko1998
(jacko1998)
#5
Musiałem omyłkowo dopisać private do konstruktora.
@zac7: W edytorze miałem dobrze, tutaj zmieniałem trochę kod i źle napisałem
Dzięki