Ich bekomme folgende Fehlermeldung:
Ich vermute, es liegt daran, dass ich zweimal folgende Zeile ausführe.
Mein Aufbau:
Folgende PHP-Datei wird gestartet:
Was genau ist das Problem daran es zweimal aufzurufen?? Und wie kann ich es verhindern?
Hier scheint das Problem wenn ich die Zeile $userController = new userController(); rausnehme, kkommt nicht die Fehlermeldung. Aber durch das Anlegen des Objektes userController wird der Kontruktor vom Controller aufgerufen und dann knallt es, weil man diesen Befehl wohl nicht ein 2. mal aufrufen darf.
Code:
Warning: Trying to access array offset on value of type bool in D:\xampp\htdocs\forum\src\controller\controller.php on line 13 Fatal error: Uncaught Error: Value of type null is not callable in D:\xampp\htdocs\forum\src\controller\controller.php:13 Stack trace: #0 D:\xampp\htdocs\forum\src\controller\userController.php(9): Controller->__construct() #1 D:\xampp\htdocs\forum\src\controller\messageSteuerung.php(11): UserController->__construct() #2 D:\xampp\htdocs\forum\index.php(3): require_once('D:\\xampp\\htdocs...') #3 {main} thrown in D:\xampp\htdocs\forum\src\controller\controller.php on line 13
PHP-Code:
$container = require_once __DIR__ . '/../../config/db-config.php';
$em = $container[\Doctrine\ORM\EntityManagerInterface::class]();
PHP-Code:
<?php
use Doctrine\ORM\Tools\SchemaTool;
require_once __DIR__ . '/../../config/smarty.php';
/** @var \Doctrine\ORM\EntityManager $entityManager */
class Controller
{
protected $em;
function __construct()
{
$container = require_once __DIR__ . '/../../config/db-config.php';
$em = $container[\Doctrine\ORM\EntityManagerInterface::class]();
}
protected function persistenceDB()
{
try {
$this->em->flush();
} catch (Exception $e) {
echo $e->getMessage();
die();
}
}
}
?>
PHP-Code:
<?php
use model\message;
require_once 'controller.php';
require_once 'userController.php';
class MessageController extends Controller
{
function __construct()
{
parent::__construct();
}
public function getAllMessages()
{
return $this->em->getRepository(Message::class)->findAll();
}
public function findMessageByFromUser($user)
{
return $this->em->getRepository(Message::class)->findBy(array(
'fromUser' => $user
));
}
public function findSentMessages($user)
{
return $this->em->getRepository(Message::class)->findBy(array(
'fromUser' => $user
));
}
public function findMessageById($id)
{
return $this->em->find(Message::class, $id);
}
public function addMessage($message)
{
$this->em->persist($message);
$this->persistenceDB();
}
public function deleteMessage($message)
{
$this->em->remove($message);
$this->persistenceDB();
}
}
?>
PHP-Code:
<?php
require_once 'messageController.php';
require_once 'userController.php';
$messageController = new MessageController();
$userController = new UserController();
$user1 = $userController->findUserById(1);
$user2 = $userController->findUserById(2);
$message = new Message("Betreff", "Dies ist eine Nachricht", date("d.m.Y H:i:s"), $user1, $user2);
$messageController->addMessage($message);
$messages = $messageController->getAllMessages();
$smarty->assign('messages', $messages);
$smarty->display('message.tpl');
?>
PHP-Code:
<?php
use model\user;
require_once 'controller.php';
class UserController extends Controller
{
function __construct(){
parent::__construct();
}
public function getAllUsers()
{
return $this->em->getRepository(User::class)->findAll();
}
public function findUsersByUserName($userName)
{
return $this->em->getRepository(User::class)->findBy(array(
'username' => $userName
));
}
public function findUserById($id)
{
return $this->em->find(User::class, $id);
}
public function addUser($user)
{
$this->em->persist($user);
$this->persistenceDB();
}
public function deleteUser($user)
{
$this->em->remove($user);
$this->persistenceDB();
}
}
?>
PHP-Code:
$messageController = new MessageController();
$userController = new UserController();
Kommentar