PHP: Difference between revisions

636 bytes added ,  25 May 2020
m
If you use PHP for a set of web pages, you can make your web suite very much easier to maintain by not putting every instruction into one script.
 
PHP allows you to use syntax like 'require' or 'include' to effectively bring in common code from other files. Put simply, when the PHP parser finds "require_once 'file_name';", "require 'file_name';", or the alternative include syntax, the parser reads the file referenced and treats it as if it is part of the original file from then onwards. "include" does not cause an error if it cannot find the file requested. "require" creates an error and aborts the main script if it cannot find the named file. The "_once" is used if the file you want to bring in includes setting variables that you later want to give a new value to, because your new value would be lost if the include happened again. Also a function can only be declared once so if script you select to bring in contains one or more function definitions, either that script must check if function has already been declared before it declares it, or that script must be called with the "_once" variant. However, because using "_once" creates a considerable overhead, the parser must read all files currently loaded to see if the named script is referenced anywhere else, it is bad coding to use "require_once"/"include_once" variant if the aforementioned reasons don't make it necessary, instead just use plain "require" or "include".
There is almost no restriction on what you bring in:
*If you always include some HTML that is same on every web page, bring that in by specifying a HTML file, the normal file extension is '''.html'''.
**Remember, a standard header (and footer) can make all your web pages look similar and more professional, doing it this way means there is only one place where you need to edit to change that look. But remember it must be exactly same for every web page as any file with a HTML file extension is normally ignored by the PHP parser, so only client scripts like JavaScript can change the content of a HTML file.
*If you have a standard header (or footer) to repeat on every web page, but want to be able to send it some PHP variables to modify some of the content (what CSS to use, you have a common navigation menu but need to identify which page is the current one, you want to declare when the current web page had its structure or content last updated in a standard way on every web page), all of these and more can be achieved by using a php script. Remember to use the extension '''.php''' in the require/include and also to use a '''<?php''' to identify the start of the PHP in the file you are including. Don't use a '''?>''' in the require/include file, unless there is HTML directly after that in that file, because you have pHP next back in calling script.
**Remember, a standard header (and footer) can make all your web pages look similar and there is only one place where you need to edit to change that look. But equally using a script a web page can look different depending on any data you choose (time of day, current season, whether it is raining, how hot it is) or it can display different content depending on particular values.
*Some other scripts might contain standard functions (like connecting to a database, reading from a database, calculating highest or lowest, or they might contain some of your intellectual property in terms of a script that you want to place in a secure location only known when parsing within the web server, so cannot be accessed from the browser and so cannot be hacked.
*My examples quote extensions using .html or .php, but some people suggest all include scripts are stored in files with an extension '''.inc''' to make it clear that file is not intended to be used on its own, and other advice is to create a separate directory just for files used by require and include.
 
A common mistake with includes is to forget to specify the path correctly. If all files are in same directory use '''.\file_name.extension''' syntax, this is called relative paths and means the requested file is in same directory as calling file. Leaving out the prefix, and the PHP parser will load the first file it finds with that name following the defined'''include_path''' rules. A standard one might start with "./" as first path, but you cannot assume that is the first path if you are writing a script others might use. Equally if all the files to be included are in a common directory at same level as the directory where the calling files are use '''../common/file_name.extension''' syntax. If you are writing a script that might be used with different web pages, or even in batch, so you cannot be sure of the relative path between calling script and file to be included, declare the absolute path, if necessary using whatever constant represents the root (it might be $_SERVER[DOCUMENT_ROOT]) in the path.
5,838

edits