Wanneer ik de volgende methode uitvoer krijg ik de volgende foutmelding:
<?php
namespace TEST
{
class DB_Connectie
{
public function Connect()
{
$mysqli = new mysqli('localhost', 'gegevens', 'wachtwoord', 'gegevens');
$mysqli->set_charset("utf8");
if(mysqli_connect_errno())
{
trigger_error('Fout bij verbinding: '.$mysqli->error);
}
}
}
}
?>
Fatal error: Class 'TEST\mysqli' not found op regel 8'
mysqli is wel geïnstalleerd. Dit heb ik ook gecontroleerd. Waar zit hier de fout?
Omdat je Namespaces gebruikt zoekt php de class mysqli in je eigen namespace TEST.
Daar is de class echter niet te vinden. De class is in de global namespace te vinden.
en dat kun je aangeven door voor de classnaam een \ te schrijven:
<?php
$mysqli = new \mysqli('localhost', 'gegevens', 'wachtwoord', 'gegevens');
?>
Je krijgt dit met alle standaard PHP classes zoals bijvoorbeeld ook DateTime.
Ok het probleem met de namespace heb ik inmiddels opgelost. Nu zit ik met het volgende probleem.
Wanneer ik een connectie wil openen op de volgende manier krijg ik de volgende foutmelding:
namespace TEST
{
class DB_Connectie
{
public function ConnectieOpenen()
{
$mysqli = new \mysqli('localhost', '**', '**', '**');
$mysqli->set_charset("utf8");
if(mysqli_connect_errno())
{
trigger_error('Fout bij verbinding: '.$mysqli->error);
}
return $mysqli;
}
}
}
namespace TEST
{
include ('DB_Connectie.php');
class DL_Account extends BL_Account
{
public function SelectAllAccounts()
{
$DB_Connectie = new DB_Connectie();
$DB_Connectie->ConnectieOpenen();
$result = mysqli_query($mysqli, "SelectAllAccounts") or die("Query fail: " . mysqli_error());
return $result;
}
}
}
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in ... on line 11
Warning: mysqli_error() expects exactly 1 parameter, 0 given in ... on line 11
Query fail:
Tuurlijk werkt dat wel. de procedurele MySQLi manier is een wrapper om de object oriënted manier.
Hmmm Dos oké ik had al eerder op dit board dezelfde opmerking gelezen. Blijkt dus dat het wel kan werken maar vindt je het netjes? Ik zou dan toch voor één van de twee kiezen.