Permalink
Cannot retrieve contributors at this time
219 lines (213 sloc)
9 KB
<?xml version="1.0" encoding="utf-8"?> | |
<!-- $Revision$ --> | |
<chapter xml:id="introduction" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> | |
<info><title>Introduction</title></info> | |
<section xml:id="intro-whatis"> | |
<info><title>What is PHP?</title></info> | |
<para> | |
<acronym>PHP</acronym> (recursive acronym for <literal>PHP: Hypertext | |
Preprocessor</literal>) is a widely-used open source general-purpose | |
scripting language that is especially suited for web | |
development and can be embedded into HTML. | |
</para> | |
<para> | |
Nice, but what does that mean? An example: | |
</para> | |
<para> | |
<example> | |
<info><title>An introductory example</title></info> | |
<programlisting role="php"> | |
<![CDATA[ | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Example</title> | |
</head> | |
<body> | |
<?php | |
echo "Hi, I'm a PHP script!"; | |
?> | |
</body> | |
</html> | |
]]> | |
</programlisting> | |
</example> | |
</para> | |
<para> | |
Instead of lots of commands to output HTML (as seen in C or Perl), | |
PHP pages contain HTML with embedded code that does | |
"something" (in this case, output "Hi, I'm a PHP script!"). | |
The PHP code is enclosed in special <link | |
linkend="language.basic-syntax.phpmode">start and end processing | |
instructions <code><?php</code> and <code>?></code></link> | |
that allow you to jump into and out of "PHP mode." | |
</para> | |
<para> | |
What distinguishes PHP from something like client-side JavaScript | |
is that the code is executed on the server, generating HTML which | |
is then sent to the client. The client would receive | |
the results of running that script, but would not know | |
what the underlying code was. You can even configure your web server | |
to process all your HTML files with PHP, and then there's really no | |
way that users can tell what you have up your sleeve. | |
</para> | |
<para> | |
The best things in using PHP are that it is extremely simple | |
for a newcomer, but offers many advanced features for | |
a professional programmer. Don't be afraid reading the long | |
list of PHP's features. You can jump in, in a short time, and | |
start writing simple scripts in a few hours. | |
</para> | |
<para> | |
Although PHP's development is focused on server-side scripting, | |
you can do much more with it. Read on, and see more in the | |
<link linkend="intro-whatcando">What can PHP do?</link> section, | |
or go right to the <link linkend="tutorial">introductory | |
tutorial</link> if you are only interested in web programming. | |
</para> | |
</section> | |
<section xml:id="intro-whatcando"> | |
<info><title>What can PHP do?</title></info> | |
<para> | |
Anything. PHP is mainly focused on server-side scripting, | |
so you can do anything any other CGI program can do, such | |
as collect form data, generate dynamic page content, or | |
send and receive cookies. But PHP can do much more. | |
</para> | |
<para> | |
There are three main areas where PHP scripts are used. | |
<itemizedlist> | |
<listitem> | |
<simpara> | |
Server-side scripting. This is the most traditional | |
and main target field for PHP. You need three things | |
to make this work: the PHP parser (CGI or server | |
module), a web server and a web browser. You need to | |
run the web server, with a connected PHP installation. | |
You can access the PHP program output with a web browser, | |
viewing the PHP page through the server. All these can | |
run on your home machine if you are just experimenting | |
with PHP programming. See the | |
<link linkend="install">installation instructions</link> | |
section for more information. | |
</simpara> | |
</listitem> | |
<listitem> | |
<simpara> | |
Command line scripting. You can make a PHP script | |
to run it without any server or browser. | |
You only need the PHP parser to use it this way. | |
This type of usage is ideal for scripts regularly | |
executed using cron (on *nix or Linux) or Task Scheduler (on | |
Windows). These scripts can also be used for simple text | |
processing tasks. See the section about | |
<link linkend="features.commandline">Command line usage of PHP</link> | |
for more information. | |
</simpara> | |
</listitem> | |
<listitem> | |
<simpara> | |
Writing desktop applications. PHP is probably | |
not the very best language to create a desktop | |
application with a graphical user interface, but if | |
you know PHP very well, and would like to use some | |
advanced PHP features in your client-side applications | |
you can also use PHP-GTK to write such programs. You also | |
have the ability to write cross-platform applications this | |
way. PHP-GTK is an extension to PHP, not available in | |
the main distribution. If you are interested | |
in PHP-GTK, visit <link xlink:href="&url.php.gtk;">its | |
own website</link>. | |
</simpara> | |
</listitem> | |
</itemizedlist> | |
</para> | |
<para> | |
PHP can be <link linkend="install">used</link> on all major operating systems, including | |
Linux, many Unix variants (including HP-UX, Solaris and OpenBSD), | |
Microsoft Windows, macOS, RISC OS, and probably others. | |
PHP also has support for most of the web servers today. This | |
includes Apache, IIS, and many others. And this includes any | |
web server that can utilize the FastCGI PHP binary, like lighttpd | |
and nginx. PHP works as either a module, or as a CGI processor. | |
</para> | |
<para> | |
So with PHP, you have the freedom of choosing an operating | |
system and a web server. Furthermore, you also have the choice | |
of using procedural programming or object-oriented | |
programming (OOP), or a mixture of them both. | |
</para> | |
<para> | |
With PHP you are not limited to output HTML. PHP's abilities | |
includes outputting images, PDF files and even Flash movies | |
(using libswf and Ming) generated on the fly. You can also | |
output easily any text, such as XHTML and any other XML file. | |
PHP can autogenerate these files, and save them in the file | |
system, instead of printing it out, forming a server-side | |
cache for your dynamic content. | |
</para> | |
<para> | |
One of the strongest and most significant features in PHP is its | |
support for a <link linkend="refs.database">wide range of databases</link>. | |
Writing a database-enabled web page is incredibly simple using one of | |
the database specific extensions (e.g., for <link linkend="book.mysqli">mysql</link>), | |
or using an abstraction layer like <link linkend="book.pdo">PDO</link>, or connect | |
to any database supporting the Open Database Connection standard via the | |
<link linkend="book.uodbc">ODBC</link> extension. Other databases may utilize | |
<link linkend="book.curl">cURL</link> or <link linkend="book.sockets">sockets</link>, | |
like CouchDB. | |
</para> | |
<para> | |
PHP also has support for talking to other services using protocols | |
such as LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (on Windows) and | |
countless others. You can also open raw network sockets and | |
interact using any other protocol. PHP has support for the WDDX | |
complex data exchange between virtually all Web programming | |
languages. Talking about interconnection, PHP has support for | |
instantiation of Java objects and using them transparently | |
as PHP objects. | |
</para> | |
<para> | |
PHP has useful <link linkend="refs.basic.text">text processing</link> features, | |
which includes the Perl compatible regular expressions (<link linkend="book.pcre">PCRE</link>), | |
and many extensions and tools to <link linkend="refs.xml">parse and access XML documents</link>. | |
PHP standardizes all of the XML extensions on the solid base of <link linkend="book.libxml">libxml2</link>, | |
and extends the feature set adding <link linkend="book.simplexml">SimpleXML</link>, | |
<link linkend="book.xmlreader">XMLReader</link> and <link linkend="book.xmlwriter">XMLWriter</link> support. | |
</para> | |
<para> | |
And many other interesting extensions exist, which are categorized both | |
<link linkend="extensions">alphabetically</link> and by <link linkend="funcref">category</link>. | |
And there are additional PECL extensions that may or may not be documented | |
within the PHP manual itself, like <link xlink:href="&url.xdebug;">XDebug</link>. | |
</para> | |
<para> | |
As you can see this page is not enough to list all | |
the features and benefits PHP can offer. Read on in | |
the sections about <link linkend="install">installing | |
PHP</link>, and see the <link linkend="funcref">function | |
reference</link> part for explanation of the extensions | |
mentioned here. | |
</para> | |
</section> | |
</chapter> | |
<!-- Keep this comment at the end of the file | |
Local variables: | |
mode: sgml | |
sgml-omittag:t | |
sgml-shorttag:t | |
sgml-minimize-attributes:nil | |
sgml-always-quote-attributes:t | |
sgml-indent-step:1 | |
sgml-indent-data:t | |
indent-tabs-mode:nil | |
sgml-parent-document:nil | |
sgml-default-dtd-file:"~/.phpdoc/manual.ced" | |
sgml-exposed-tags:nil | |
sgml-local-catalogs:nil | |
sgml-local-ecat-files:nil | |
End: | |
vim600: syn=xml fen fdm=syntax fdl=2 si | |
vim: et tw=78 syn=sgml | |
vi: ts=1 sw=1 | |
--> |