I am currently working on a mini 'framework' and I am having some difficulties. I'm attempting this in order to strengthen my understanding of basic concepts utilized in most MVC's (At least from what I have seen). So yes, I do understand that using a framework may be easier and not everything that I am doing is ideal. I am just trying to learn more.
So I have 2 files that I am currently working with.
FrontController.php
<?php
class FrontController {
public function __construct() {
$this->go(); // RUNS GO FUNCTION UPON LOADING
}
public function go() {
$url = $_SERVER['REQUEST_URI']; // GRABS URL
$action = explode("/", $url); // SPLITS UP URL INTO SECTIONS
$object = ucfirst($action[2]) . "Controller"; // SETS 2ND SECTION OF URL TO UPPERCASE AND IDENTIFIES THE CONTROLLER
$file = APP_DIR . "/" . $object . ".php"; // IDENTIFIES THE FILE THAT WILL BE USED
if(!is_file($file)){ // DETERMINES IF FILE EXISTS
$this->fail(); // IF NOT, FAILS
} else {
require_once $file; // IF EXISTS, PULLS IT IN
$method = ucfirst($action[3]); // THE 3RD SECTION OF THE URL IS THE METHOD
$controller = new $object(); // CREATE INSTANCE OF THE IDENTIFIED OBJECT
if(!method_exists($controller, $method)){ // DETERMINES IF METHOD EXISTS IN THE CLASS
$this->fail(); // IF NOT, FAILS
}
$controller->$method(); // RUN METHOD
exit(0);
}
}
public function fail() {
echo "<h1>Failure</h1>"; // FAILURE MESSAGE
}
}
/application/BaseController.php
<?php
class BaseController {
public function __construct() {
$this->session();
}
public function session() {
session_start();
$_SESSION['is_logged_in'] = 1;
echo "hi";
}
}
So what I would like to be able to do is extend the BaseController with the FrontController. I figured that extending the BaseController would allow me to add common functionality to my entire application. The problem is that I am not certain how to do this properly. I know that I need to 'require' BaseController.php into FrontController.php somehow, but I have seen many different ways and I want to know which is most correct.
What I have tried is simply adding 'require_once("/application/BaseController.php");' to the top of FrontController.php and then extending the FrontController class, but this isn't working (blank page), and from what I have read, it is not the best way.
I read into __autoload() but I do not understand how to use it effectively. Do I just put this at the top of my FrontController.php file and extend my class after that?
So, to summarize, I would like to extend my FrontController class (and other future classes, when necessary) with my BaseController. I would just like some advice for how to accomplish this task effectively. It may even be possible that the way I have this thought out is ass backwards, and if that is the case, please let me know!!
Nice. you can see that- https://graphicexpertsindia.com/make-background-transparent-photoshop/
ReplyDelete