Dags att börja diskutera hur man skulle kunna strukturera ett större projekt.
Här kommer ett enkelt ex på hur man skulle kunna jobba med MVC. Vi kommer att utvidga detta framöver
Controllers och Models är i princip fria från HTML, i views har man endast enkel PHP och HTML
index.php - Denna fil har som enda uppgift att alltid läsa in rätt filer…
<?php define('PATH','../'); // Sökvägen till själva applikationen // alla inställnignar och några funktioner include(PATH.'include/setup.php'); // Säkrar upp vad som kommer i $_GET['c'] c=controller och i $_GET['a'] a=action, kommer inget blir det index (isset($_GET['c'])?str_replace('.','',$_GET['c']):$_GET['c'] = 'index'); (isset($_GET['a'])?str_replace('.','',$_GET['a']):$_GET['a'] = 'index'); // läser in rätt controller $controller = PATH . 'controllers/' . $_GET['c'] . 'Controller.php'; if (file_exists($controller)) { include($controller); } else { $session->AddError('No controller named:' . $_GET['c'] . 'Controller'); } // visar HTML med rätt view include(PATH.'views/head.php'); $session->PrintInfo();; // skriver ut fel och annan info $view = PATH . 'views/' . $_GET['c'] . '/' . $_GET['a'] . '.php'; if (file_exists($view)) { include($view); } else { $session->AddError('No view in ' . $_GET['c']. ' named:' . $_GET['a']); $session->PrintInfo();; // Man vill ju se detta fel också... } include(PATH.'views/foot.php');
Detta är min struktur av filer. Det enda som är gjort är en fungerade inloggning därför är katalogerna forum och user tomma
├── classes │ ├── model │ │ └── user.php │ └── service │ ├── db.php │ └── session.php ├── controllers │ ├── indexController.php │ └── loginController.php ├── htdocs │ ├── images │ ├── index.php │ └── style.css ├── include │ └── setup.php └── views ├── foot.php ├── forum ├── head.php ├── index │ └── index.php ├── login │ ├── login.php │ ├── logout.php │ ├── register.php │ ├── sendpassword.php │ └── setpassword.php └── user
Ni får gärna göra om och bygga ut mina klass exempel.
Ni kan hämta min kod här om ni vill. Skulle det finnas några fel i den får ni fixa det själv
Min tabell Users
CREATE TABLE IF NOT EXISTS `lab5_Users` ( `UserID` int(11) NOT NULL AUTO_INCREMENT, `FirstName` varchar(50) NOT NULL DEFAULT '', `LastName` varchar(50) NOT NULL DEFAULT '', `EMail` varchar(50) NOT NULL DEFAULT '', `Password` varchar(50) NOT NULL DEFAULT '', `Deleted` tinyint(1) NOT NULL DEFAULT '0', `Admin` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`UserID`), UNIQUE KEY `EMail` (`EMail`) ) ENGINE=MyISAM