PHP framework production principle index. php main portal File & lt ;? Php? Define ('isexist', true );? Require "init. php ";? $ Control = newController ();? $ Control-& gt; Run ();? & Gt; ---------- how PHP framework is created
Index. php main portal file
? Define ('isexist', true );
? Require "init. php ";
? $ Control = new Controller ();
? $ Control-> Run ();
?>
Bytes ---------------------------------------------------------------------------------------------
Init. php file
? If (! Defined ('isexist '))
? ? Exit ("run the program from the entry file ");
? Header ("Content-Type: text/html; charset = utf-8 ");
??
? If (! Defined ('root _ path '))
? ? // Here the dynamic declaration, '\' is the escape backslash, the default '\' is the escape character
? ? Define ('root _ path', str_replace ('\', '/', dirname (_ FILE __)));?
? Require ROOT_PATH. '/a/config. php ';
? Require ROOT_PATH. '/a/controller. class. php ';
? Require ROOT_PATH. '/a/view. class. php ';
? Require ROOT_PATH. '/a/model. class. php ';
??
?>
Bytes ----------------------------------------------------------------------------------------------
Config. php file
? If (! Defined ('isexist '))
? ? Exit ("run the program from the entry file ");
? $ C = array (
? 'URL _ mode' => 1, // url mode. 1 indicates normal MODE, and 2 indicates path_info MODE.
? 'Default' => 'Welcome ', // DEFAULT controller
? 'Default _ action' => 'index' // DEFAULT method
? );
?>
Bytes -----------------------------------------------------------------------------------------------
Controller. class. php file
?
Class Controller
{
? Public function Run ()
? {
? $ This-> Analysis ();
? // Start to parse the URL to obtain the request controller and method
? $ Control = $ _ GET ['con '];
? $ Action = $ _ GET ['AC'];
? $ Action = ucfirst ($ action );
? // Construct the path of the controller file
? $ ControlFile = ROOT_PATH. '/Controllers/'. $ control. '. class. php ';
? If (! File_exists ($ controlFile) // if the file does not exist, an error is Prompted. otherwise
? {?
? Exit ("{$ control}. class. php controller does not exist
"." Check whether ". $ controlFile." exists.
");
? }
? Include ($ controlFile );
? $ Class = ucfirst ($ control); // capital the first letter of each word in the controller name as the class name of the controller.
? If (! Class_exists ($ class) // determines whether the class exists. If no, an error is returned.
? {
? Exit ("controller class not defined in {$ control}. class. php". $ class );
?}
? $ Instance = new $ class (); // otherwise, create an instance.
? If (! Method_exists ($ instance, $ action) // checks whether the $ action method exists in the instance $ instance. if the $ action method does not exist, an error is prompted.
? {
? Exit ("$ class does not have a method:". $ action );
?}
? $ Instance-> $ action ();
?}
?
?
?
? Protected function Analysis ()
? {
? // $ GLOBALS ['c'] ['url _ mode'];
? Global $ C; // contains the global configuration array, which is defined in the Config. ph file. The global declaration $ C calls the external
? If ($ C ['url _ mode'] = 1)
? // If the URL mode is 1, GET the controller in GET, that is, the url address is [url = http: // localhost/index. php? C] http: // localhost/index. php? C [/url] = controller & a = method
? {
? $ Control =! Empty ($ _ GET ['con '])? Trim ($ _ GET ['con ']): '';
? $ Action =! Empty ($ _ GET ['AC'])? Trim ($ _ GET ['AC']): '';
?}
? Else if ($ C ['url _ mode'] = 2) // if it is 2, The PATH_INFO MODE is used, that is, the URL address is like this? ? [Url = http: // localhost/index. php/] http: // localhost/index. php/[/url] controller/method/Other parameters
? {
? If (isset ($ _ SERVER ['path _ info'])
? {
? // $ _ SERVER ['path _ info'] the PATH after the file name in the URL address. it is hard to understand. let's take a look at the example.
? // For example, if your current URL is [url = http://www.php100.com/index.php#http://www.php100.com/index.php#/url], your $ _ SERVER ['path _ info'] is blank.
? // However, if the URL is [url = response
? // The current $ _ SERVER ['path _ info'] value will be the content after the index. php file name/abc/123/
? $ Path = trim ($ _ SERVER ['path _ info'], '/');
? $ Paths = explode ('/', $ path );
? $ Control = array_shift ($ paths );
? $ Action = array_shift ($ paths );
?}
?}
? // Check whether the controller value is null. if it is null, use the default value.
? $ _ GET ['con '] =! Empty ($ control )? $ Control: $ C ['default'];
? // Same as above
? $ _ GET ['AC'] =! Empty ($ action )? $ Action: $ C ['default _ action'];
?}
}
?>
Bytes --------------------------------------------------------------------------------------------------
Welcome. class. php file
?
? Class Welcome
? {
? ? Function Index ()
? ? {
? ? Echo 'Welcome to this CMS system ';
? ?}
? ? Function Run ()
? ? {
? ? Echo 'hello ';
? ?}
? ?
? ? Function Show ()
? ? {
? ? Echo 'method name show ';
? ?}
? }
?>
?