Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
<?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>&lt;?php</code> and <code>?&gt;</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
-->