03-01-2004
Copyright © 1997, 1998, 1999, 2000, 2001, 2002 the PHP Documentation Group
Copyright
Tento manußl je © Copyright 1997, 1998, 1999, 2000, 2001, 2002 PHP Documentation Group. Seznam Φlen∙ tΘto skupiny je na titulnφ stran∞ tohoto manußlu.
Tento manußl lze redistribuovat podle podmφnek GNU General Public License publikovanΘ Free Software Foundation; bu∩ verzφ 2 tΘto Licence, nebo (dle va╣eho uvß╛enφ) kterΘkoliv pozd∞j╣φ verze.
Sekce tohoto manußlu "Roz╣φ°enφ PHP 4.0" je © 2000 Zend Technologies, Ltd. Tento materißl smφ b²t redistribuovßn pouze za podmφnek specifikovan²ch v Open Publication License v1.0 nebo pozd∞j╣φ (nejnov∞j╣φ verze je v souΦasnosti k dispozici na http://www.opencontent.org/openpub/).
PHP, co╛ znamenß "PHP: Hypertext Preprocessor", je ╣iroce pou╛φvan² mnoho·Φelov² skriptovacφ jazyk, ╣φ°en² pod Open Source licencφ, zvlß╣╗ vhodn² pro v²voj WWW aplikacφ a zp∙sobil² pro vklßdßnφ do HTML. Velkß Φßst jeho syntaxe je vyp∙jΦenß z C, Javy a Perlu. Cφlem tohoto jazyka je je umo╛nit webov²m v²vojß°um rychle psßt dynamicky generovanΘ strßnky - ale s PHP m∙╛ete d∞lat mnohem vφc!
Tento manußl je tvo°en p°edev╣φm referenΦnφ p°φruΦkou funkcφ, ale obsahuje takΘ refereΦnφ p°φruΦku jazyka, vysv∞tlenφ hlavnφch vlastnostφ a mo╛nostφ PHP a r∙znΘ dopl≥kovΘ informace.
Manußl si m∙╛ete stßhnout v r∙zn²ch formßtech na http://www.php.net/docs.php. Soubory ke sta╛enφ se aktualizujφ v╛dy p°i zm∞n∞ obsahu. Vφce informacφ o tom, jak je tento manußl vytvß°en, najdete v dodatku 'O manußlu'.
PHP (recursive acronym for "PHP: Hypertext Preprocessor") is a widely-used Open Source general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.
Simple answer, but what does that mean? An example:
Notice how this is different from a script written in other languages like Perl or C -- instead of writing a program with lots of commands to output HTML, you write an HTML script with some embedded code to do something (in this case, output some text). The PHP code is enclosed in special start and end tags that allow you to jump into and out of "PHP mode".
What distinguishes PHP from something like client-side JavaScript is that the code is executed on the server. If you were to have a script similar to the above on your server, the client would receive the results of running that script, with no way of determining what the underlying code may be. 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.
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.
Although PHP's development is focused on server-side scripting, you can do much more with it. Read on, and see more in the What can PHP do? section.
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.
There are three main fields where PHP scripts are used.
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 webserver and a web browser. You need to run the webserver, with a connected PHP installation. You can access the PHP program output with a web browser, viewing the PHP page through the server. See the installation instructions section for more information.
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 Command line usage of PHP for more information.
Writing client-side GUI applications. PHP is probably not the very best language to write windowing applications, 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 its own website.
PHP can be used on all major operating systems, including Linux, many Unix variants (including HP-UX, Solaris and OpenBSD), Microsoft Windows, Mac OS X, RISC OS, and probably others. PHP has also support for most of the web servers today. This includes Apache, Microsoft Internet Information Server, Personal Web Server, Netscape and iPlanet servers, Oreilly Website Pro server, Caudium, Xitami, OmniHTTPd, and many others. For the majority of the servers PHP has a module, for the others supporting the CGI standard, PHP can work as a CGI processor.
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, or a mixture of them. Although not every standard OOP feature is realized in the current version of PHP, many code libraries and large applications (including the PEAR library) are written only using OOP code.
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.
One of the strongest and most significant feature in PHP is its support for a wide range of databases. Writing a database-enabled web page is incredibly simple. The following databases are currently supported:
We also have a DBX database abstraction extension allowing you to transparently use any database supported by that extension. Additionally PHP supports ODBC, the Open Database Connection standard, so you can connect to any other database supporting this world standard.
Adabas D Ingres Oracle (OCI7 and OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) mSQL Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm
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. You can also use our CORBA extension to access remote objects.
PHP has extremely useful text processing features, from the POSIX Extended or Perl regular expressions to parsing XML documents. For parsing and accessing XML documents, we support the SAX and DOM standards. You can use our XSLT extension to transform XML documents.
While using PHP in the e-commerce field, you'll find the Cybercash payment, CyberMUT, VeriSign Payflow Pro and CCVS functions useful for your online payment programs.
At last but not least, we have many other interesting extensions, the mnoGoSearch search engine functions, the IRC Gateway functions, many compression utilities (gzip, bz2), calendar conversion, translation...
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 installing PHP, and see the function reference part for explanation of the extensions mentioned here.
Here we would like to show the very basics of PHP in a short, simple tutorial. This text only deals with dynamic webpage creation with PHP, though PHP is not only capable of creating webpages. See the section titled What can PHP do for more information.
PHP-enabled web pages are treated just like regular HTML pages and you can create and edit them the same way you normally create regular HTML pages.
In this tutorial we assume that your server has activated support for PHP and that all files ending in .php are handled by PHP. On most servers, this is the default extension for PHP files, but ask your server administrator to be sure. If your server supports PHP, then you do not need to do anything. Just create your .php files, put them in your web directory and the server will automatically parse them for you. There is no need to compile anything nor do you need to install any extra tools. Think of these PHP-enabled files as simple HTML files with a whole new family of magical tags that let you do all sorts of things. Most web hosts offer PHP support, but if your host does not consider reading the PHP Links section for resources on finding PHP enabled web hosts.
Let us say you want to save precious bandwidth and develop locally. In this case, you will want to install a web server, such as Apache, and of course PHP. You will most likely want to install a database as well, such as MySQL. You can either install these individually or choose a simpler way. Locate a pre-configured package which automatically installs all of these with just a few mouse clicks. It is easy to setup a web server with PHP support on any operating system, including Linux and Windows. On Linux, you may find rpmfind and PBone helpful for locating RPMs.
Create a file named hello.php and put it in your web servers root directory (DOCUMENT_ROOT) with the following content:
Note that this is not like a CGI script. The file does not need to be executable or special in any way. Think of it as a normal HTML file which happens to have a set of special tags available to you that do a lot of interesting things.
This program is extremely simple and you really did not need to use PHP to create a page like this. All it does is display: Hello World using the PHP echo() statement.
If you tried this example and it did not output anything, or it prompted for download, or you see the whole file as text, chances are that the server you are on does not have PHP enabled. Ask your administrator to enable it for you using the Installation chapter of the manual. If you are developing locally, also read the installation chapter to make sure everything is configured properly. If problems continue to persist, do not hesitate to use one of the many PHP support options.
The point of the example is to show the special PHP tag format. In this example we used <?php to indicate the start of a PHP tag. Then we put the PHP statement and left PHP mode by adding the closing tag, ?>. You may jump in and out of PHP mode in an HTML file like this all you want. For more details, read the manual section on basic PHP syntax.
A Note on Text Editors: There are many text editors and Integrated Development Environments (IDEs) that you can use to create, edit and manage PHP files. A partial list of these tools is maintained at PHP Editor's List. If you wish to recommend an editor, please visit the above page and ask the page maintainer to add the editor to the list. Having an editor with syntax highlighting can be helpful.
A Note on Word Processors: Word processors such as StarOffice Writer, Microsoft Word and Abiword are not optimal for editing PHP files. If you wish to use one for this test script, you must ensure that you save the file as PLAIN TEXT or PHP will not be able to read and execute the script.
A Note on Windows Notepad: If you are writing your PHP scripts using Windows Notepad, you will need to ensure that your files are saved with the .php extension. (Notepad adds a .txt extension to files automatically unless you take one of the following steps to prevent it.) When you save the file and are prompted to provide a name for the file, place the filename in quotes (i.e. "hello.php"). Alternately, you can click on the 'Text Documents' drop-down menu in the save dialog box and change the setting to "All Files". You can then enter your filename without quotes.
Now that you have successfully created a working PHP script, it is time to create the most famous PHP script! Make a call to the phpinfo() function and you will see a lot of useful information about your system and setup such as available predefined variables, loaded PHP modules, and configuration settings. Take some time and review this important information.
Let us do something more useful now. We are going to check what sort of browser the visitor is using. For that, we check the user agent string the browser sends as part of the HTTP request. This information is stored in a variable. Variables always start with a dollar-sign in PHP. The variable we are interested in right now is $_SERVER["HTTP_USER_AGENT"].
Poznßmka: $_SERVER is a special reserved PHP variable that contains all web server information. It is known as an autoglobal (or superglobal). See the related manual page on autoglobals for more information. These special variables were introduced in PHP 4.1.0. Before this time, we used the older $HTTP_*_VARS arrays instead, such as $HTTP_SERVER_VARS. Although deprecated, these older variables still exist. (See also the note on old code.)
To display this variable, you can simply do:
There are many types of variables available in PHP. In the above example we printed an Array element. Arrays can be very useful.
$_SERVER is just one variable that is automatically made available to you by PHP. A list can be seen in the Reserved Variables section of the manual or you can get a complete list of them by creating a file that looks like this:
When you load up this file in your browser, you will see a page full of information about PHP along with a list of all the variables available to you.
You can put multiple PHP statements inside a PHP tag and create little blocks of code that do more than just a single echo. For example, if you want to check for Internet Explorer you can do this:
P°φklad 2-4. Example using control structures and functions
A sample output of this script may be:
|
Here we introduce a couple of new concepts. We have an if statement. If you are familiar with the basic syntax used by the C language, this should look logical to you. Otherwise, you should probably pick up any introductory PHP book and read the first couple of chapters, or read the Language Reference part of the manual. You can find a list of PHP books at http://www.php.net/books.php.
The second concept we introduced was the strpos() function call. strpos() is a function built into PHP which searches a string for another string. In this case we are looking for "MSIE" (so-called needle) inside $_SERVER["HTTP_USER_AGENT"] (so-called haystack). If the needle is found inside the haystack, the function returns the position of the needle relative to the start of the haystack. Otherwise, it returns FALSE. If it does not return FALSE, the if expression evaluates to TRUE and the code within its {braces} is executed. Otherwise, the code is not run. Feel free to create similar examples, with if, else, and other functions such as strtoupper() and strlen(). Each related manual page contains examples too. If you are unsure how to use functions, you will want to read both the manual page on how to read a function definition and the section about PHP functions.
We can take this a step further and show how you can jump in and out of PHP mode even in the middle of a PHP block:
P°φklad 2-5. Mixing both HTML and PHP modes
A sample output of this script may be:
|
Instead of using a PHP echo statement to output something, we jumped out of PHP mode and just sent straight HTML. The important and powerful point to note here is that the logical flow of the script remains intact. Only one of the HTML blocks will end up getting sent to the viewer depending on the result of strpos(). In other words, it depends on whether the string MSIE was found or not.
One of the most powerful features of PHP is the way it handles HTML forms. The basic concept that is important to understand is that any form element in a form will automatically be available to your PHP scripts. Please read the manual section on Variables from outside of PHP for more information and examples on using forms with PHP. Here is an example HTML form:
There is nothing special about this form. It is a straight HTML form with no special tags of any kind. When the user fills in this form and hits the submit button, the action.php page is called. In this file you would have something like this:
It should be obvious what this does. There is nothing more to it. The $_POST["name"] and $_POST["age"] variables are automatically set for you by PHP. Earlier we used the $_SERVER autoglobal, now above we just introduced the $_POST autoglobal which contains all POST data. Notice how the method of our form is POST. If we used the method GET then our form information would live in the $_GET autoglobal instead. You may also use the $_REQUEST autoglobal, if you do not care about the source of your request data. It contains the merged information of GET, POST and COOKIE data. Also see the import_request_variables() function.
Now that PHP has grown to be a popular scripting language, there are a lot of public repositories/libraries containing code you can reuse. The PHP developers have largely tried to preserve backwards compatibility, so a script written for an older version will run (ideally) without changes in a newer version of PHP. In practice, some changes will usually be needed.
Two of the most important recent changes that affect old code are:
The deprecation of the old $HTTP_*_VARS arrays (which need to be indicated as global when used inside a function or method). The following autoglobal arrays were introduced in PHP 4.1.0. They are: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST, and $_SESSION. The older $HTTP_*_VARS arrays, such as $HTTP_POST_VARS, still exist and have since PHP 3. Od PHP 5.0.0 mohou b²t dlouhΘ p°eddefinovanΘ pole zakßzanΘ direktivou register_long_arrays.
External variables are no longer registered in the global scope by default. In other words, as of PHP 4.2.0 the PHP directive register_globals is off by default in php.ini. The preferred method of accessing these values is via the autoglobal arrays mentioned above. Older scripts, books, and tutorials may rely on this directive being on. If on, for example, one could use $id from the URL http://www.example.com/foo.php?id=42. Whether on or off, $_GET['id'] is available.
With your new knowledge you should be able to understand most of the manual and also the various example scripts available in the example archives. You can also find other examples on the php.net websites in the links section: http://www.php.net/links.php.
To view various slide presentations that show more of what PHP can do, see the PHP Conference Material Sites: http://conf.php.net/ and http://talks.php.net/
Before installing first, you need to know what do you want to use PHP for. There are three main fields you can use PHP, as described in the What can PHP do? section:
Server-side scripting
Command line scripting
Client-side GUI applications
For the first and most common form, you need three things: PHP itself, a web server and a web browser. You probably already have a web browser, and depending on your operating system setup, you may also have a web server (e.g. Apache on Linux or IIS on Windows). You may also rent webspace at a company. This way, you don't need to set up anything on your own, only write your PHP scripts, upload it to the server you rent, and see the results in your browser.
While setting up the server and PHP on your own, you have two choices for the method of connecting PHP to the server. For many servers PHP has a direct module interface (also called SAPI). These servers include Apache, Microsoft Internet Information Server, Netscape and iPlanet servers. Many other servers have support for ISAPI, the Microsoft module interface (OmniHTTPd for example). If PHP has no module support for your web server, you can always use it as a CGI processor. This means you set up your server to use the command line executable of PHP (php.exe on Windows) to process all PHP file requests on the server.
If you are also interested to use PHP for command line scripting (e.g. write scripts autogenerating some images for you offline, or processing text files depending on some arguments you pass to them), you always need the command line executable. For more information, read the section about writing command line PHP applications. In this case, you need no server and no browser.
With PHP you can also write client side GUI applications using the PHP-GTK extension. This is a completely different approach than writing web pages, as you do not output any HTML, but manage windows and objects within them. For more information about PHP-GTK, please visit the site dedicated to this extension. PHP-GTK is not included in the official PHP distribution.
From now on, this section deals with setting up PHP for web servers on Unix and Windows with server module interfaces and CGI executables.
Downloading PHP, the source code, and binary distributions for Windows can be found at http://www.php.net/downloads.php. We recommend you to choose a mirror nearest to you for downloading the distributions.
This section contains notes and hints specific to installing PHP on HP-UX systems. (Contributed by paul_mckay at clearwater-it dot co dot uk).
Poznßmka: These tips were written for PHP 4.0.4 and Apache 1.3.9.
You need gzip, download a binary distribution from http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd-10.20.depot.Z uncompress the file and install using swinstall.
You need gcc, download a binary distribution from http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-10.20.depot.gz. uncompress this file and install gcc using swinstall.
You need the GNU binutils, you can download a binary distribution from http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.9.1-sd-10.20.depot.gz. uncompress this file and install binutils using swinstall.
You now need bison, you can download a binary distribution from http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-10.20.depot.gz, install as above.
You now need flex, you need to download the source from one of the http://www.gnu.org mirrors. It is in the non-gnu directory of the ftp site. Download the file, gunzip, then tar -xvf it. Go into the newly created flex directory and run ./configure, followed by make, and then make install.
If you have errors here, it's probably because gcc etc. are not in your PATH so add them to your PATH.
Download the PHP and apache sources.
gunzip and tar -xvf them. We need to hack a couple of files so that they can compile OK.
Firstly the configure file needs to be hacked because it seems to lose track of the fact that you are a hpux machine, there will be a better way of doing this but a cheap and cheerful hack is to put lt_target=hpux10.20 on line 47286 of the configure script.
Next, the Apache GuessOS file needs to be hacked. Under apache_1.3.9/src/helpers change line 89 from echo "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0 to: echo "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0
You cannot install PHP as a shared object under HP-UX so you must compile it as a static, just follow the instructions at the Apache page.
PHP and Apache should have compiled OK, but Apache won't start. you need to create a new user for Apache, e.g. www, or apache. You then change lines 252 and 253 of the conf/httpd.conf in Apache so that instead of
User nobody Group nogroup |
you have something like
User www Group sys |
This is because you can't run Apache as nobody under hp-ux. Apache and PHP should then work.
This section contains notes and hints specific to installing PHP on Linux distributions.
Many Linux distributions have some sort of package installation system, such as RPM. This can assist in setting up a standard configuration, but if you need to have a different set of features (such as a secure server, or a different database driver), you may need to build PHP and/or your webserver. If you are unfamiliar with building and compiling your own software, it is worth checking to see whether somebody has already built a packaged version of PHP with the features you need.
This section contains notes and hints specific to installing PHP on Mac OS X Server.
There are a few pre-packaged and pre-compiled versions of PHP for Mac OS X. This can help in setting up a standard configuration, but if you need to have a different set of features (such as a secure server, or a different database driver), you may need to build PHP and/or your web server yourself. If you are unfamiliar with building and compiling your own software, it's worth checking whether somebody has already built a packaged version of PHP with the features you need.
There are two slightly different versions of Mac OS X, client and server. The following is for OS X Server.
Get the latest distributions of Apache and PHP.
Untar them, and run the configure program on Apache like so.
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache |
If you want the compiler to do some optimization., you may also want to add this line:
setenv OPTIM=-O2 |
Next, go to the PHP 4 source directory and configure it.
./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/share/man \ --with-xml \ --with-apache=/src/apache_1.3.12 |
Type make and make install. This will add a directory to your Apache source directory under src/modules/php4.
Now, reconfigure Apache to build in PHP 4.
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache \ --activate-module=src/modules/php4/libphp4.a |
Copy and rename the php.ini-dist file to your bin directory from your PHP 4 source directory: cp php.ini-dist /usr/local/bin/php.ini or (if your don't have a local directory) cp php.ini-dist /usr/bin/php.ini.
Those tips are graciously provided by Marc Liyanage.
The PHP module for the Apache web server included in Mac OS X. This version includes support for the MySQL and PostgreSQL databases.
NOTE: Be careful when you do this, you could screw up your Apache web server!
Do this to install:
Open a terminal window.
Type wget http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz, wait for the download to finish.
Type gunzip libphp4.so.gz.
Type sudo apxs -i -a -n php4 libphp4.so
Now type sudo open -a TextEdit /etc/httpd/httpd.conf. TextEdit will open with the web server configuration file. Locate these two lines towards the end of the file: (Use the Find command)
#AddType application/x-httpd-php .php #AddType application/x-httpd-php-source .phps |
Finally, type sudo apachectl graceful to restart the web server.
PHP should now be up and running. You can test it by dropping a file into your Sites folder which is called test.php. Into that file, write this line: <?php phpinfo() ?>.
Now open up 127.0.0.1/~your_username/test.php in your web browser. You should see a status table with information about the PHP module.
This section contains notes and hints specific to installing PHP on OpenBSD 3.4.
Using binary packages to install PHP on OpenBSD is the recommended and simplest method. The core package has been separated from the various modules, and each can be installed and removed independently from the others. The files you need can be found on your OpenBSD CD or on the FTP site.
The main package you need to install is php4-core-4.3.3.tgz, which contains the basic engine (plus gettext and iconv). Next, take a look at the module packages, such as php4-mysql-4.3.3.tgz or php4-imap-4.3.3.tgz. You need to use the phpxs command to activate and deactivate these modules in your php.ini.
P°φklad 3-1. OpenBSD Package Install Example
|
Read the packages(7) manual page for more information about binary packages on OpenBSD.
You can also compile up PHP from source using the ports tree. However, this is only recommended for users familiar with OpenBSD. The PHP 4 port is split into two sub-directories: core and extensions. The extensions directory generates sub-packages for all of the supported PHP modules. If you find you do not want to create some of these modules, use the no_* FLAVOR. For example, to skip building the imap module, set the FLAVOR to no_imap.
The default install of Apache runs inside a chroot(2) jail, which will restrict PHP scripts to accessing files under /var/www. You will therefore need to create a /var/www/tmp directory for PHP session files to be stored, or use an alternative session backend. In addition, database sockets need to be placed inside the jail or listen on the localhost interface. If you use network functions, some files from /etc such as /etc/resolv.conf and /etc/services will need to be moved into /var/www/etc. The OpenBSD PEAR package automatically installs into the correct chroot directories, so no special modification is needed there. More information on the OpenBSD Apache is available in the OpenBSD FAQ.
The OpenBSD 3.4 package for the gd extension requires XFree86 to be installed. If you do not wish to use some of the font features that require X11, install the php4-gd-4.3.3-no_x11.tgz package instead.
Older releases of OpenBSD used the FLAVORS system to compile up a statically linked PHP. Since it is hard to generate binary packages using this method, it is now deprecated. You can still use the old stable ports trees if you wish, but they are unsupported by the OpenBSD team. If you have any comments about this, the current maintainer for the port is Anil Madhavapeddy (avsm at openbsd dot org).
This section contains notes and hints specific to installing PHP on Solaris systems.
Solaris installs often lack C compilers and their related tools. Read this FAQ for information on why using GNU versions for some of these tools is necessary. The required software is as follows:
gcc (recommended, other C compilers may work)
make
flex
bison
m4
autoconf
automake
perl
gzip
tar
GNU sed
This section will guide you through the general configuration and installation of PHP on Unix systems. Be sure to investigate any sections specific to your platform or web server before you begin the process.
Prerequisite knowledge and software:
Basic Unix skills (being able to operate "make" and a C compiler, if compiling)
An ANSI C compiler (if compiling)
flex (for compiling)
bison (for compiling)
A web server
Any module specific components (such as gd, pdf libs, etc.)
There are several ways to install PHP for the Unix platform, either with a compile and configure process, or through various pre-packaged methods. This documentation is mainly focused around the process of compiling and configuring PHP.
The initial PHP setup and configuration process is controlled by the use of the commandline options of the configure script. This page outlines the usage of the most common options, but there are many others to play with. Check out the Complete list of configure options for an exhaustive rundown. There are several ways to install PHP:
As an Apache 1.x module or an Apache 2.x module.
As an Pike module for Caudium
For use with AOLServer, NSAPI, phttpd, Pi3Web, Roxen, thttpd, or Zeus.
As a CGI executable
PHP can be compiled in a number of different ways, but one of the most popular is as an Apache module. The following is a quick installation overview.
P°φklad 3-2. Quick Installation Instructions for PHP 4 (Apache Module Version)
|
When PHP is configured, you are ready to build the CGI executable. The command make should take care of this. If it fails and you can't figure out why, see the Problems section.
This section applies to Windows 98/Me and Windows NT/2000/XP. PHP will not work on 16 bit platforms such as Windows 3.1 and sometimes we refer to the supported Windows platforms as Win32. Windows 95 is no longer supported as of PHP 4.3.0.
There are two main ways to install PHP for Windows: either manually or by using the InstallShield installer.
If you have Microsoft Visual Studio, you can also build PHP from the original source code.
Once you have PHP installed on your Windows system, you may also want to load various extensions for added functionality.
The Windows PHP installer is available from the downloads page at http://www.php.net/downloads.php. This installs the CGI version of PHP and, for IIS, PWS, and Xitami, configures the web server as well.
Poznßmka: While the InstallShield installer is an easy way to make PHP work, it is restricted in many aspects, as automatic setup of extensions for example is not supported. The whole set of supported extensions is only available by downloading the zip binary distribution.
Install your selected HTTP server on your system and make sure that it works.
Run the executable installer and follow the instructions provided by the installation wizard. Two types of installation are supported - standard, which provides sensible defaults for all the settings it can, and advanced, which asks questions as it goes along.
The installation wizard gathers enough information to set up the php.ini file and configure the web server to use PHP. For IIS and also PWS on NT Workstation, a list of all the nodes on the server with script map settings is displayed, and you can choose those nodes to which you wish to add the PHP script mappings.
Once the installation has completed the installer will inform you if you need to restart your system, restart the server, or just start using PHP.
Varovßnφ |
Be aware, that this setup of PHP is not secure. If you would like to have a secure PHP setup, you'd better go on the manual way, and set every option carefully. This automatically working setup gives you an instantly working PHP installation, but it is not meant to be used on online servers. |
This install guide will help you manually install and configure PHP on your Windows webserver. The original version of this guide was compiled by Bob Silva, and can be found at http://www.umesd.k12.or.us/php/win32install.html. You need to download the zip binary distribution from the downloads page at http://www.php.net/downloads.php.
PHP 4 for Windows comes in three flavours - a CGI executable (php.exe), a CLI executable (sapi/php.exe) and some other SAPI modules:
php4apache.dll - Apache 1.3.x module |
php4apache2.dll - Apache 2.0.x module |
php4isapi.dll - ISAPI Module for ISAPI compliant webservers like IIS 4.0/PWS 4.0 or newer. |
php4nsapi.dll - Netscape/iPlanet module |
Varovßnφ |
The SAPI modules have been significantly improved in the 4.1 release, however, you may find that you encounter possible server errors or other server modules such as ASP failing, in older systems. |
DCOM and MDAC requirements: If you choose one of the SAPI modules and use Windows 95, be sure to download and install the DCOM update from the Microsoft DCOM pages. If you use Microsoft Windows 9x/NT4 download the latest version of the Microsoft Data Access Components (MDAC) for your platform. MDAC is available at http://www.microsoft.com/data/.
The following steps should be performed on all installations before any server specific instructions.
Extract the distribution file to a directory of your choice, c:\ is a good start. The zip package expands to a foldername like php-4.3.1-Win32 which is assumed to be renamed to php. For the sake of convenience and to be version independent the following steps assume your extracted version of PHP lives in c:\php. You might choose any other location but you probably do not want to use a path in which spaces are included (for example: C:\Program Files\PHP is not a good idea). Some web servers will crash if you do. The structure of your directory you extracted the zip file will look like:
c:\php | +--cli | | | |-php.exe -- CLI executable - ONLY for commandline scripting | | +--dlls -- support dlls for extensions --> Windows system directory | | | |-expat.dll | | | |-fdftk.dll | | | |-... | +--extensions -- extension dlls for PHP | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-.. | +--mibs -- support files for SNMP | | +--openssl -- support files for Openssl | | +--pdf-related -- support files for PDF | | +--sapi -- SAPI dlls | | | |-php4apache.dll | | | |-php4apache2.dll | | | |-php4isapi.dll | | | |-.. | |-install.txt | |-.. | |-php.exe -- CGI executable | |-.. | |-php.ini-dist | |-php.ini-recommended | |-php4ts.dll -- main dll --> Windows system directory | |-... |
The CGI binary - c:\php\php.exe -, the CLI binary - c:\php\cli\php.exe -, and the SAPI modules - c:\php\sapi\*.dll - rely on the main dll c:\php\php4ts.dll. You have to make sure, that this dll can be found by your PHP installation. The search order for this dll is as follows:
The same directory from where php.exe is called. In case you use a SAPI module the same directory from where your webserver loads the dll (e.g. php4apache.dll). |
Any directory in your Windows PATH environment variable. |
The best bet is to make php4ts.dll available, regardless which interface (CGI or SAPI module) you plan to use. To do so, you have to copy this dll to a directory on your Windows path. The best place is your Windows system directory:
C:\Windows\System for Windows 9x/ME |
C:\WINNT\System32 for Windows NT/2000 or C:\WINNT40\System32 for NT/2000 server |
C:\Windows\System32 for Windows XP |
The next step is to set up a valid configuration file for PHP, php.ini. There are two ini files distributed in the zip file, php.ini-dist and php.ini-recommended. We advise you to use php.ini-recommended, because we optimized the default settings in this file for performance, and security. Read this well documented file carefully and in addition study the ini settings and set every element manually yourself. If you would like to achieve the best security, then this is the way for you, although PHP works fine with these default ini files. Copy your chosen ini-file to a directory where PHP is able to find and rename it to php.ini. By default PHP searches php.ini in your Windows directory:
On Windows 9x/ME/XP copy your chosen ini file to your %WINDIR%, which is typically C:\Windows. |
On Windows NT/2000 copy your chosen ini file to your %WINDIR% or %SYSTEMROOT%, which is typically C:\WINNT or C:\WINNT40 for NT/2000 servers. |
If you're using NTFS on Windows NT, 2000 or XP, make sure that the user running the webserver has read permissions to your php.ini (e.g. make it readable by Everyone).
The following steps are optional.
Edit your new php.ini file. If you plan to use OmniHTTPd, do not follow the next step. Set the doc_root to point to your webservers document_root. For example:
Choose which extensions you would like to load when PHP starts. See the section about Windows extensions, about how to set up one, and what is already built in. Note that on a new installation it is advisable to first get PHP working and tested without any extensions before enabling them in php.ini.
On PWS and IIS, you can set the browscap configuration setting to point to: c:\windows\system\inetsrv\browscap.ini on Windows 9x/Me, c:\winnt\system32\inetsrv\browscap.ini on NT/2000, and c:\windows\system32\inetsrv\browscap.ini on XP.
Following this instructions you are done with the basic steps to setup PHP on Windows. The next step is to choose a webserver and enable it to run PHP. Installation instructions for the following webservers are available:
.. the Windows server family, Personal Web server (PWS) 3 and 4 or newer; Internet Information Server (IIS) 3 and 4 or newer.
.. the Apache servers Apache 1.3.x, and Apache 2.x.
.. the Netscape/iPlanet servers.
.. the OmniHTTPd server.
.. the Oreilly Website Pro server.
.. the Sambar server.
.. the Xitami server.
Before getting started, it is worthwhile answering the question: "Why is building on Windows so hard?" Two reasons come to mind:
Windows does not (yet) enjoy a large community of developers who are willing to freely share their source. As a direct result, the necessary investment in infrastructure required to support such development hasn't been made. By and large, what is available has been made possible by the porting of necessary utilities from Unix. Don't be surprised if some of this heritage shows through from time to time.
Pretty much all of the instructions that follow are of the "set and forget" variety. So sit back and try follow the instructions below as faithfully as you can.
To compile and build PHP you need a Microsoft Development Environment. Microsoft Visual C++ 6.0 is recommended. To extract the downloaded files you need a extraction utility (e.g.: Winzip). If you don't already have an unzip utility, you can get a free version from InfoZip.
Before you get started, you have to download...
..the win32 buildtools from the PHP site at http://www.php.net/extra/win32build.zip.
..the source code for the DNS name resolver used by PHP from http://www.php.net/extra/bindlib_w32.zip. This is a replacement for the resolv.lib library included in win32build.zip.
If you plan to compile PHP as a Apache module you will also need the Apache sources.
Finally, you are going to need the source to PHP 4 itself. You can get the latest development version using anonymous CVS, a snapshot or the most recent released source tarball.
After downloading the required packages you have to extract them in a proper place.
Create a working directory where all files end up after extracting, e.g: C:\work.
Create the directory win32build under your working directory (C:\work) and unzip win32build.zip into it.
Create the directory bindlib_w32 under your working directory (C:\work) and unzip bindlib_w32.zip into it.
Extract the downloaded PHP source code into your working directory (C:\work).
+--c:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-4.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib |
Poznßmka: Cygwin users may omit the last step. A properly installed Cygwin environment provides the mandatory files bison.simple and bison.exe.
The next step is to configure MVC ++ to prepare for compiling. Launch Microsoft Visual C++, and from the menu select Tools => Options. In the dialog, select the directories tab. Sequentially change the dropdown to Executables, Includes, and Library files. Your entries should look like this:
Executable files: c:\work\win32build\bin, Cygwin users: cygwin\bin
Include files: c:\work\win32build\include
Library files: c:\work\win32build\lib
You must build the resolv.lib library. Decide whether you want to have debug symbols available (bindlib - Win32 Debug) or not (bindlib - Win32 Release). Build the appropriate configuration:
For GUI users, launch VC++, and then select File => Open Workspace, navigate to c:\work\bindlib_w32 and select bindlib.dsw. Then select Build=>Set Active Configuration and select the desired configuration. Finally select Build=>Rebuild All.
For command line users, make sure that you either have the C++ environment variables registered, or have run vcvars.bat, and then execute one of the following commands:
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
The best way to get started is to build the CGI version.
For GUI users, launch VC++, and then select File => Open Workspace and select c:\work\php-4.x.x\win32\php4ts.dsw . Then select Build=>Set Active Configuration and select the desired configuration, either php4ts - Win32 Debug_TS or php4ts - Win32 Release_TS. Finally select Build=>Rebuild All.
For command line users, make sure that you either have the C++ environment variables registered, or have run vcvars.bat, and then execute one of the following commands from the c:\work\php-4.x.x\win32 directory:
msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
At this point, you should have a usable php.exe in either your c:\work\php-4.x.x.\Debug_TS or Release_TS subdirectories.
It is possible to do minor customization to the build process by editing the main/config.win32.h file. For example you can change the default location of php.ini, the built-in extensions, and the default location for your extensions.
Next you may want to build the CLI version which is designed to use PHP from the command line. The steps are the same as for building the CGI version, except you have to select the php4ts_cli - Win32 Debug_TS or php4ts_cli - Win32 Release_TS project file. After a successful compiling run you will find the php.exe in either the directory Release_TS\cli\ or Debug_TS\cli\.
Poznßmka: If you want to use PEAR and the comfortable command line installer, the CLI-SAPI is mandatory. For more information about PEAR and the installer read the documentation at the PEAR website.
In order to build the SAPI module (php4isapi.dll) for integrating PHP with Microsoft IIS, set your active configuration to php4isapi-whatever-config and build the desired dll.
After installing PHP and a webserver on Windows, you will probably want to install some extensions for added functionality. You can choose which extensions you would like to load when PHP starts by modifying your php.ini. You can also load a module dynamically in your script using dl().
The DLLs for PHP extensions are prefixed with 'php_' in PHP 4 (and 'php3_' in PHP 3). This prevents confusion between PHP extensions and their supporting libraries.
Poznßmka: In PHP 4.3.1 BCMath, Calendar, COM, Ctype, FTP, MySQL, ODBC, Overload, PCRE, Session, Tokenizer, WDDX, XML and Zlib support is built in. You don't need to load any additional extensions in order to use these functions. See your distributions README.txt or install.txt or this table for a list of built in modules.
The default location PHP searches for extensions is c:\php4\extensions. To change this setting to reflect your setup of PHP edit your php.ini file:
You will need to change the extension_dir setting to point to the directory where your extensions lives, or where you have placed your php_*.dll files. Please do not forget the last backslash. For example:
Enable the extension(s) in php.ini you want to use by uncommenting the extension=php_*.dll lines in php.ini. This is done by deleting the leading ; form the extension you want to load.
P°φklad 3-3. Enable Bzip2 extension for PHP-Windows
|
Some of the extensions need extra DLLs to work. Couple of them can be found in the distribution package, in the c:\php\dlls\ folder but some, for example Oracle (php_oci8.dll) require DLLs which are not bundled with the distribution package. Copy the bundled DLLs from c:\php\dlls folder to your Windows PATH, safe places are:
c:\windows\system for Windows 9x/Me |
c:\winnt\system32 for Windows NT/2000 |
c:\windows\system32 for Windows XP |
Poznßmka: If you are running a server module version of PHP remember to restart your webserver to reflect your changes to php.ini.
The following table describes some of the extensions available and required additional dlls.
Tabulka 3-1. PHP Extensions
Extension | Description | Notes |
---|---|---|
php_bz2.dll | bzip2 compression functions | None |
php_calendar.dll | Calendar conversion functions | Built in since PHP 4.0.3 |
php_cpdf.dll | ClibPDF functions | None |
php_crack.dll | Crack functions | None |
php3_crypt.dll | Crypt functions | unknown |
php_ctype.dll | ctype family functions | Built in since PHP 4.3.0 |
php_curl.dll | CURL, Client URL library functions | Requires: libeay32.dll, ssleay32.dll (bundled) |
php_cybercash.dll | Cybercash payment functions | PHP <= 4.2.0 |
php_db.dll | DBM functions | Deprecated. Use DBA instead (php_dba.dll) |
php_dba.dll | DBA: DataBase (dbm-style) Abstraction layer functions | None |
php_dbase.dll | dBase functions | None |
php3_dbm.dll | Berkeley DB2 library | unknown |
php_dbx.dll | dbx functions | |
php_domxml.dll | DOM XML functions | PHP <= 4.2.0 requires: libxml2.dll (bundled) PHP >= 4.3.0 requires: iconv.dll (bundled) |
php_dotnet.dll | .NET functions | PHP <= 4.1.1 |
php_exif.dll | Read EXIF headers from JPEG | None |
php_fbsql.dll | FrontBase functions | PHP <= 4.2.0 |
php_fdf.dll | FDF: Forms Data Format functions. | Requires: fdftk.dll (bundled) |
php_filepro.dll | filePro functions | Read-only access |
php_ftp.dll | FTP functions | Built-in since PHP 4.0.3 |
php_gd.dll | GD library image functions | Removed in PHP 4.3.2. Also note that truecolor functions are not available in GD1, instead, use php_gd2.dll. |
php_gd2.dll | GD library image functions | GD2 |
php_gettext.dll | Gettext functions | PHP <= 4.2.0 requires gnu_gettext.dll (bundled), PHP >= 4.2.3 requires libintl-1.dll, iconv.dll (bundled). |
php_hyperwave.dll | HyperWave functions | None |
php_iconv.dll | ICONV characterset conversion | Requires: iconv-1.3.dll (bundled), PHP >=4.2.1 iconv.dll |
php_ifx.dll | Informix functions | Requires: Informix libraries |
php_iisfunc.dll | IIS management functions | None |
php_imap.dll | IMAP POP3 and NNTP functions | PHP 3: php3_imap4r1.dll |
php_ingres.dll | Ingres II functions | Requires: Ingres II libraries |
php_interbase.dll | InterBase functions | Requires: gds32.dll (bundled) |
php_java.dll | Java functions | PHP <= 4.0.6 requires: jvm.dll (bundled) |
php_ldap.dll | LDAP functions | PHP <= 4.2.0 requires libsasl.dll (bundled), PHP >= 4.3.0 requires libeay32.dll, ssleay32.dll (bundled) |
php_mbstring.dll | Multi-Byte String functions | None |
php_mcrypt.dll | Mcrypt Encryption functions | Requires: libmcrypt.dll |
php_mhash.dll | Mhash functions | PHP >= 4.3.0 requires: libmhash.dll (bundled) |
php_mime_magic.dll | Mimetype functions | Requires: magic.mime (bundled) |
php_ming.dll | Ming functions for Flash | None |
php_msql.dll | mSQL functions | Requires: msql.dll (bundled) |
php3_msql1.dll | mSQL 1 client | unknown |
php3_msql2.dll | mSQL 2 client | unknown |
php_mssql.dll | MSSQL functions | Requires: ntwdblib.dll (bundled) |
php3_mysql.dll | MySQL functions | Built-in in PHP 4 |
php3_nsmail.dll | Netscape mail functions | unknown |
php3_oci73.dll | Oracle functions | unknown |
php_oci8.dll | Oracle 8 functions | Requires: Oracle 8.1+ client libraries |
php_openssl.dll | OpenSSL functions | Requires: libeay32.dll (bundled) |
php_oracle.dll | Oracle functions | Requires: Oracle 7 client libraries |
php_overload.dll | Object overloading functions | Built in since PHP 4.3.0 |
php_pdf.dll | PDF functions | None |
php_pgsql.dll | PostgreSQL functions | None |
php_printer.dll | Printer functions | None |
php_shmop.dll | Shared Memory functions | None |
php_snmp.dll | SNMP get and walk functions | NT only! |
php_sockets.dll | Socket functions | None |
php_sybase_ct.dll | Sybase functions | Requires: Sybase client libraries |
php_tokenizer.dll | Tokenizer functions | Built in since PHP 4.3.0 |
php_w32api.dll | W32api functions | None |
php_xmlrpc.dll | XML-RPC functions | PHP >= 4.2.1 requires: iconv.dll (bundled) |
php_xslt.dll | XSLT functions | PHP <= 4.2.0 requires sablot.dll, expat.dll (bundled). PHP >= 4.2.1 requires sablot.dll, expat.dll, iconv.dll (bundled). |
php_yaz.dll | YAZ functions | Requires: yaz.dll (bundled) |
php_zib.dll | Zip File functions | Read only access |
php_zlib.dll | ZLib compression functions | Built in since PHP 4.3.0 |
The default is to build PHP as a CGI program. This creates a commandline interpreter, which can be used for CGI processing, or for non-web-related PHP scripting. If you are running a web server PHP has module support for, you should generally go for that solution for performance reasons. However, the CGI version enables Apache users to run different PHP-enabled pages under different user-ids. Please make sure you read through the Security chapter if you are going to run PHP as a CGI.
As of PHP 4.3.0, some important additions have happened to PHP. A new SAPI named CLI also exists and it has the same name as the CGI binary. What is installed at {PREFIX}/bin/php depends on your configure line and this is described in detail in the manual section named Using PHP from the command line. For further details please read that section of the manual.
If you have built PHP as a CGI program, you may test your build by typing make test. It is always a good idea to test your build. This way you may catch a problem with PHP on your platform early instead of having to struggle with it later.
If you have built PHP 3 as a CGI program, you may benchmark your build by typing make bench. Note that if bezpeΦn² re╛im is on by default, the benchmark may not be able to finish if it takes longer then the 30 seconds allowed. This is because the set_time_limit() can not be used in bezpeΦn² re╛im. Use the max_execution_time configuration setting to control this time for your own scripts. make bench ignores the configuration file.
Poznßmka: make bench is only available for PHP 3.
Some server supplied environment variables are not defined in the current CGI/1.1 specification. Only the following variables are defined there; everything else should be treated as 'vendor extensions': AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL and SERVER_SOFTWARE
This section contains notes and hints specific to Apache installs of PHP, both for Unix and Windows versions. We also have instructions and notes for Apache 2 on a separate page.
You can select arguments to add to the configure on line 10 below from the Complete list of configure options. The version numbers have been omitted here, to ensure the instructions are not incorrect. You will need to replace the 'xxx' here with the correct values from your files.
P°φklad 3-4. Installation Instructions (Apache Shared Module Version) for PHP
|
Depending on your Apache install and Unix variant, there are many possible ways to stop and restart the server. Below are some typical lines used in restarting the server, for different apache/unix installations. You should replace /path/to/ with the path to these applications on your systems.
P°φklad 3-5. Example commands for restarting Apache
|
The locations of the apachectl and http(s)dctl binaries often vary. If your system has locate or whereis or which commands, these can assist you in finding your server control programs.
Different examples of compiling PHP for apache are as follows:
This will create a libphp4.so shared library that is loaded into Apache using a LoadModule line in Apache's httpd.conf file. The PostgreSQL support is embedded into this libphp4.so library.
This will create a libphp4.so shared library for Apache, but it will also create a pgsql.so shared library that is loaded into PHP either by using the extension directive in php.ini file or by loading it explicitly in a script using the dl() function.
This will create a libmodphp4.a library, a mod_php4.c and some accompanying files and copy this into the src/modules/php4 directory in the Apache source tree. Then you compile Apache using --activate-module=src/modules/php4/libphp4.a and the Apache build system will create libphp4.a and link it statically into the httpd binary. The PostgreSQL support is included directly into this httpd binary, so the final result here is a single httpd binary that includes all of Apache and all of PHP.
Same as before, except instead of including PostgreSQL support directly into the final httpd you will get a pgsql.so shared library that you can load into PHP from either the php.ini file or directly using dl().
When choosing to build PHP in different ways, you should consider the advantages and drawbacks of each method. Building as a shared object will mean that you can compile apache separately, and don't have to recompile everything as you add to, or change, PHP. Building PHP into apache (static method) means that PHP will load and run faster. For more information, see the Apache webpage on DSO support.
Poznßmka: Apache's default httpd.conf currently ships with a section that looks like this:
Unless you change that to "Group nogroup" or something like that ("Group daemon" is also very common) PHP will not be able to open files.
Poznßmka: Make sure you specify the installed version of apxs when using --with-apxs=/path/to/apxs. You must NOT use the apxs version that is in the apache sources but the one that is actually installed on your system.
There are two ways to set up PHP to work with Apache 1.3.x on Windows. One is to use the CGI binary (php.exe), the other is to use the Apache module DLL. In either case you need to stop the Apache server, and edit your httpd.conf to configure Apache to work with PHP.
It is worth noting here that now the SAPI module has been made more stable under Windows, we recommend it's use above the CGI binary, since it is more transparent and secure.
Although there can be a few variations of configuring PHP under Apache, these are simple enough to be used by the newcomer. Please consult the Apache Docs for further configuration directives.
If you unziped the PHP package to c:\php\ as described in the Manual Installation Steps section, you need to insert these lines to your Apache configuration file to set up the CGI binary:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
Varovßnφ |
By using the CGI setup, your server is open to several possible attacks. Please read our CGI security section to learn how to defend yourself from attacks. |
If you would like to use PHP as a module in Apache, be sure to copy php4ts.dll to the windows/system (for Windows 9x/Me), winnt/system32 (for Windows NT/2000) or windows/system32 (for Windows XP) directory, overwriting any older file. Then you should add the following lines to your Apache httpd.conf file:
Open httpd.conf with your favorite editor and locate the LoadModule directive and add the following line at the end of the list for PHP 4: LoadModule php4_module "c:/php/sapi/php4apache.dll" or the following for PHP 5: LoadModule php5_module "c:/php/sapi/php5apache.dll"
You may find after using the Windows installer for Apache that you need to define the AddModule directive for mod_php4.c. This is especially important if the ClearModuleList directive is defined, which you will find by scrolling down a few lines. You will see a list of AddModule entries, add the following line at the end of the list: AddModule mod_php4.c For PHP 5, instead use AddModule mod_php5.c
Search for a phrase similar to # AddType allows you to tweak mime.types. You will see some AddType entries, add the following line at the end of the list: AddType application/x-httpd-php .php. You can choose any extension you want to parse through PHP here. .php is simply the one we suggest. You can even include .html, and .php3 can be added for backwards compatibility.
After changing the configuration file, remember to restart the server, for example, NET STOP APACHE followed by NET START APACHE, if you run Apache as a Windows Service, or use your regular shortcuts.
There are two ways you can use the source code highlighting feature, however their ability to work depends on your installation. If you have configured Apache to use PHP as an SAPI module, then by adding the following line to your httpd.conf (at the same place you inserted AddType application/x-httpd-php .php, see above) you can use this feature: AddType application/x-httpd-php-source .phps.
If you chose to configure Apache to use PHP as a CGI binary, you will need to use the show_source() function. To do this simply create a PHP script file and add this code: <?php show_source ("original_php_script.php"); ?>. Substitute original_php_script.php with the name of the file you wish to show the source of.
Poznßmka: On Win-Apache all backslashes in a path statement such as "c:\directory\file.ext", must be converted to forward slashes, as "c:/directory/file.ext".
This section contains notes and hints specific to Apache 2.0 installs of PHP, both for Unix and Windows versions.
Varovßnφ |
Do not use Apache 2.0 and PHP in a production environment neither on Unix nor on Windows. |
You are highly encouraged to take a look at the Apache Documentation to get a basic understanding of the Apache 2.0 Server.
The following versions of PHP are known to work with the most recent version of Apache 2.0:
Poznßmka: Apache 2.0 SAPI-support started with PHP 4.2.0. PHP 4.2.3 works with Apache 2.0.39, don't use any other version of Apache with PHP 4.2.3. However, the recommended setup is to use PHP 4.3.0 or later with the most recent version of Apache2.
All mentioned versions of PHP will work still with Apache 1.3.x.
Download the most recent version of Apache 2.0 and a fitting PHP version from the above mentioned places. This quick guide covers only the basics to get started with Apache 2.0 and PHP. For more information read the Apache Documentation. The version numbers have been omitted here, to ensure the instructions are not incorrect. You will need to replace the 'NN' here with the correct values from your files.
P°φklad 3-6. Installation Instructions (Apache 2 Shared Module Version)
|
Following the steps above you will have a running Apache 2.0 with support for PHP as SAPI module. Of course there are many more configuration options available for both, Apache and PHP. For more information use ./configure --help in the corresponding source tree. In case you wish to build a multithreaded version of Apache 2.0 you must overwrite the standard MPM-Module prefork either with worker or perchild. To do so append to your configure line in step 6 above either the option --with-mpm=worker or --with-mpm=perchild. Take care about the consequences and understand what you are doing. For more information read the Apache documentation about the MPM-Modules.
Poznßmka: To build a multithreaded version of Apache your system must support threads. This also implies to build PHP with experimental Zend Thread Safety (ZTS). Therefore not all extensions might be available. The recommended setup is to build Apache with the standard prefork MPM-Module.
Consider to read the Windows specific notes for Apache 2.0.
Varovßnφ |
Apache 2.0 is designed to run on Windows NT 4.0, Windows 2000 or Windows XP. At this time, support for Windows 9x is incomplete. Apache 2.0 is not expected to work on those platforms at this time. |
Download the most recent version of Apache 2.0 and a fitting PHP version from the above mentioned places. Follow the Manual Installation Steps and come back to go on with the integration of PHP and Apache.
There are two ways to set up PHP to work with Apache 2.0 on Windows. One is to use the CGI binary the other is to use the Apache module DLL. In either case you need to stop the Apache server, and edit your httpd.conf to configure Apache to work with PHP.
You need to insert these three lines to your Apache httpd.conf configuration file to set up the CGI binary:
If you would like to use PHP as a module in Apache 2.0, be sure to move php4ts.dll for PHP 4, or php5ts.dll for PHP 5, to winnt/system32 (for Windows NT/2000) or windows/system32 (for Windows XP), overwriting any older file. You need to insert these two lines to your Apache httpd.conf configuration file to set up the PHP-Module for Apache 2.0:
Poznßmka: Remember to substitute the c:/php/ for your actual path to PHP in the above examples. Take care to use either php4apache2.dll or php5apache2.dll in your LoadModule directive and notphp4apache.dll or php5apache.dll as the latter ones are designed to run with Apache 1.3.x.
Varovßnφ |
Don't mix up your installation with dll files from different PHP versions . You have the only choice to use the dll's and extensions that ship with your downloaded PHP version. |
PHP 4 can be built as a Pike module for the Caudium webserver. Note that this is not supported with PHP 3. Follow the simple instructions below to install PHP 4 for Caudium.
P°φklad 3-9. Caudium Installation Instructions
|
You can of course compile your Caudium module with support for the various extensions available in PHP 4. See the complete list of configure options for an exhaustive rundown.
Poznßmka: When compiling PHP 4 with MySQL support you must make sure that the normal MySQL client code is used. Otherwise there might be conflicts if your Pike already has MySQL support. You do this by specifying a MySQL install directory the --with-mysql option.
To build PHP as an fhttpd module, answer "yes" to "Build as an fhttpd module?" (the --with-fhttpd=DIR option to configure) and specify the fhttpd source base directory. The default directory is /usr/local/src/fhttpd. If you are running fhttpd, building PHP as a module will give better performance, more control and remote execution capability.
Poznßmka: Support for fhttpd is no longer available as of PHP 4.3.0.
This section contains notes and hints specific to IIS (Microsoft Internet Information Server). Installing PHP for PWS/IIS 3, PWS 4 or newer and IIS 4 or newer versions.
Important for CGI users: Read the faq on cgi.force_redirect for important details. This directive needs to be set to 0.
The recommended method for configuring these servers is to use the REG file included with the distribution (pws-php4cgi.reg). You may want to edit this file and make sure the extensions and PHP install directories match your configuration. Or you can follow the steps below to do it manually.
Varovßnφ |
These steps involve working directly with the Windows registry. One error here can leave your system in an unstable state. We highly recommend that you back up your registry first. The PHP Development team will not be held responsible if you damage your registry. |
Run Regedit.
Navigate to: HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap.
On the edit menu select: New->String Value.
Type in the extension you wish to use for your php scripts. For example .php
Double click on the new string value and enter the path to php.exe in the value data field. ex: c:\php\php.exe.
Repeat these steps for each extension you wish to associate with PHP scripts.
The following steps do not affect the web server installation and only apply if you want your PHP scripts to be executed when they are run from the command line (ex. run c:\myscripts\test.php) or by double clicking on them in a directory viewer window. You may wish to skip these steps as you might prefer the PHP files to load into a text editor when you double click on them.
Navigate to: HKEY_CLASSES_ROOT
On the edit menu select: New->Key.
Name the key to the extension you setup in the previous section. ex: .php
Highlight the new key and in the right side pane, double click the "default value" and enter phpfile.
Repeat the last step for each extension you set up in the previous section.
Now create another New->Key under HKEY_CLASSES_ROOT and name it phpfile.
Highlight the new key phpfile and in the right side pane, double click the "default value" and enter PHP Script.
Right click on the phpfile key and select New->Key, name it Shell.
Right click on the Shell key and select New->Key, name it open.
Right click on the open key and select New->Key, name it command.
Highlight the new key command and in the right side pane, double click the "default value" and enter the path to php.exe. ex: c:\php\php.exe -q %1. (don't forget the %1).
Exit Regedit.
If using PWS on Windows, reboot to reload the registry.
PWS and IIS 3 users now have a fully operational system. IIS 3 users can use a nifty tool from Steven Genusa to configure their script maps.
When installing PHP on Windows with PWS 4 or newer version, you have two options. One to set up the PHP CGI binary, the other is to use the ISAPI module DLL.
If you choose the CGI binary, do the following:
Edit the enclosed pws-php4cgi.reg file (look into the SAPI dir) to reflect the location of your php.exe. Backslashes should be escaped, for example: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="c:\\php\\php.exe" Now merge this registery file into your system; you may do this by double-clicking it.
In the PWS Manager, right click on a given directory you want to add PHP support to, and select Properties. Check the 'Execute' checkbox, and confirm.
If you choose the ISAPI module, do the following:
Edit the enclosed pws-php4isapi.reg file (look into the SAPI dir) to reflect the location of your php4isapi.dll. Backslashes should be escaped, for example: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="c:\\php\\sapi\\php4isapi.dll" Now merge this registery file into your system; you may do this by double-clicking it.
In the PWS Manager, right click on a given directory you want to add PHP support to, and select Properties. Check the 'Execute' checkbox, and confirm.
To install PHP on an NT/2000/XP Server running IIS 4 or newer, follow these instructions. You have two options to set up PHP, using the CGI binary (php.exe) or with the ISAPI module.
In either case, you need to start the Microsoft Management Console (may appear as 'Internet Services Manager', either in your Windows NT 4.0 Option Pack branch or the Control Panel=>Administrative Tools under Windows 2000/XP). Then right click on your Web server node (this will most probably appear as 'Default Web Server'), and select 'Properties'.
If you want to use the CGI binary, do the following:
Under 'Home Directory', 'Virtual Directory', or 'Directory', click on the 'Configuration' button, and then enter the App Mappings tab.
Click Add, and in the Executable box, type: c:\php\php.exe (assuming that you have unziped PHP in c:\php\).
In the Extension box, type the file name extension you want associated with PHP scripts. Leave 'Method exclusions' blank, and check the Script engine checkbox. You may also like to check the 'check that file exists' box - for a small performance penalty, IIS (or PWS) will check that the script file exists and sort out authentication before firing up php. This means that you will get sensible 404 style error messages instead of cgi errors complaining that PHP did not output any data.
You must start over from the previous step for each extension you want associated with PHP scripts. .php and .phtml are common, although .php3 may be required for legacy applications.
Set up the appropriate security. (This is done in Internet Service Manager), and if your NT Server uses NTFS file system, add execute rights for I_USR_ to the directory that contains php.exe.
To use the ISAPI module, do the following:
If you don't want to perform HTTP Authentication using PHP, you can (and should) skip this step. Under ISAPI Filters, add a new ISAPI filter. Use PHP as the filter name, and supply a path to the php4isapi.dll.
Under 'Home Directory', click on the 'Configuration' button. Add a new entry to the Application Mappings. Use the path to the php4isapi.dll as the Executable, supply .php as the extension, leave Method exclusions blank, and check the Script engine checkbox.
Stop IIS completely (NET STOP iisadmin)
Start IIS again (NET START w3svc)
This section contains notes and hints specific to Netscape, iPlanet and SunONE webserver installs of PHP, both for Sun Solaris and Windows versions.
From PHP 4.3.3 on you can use PHP scripts with the NSAPI module to generate custom directory listings and error pages. Additional functions for Apache compatibility are also available. For support in current webservers read the note about subrequests.
You can find more information about setting up PHP for the Netscape Enterprise Server (NES) here: http://benoit.noss.free.fr/php/install-php4.html
To build PHP with NES/iPlanet/SunONE webservers, enter the proper install directory for the --with-nsapi=[DIR] option. The default directory is usually /opt/netscape/suitespot/. Please also read /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
Install the following packages from http://www.sunfreeware.com/ or another download site:
autoconf-2.13 |
automake-1.4 |
bison-1_25-sol26-sparc-local |
flex-2_5_4a-sol26-sparc-local |
gcc-2_95_2-sol26-sparc-local |
gzip-1.2.4-sol26-sparc-local |
m4-1_4-sol26-sparc-local |
make-3_76_1-sol26-sparc-local |
mysql-3.23.24-beta (if you want mysql support) |
perl-5_005_03-sol26-sparc-local |
tar-1.13 (GNU tar) |
Make sure your path includes the proper directories PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin and make it available to your system export PATH.
gunzip php-x.x.x.tar.gz (if you have a .gz dist, otherwise go to 4).
tar xvf php-x.x.x.tar
Change to your extracted PHP directory: cd ../php-x.x.x
For the following step, make sure /opt/netscape/suitespot/ is where your netscape server is installed. Otherwise, change to the correct path and run:
./configure --with-mysql=/usr/local/mysql \ --with-nsapi=/opt/netscape/suitespot/ \ --enable-libgcc |
Run make followed by make install.
After performing the base install and reading the appropriate readme file, you may need to perform some additional configuration steps.
Configuration Instructions for NES/iPlanet/SunONE. Firstly you may need to add some paths to the LD_LIBRARY_PATH environment for SunONE to find all the shared libs. This can best done in the start script for your SunONE webserver. Windows users can probably skip this step. The start script is often located in: /path/to/server/https-servername/start. You may also need to edit the configuration files that are located in: /path/to/server/https-servername/config/.
Add the following line to mime.types (you can do that by the administration server):
type=magnus-internal/x-httpd-php exts=php |
Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6) and add the following, shlib will vary depending on your OS, for Unix it will be something like /opt/netscape/suitespot/bin/libphp4.so. You should place the following lines after mime types init.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so" Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"] |
Configure the default object in obj.conf (for virtual server classes [SunONE 6.0+] in their vserver.obj.conf):
<Object name="default"> . . . .#NOTE this next line should happen after all 'ObjectType' and before all 'AddLog' lines Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...] . . </Object> |
This is only needed if you want to configure a directory that only consists of PHP scripts (same like a cgi-bin directory):
<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object> |
Setup of authentication: PHP authentication cannot be used with any other authentication. ALL AUTHENTICATION IS PASSED TO YOUR PHP SCRIPT. To configure PHP Authentication for the entire server, add the following line to your default object:
<Object name="default"> AuthTrans fn=php4_auth_trans . . . </Object> |
To use PHP Authentication on a single directory, add the following:
<Object ppath="d:\path\to\authenticated\dir\*"> AuthTrans fn=php4_auth_trans </Object> |
To Install PHP as CGI (for Netscape Enterprise Server, iPlanet, SunONE, perhaps Fastrack), do the following:
Copy php4ts.dll to your systemroot (the directory where you installed Windows)
Make a file association from the command line. Type the following two lines:
assoc .php=PHPScript ftype PHPScript=c:\php\php.exe %1 %* |
In the Netscape Enterprise Administration Server create a dummy shellcgi directory and remove it just after (this step creates 5 important lines in obj.conf and allow the web server to handle shellcgi scripts).
In the Netscape Enterprise Administration Server create a new mime type (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).
Do it for each web server instance you want PHP to run
More details about setting up PHP as a CGI executable can be found here: http://benoit.noss.free.fr/php/install-php.html
To Install PHP as NSAPI (for Netscape Enterprise Server, iPlanet, SunONE, perhaps Fastrack), do the following:
Copy php4ts.dll to your systemroot (the directory where you installed Windows)
Make a file association from the command line. Type the following two lines:
assoc .php=PHPScript ftype PHPScript=c:\php\php.exe %1 %* |
In the Netscape Enterprise Administration Server create a new mime type (Category: type, Content-Type: magnus-internal/x-httpd-php, File Suffix: php).
Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6) and add the following: You should place the the lines after mime types init.
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll" Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"] |
Configure the default object in obj.conf (for virtual server classes [SunONE 6.0+] in their vserver.obj.conf): In the <Object name="default"> section, place this line necessarily after all 'ObjectType' and before all 'AddLog' lines:
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...] |
This is only needed if you want to configure a directory that only consists of PHP scripts (same like a cgi-bin directory):
<Object name="x-httpd-php"> ObjectType fn="force-type" type="magnus-internal/x-httpd-php" Service fn=php4_execute [inikey=value inikey=value ...] </Object> |
Restart your web service and apply changes
Do it for each web server instance you want PHP to run
More details about setting up PHP as an NSAPI filter can be found here: http://benoit.noss.free.fr/php/install-php4.html
Important when writing PHP scripts is the fact that iPlanet/SunONE/Netscape is a multithreaded web server. Because of that all requests are running in the same process space (the space of the webserver itsself) and this space has only one environment. If you want to get CGI variables like PATH_INFO, HTTP_HOST etc. it is not the correct way to try this in the old PHP 3.x way with getenv() or a similar way (register globals to environment, $_ENV). You would only get the environment of the running webserver without any valid CGI variables!
Poznßmka: Why are there (invalid) CGI variables in the environment?
Answer: This is because you started the webserver process from the admin server which runs the startup script of the webserver, you wanted to start, as a CGI script (a CGI script inside of the admin server!). This is why the environment of the started webserver has some CGI environment variables in it. You can test this by starting the webserver not from the administration server. Use the Unix command line as root user and start it manually - you will see there are no CGI-like environment variables.
Simply change your scripts to get CGI variables in the correct way for PHP 4.x by using the superglobal $_SERVER. If you have older scripts which use $HTTP_HOST,..., you should turn on register_globals in php.ini and change the variable order to (important: remove "E" from it, because you do not need the environment here):
variables_order = "GPCS" register_globals = On |
You can use PHP to generate the error pages for "404 Not Found" or similar. Add the following line to the object in obj.conf for every error page you want to overwrite:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...] |
Another possibility is to generate self-made directory listings. Just create a PHP script which displays a directory listing and replace the corresponding default Service line for type="magnus-internal/directory" in obj.conf with the following:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...] |
The NSAPI module now supports the nsapi_virtual() function (alias: virtual()) to make subrequests on the webserver and insert the result in the webpage. The problem is, that this function uses some undocumented features from the NSAPI library.
Under Unix this is not a problem, because the module automatically looks for the needed functions and uses them if available. If not, nsapi_virtual() is disabled.
Under Windows limitations in the DLL handling need the use of a automatic detection of the most recent ns-httpdXX.dll file. This is tested for servers till version 6.1. If a newer version of the SunONE server is used, the detection fails and nsapi_virtual() is disabled.
If this is the case, try the following: Add the following parameter to php4_init in magnus.conf/obj.conf:
Init fn=php4_init ... server_lib="ns-httpdXX.dll" |
You can check the status by using the phpinfo() function.
Poznßmka: But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
This section contains notes and hints specific to OmniHTTPd.
You need to complete the following steps to make PHP work with OmniHTTPd. This is a CGI executable setup. SAPI is supported by OmniHTTPd, but some tests have shown that it is not so stable to use PHP as an ISAPI module.
Important for CGI users: Read the faq on cgi.force_redirect for important details. This directive needs to be set to 0.
Install OmniHTTPd server.
Right click on the blue OmniHTTPd icon in the system tray and select Properties
Click on Web Server Global Settings
On the 'External' tab, enter: virtual = .php | actual = c:\path-to-php-dir\php.exe, and use the Add button.
On the Mime tab, enter: virtual = wwwserver/stdcgi | actual = .php, and use the Add button.
Click OK
Repeat steps 2 - 6 for each extension you want to associate with PHP.
Poznßmka: Some OmniHTTPd packages come with built in PHP support. You can choose at setup time to do a custom setup, and uncheck the PHP component. We recommend you to use the latest PHP binaries. Some OmniHTTPd servers come with PHP 4 beta distributions, so you should choose not to set up the built in support, but install your own. If the server is already on your machine, use the Replace button in Step 4 and 5 to set the new, correct information.
This section contains notes and hints specific to Oreilly Website Pro.
This list describes how to set up the PHP CGI binary or the ISAPI module to work with Oreilly Website Pro on Windows.
Edit the Server Properties and select the tab "Mapping".
From the List select "Associations" and enter the desired extension (.php) and the path to the CGI exe (ex. c:\php\php.exe) or the ISAPI DLL file (ex. c:\php\sapi\php4isapi.dll).
Select "Content Types" add the same extension (.php) and enter the content type. If you choose the CGI executable file, enter 'wwwserver/shellcgi', if you choose the ISAPI module, enter 'wwwserver/isapi' (both without quotes).
This section contains notes and hints specific to the Sambar server for Windows.
This list describes how to set up the ISAPI module to work with the Sambar server on Windows.
Find the file called mappings.ini (in the config directory) in the Sambar install directory.
Open mappings.ini and add the following line under [ISAPI]:
(This line assumes that PHP was installed in c:\php.)Now restart the Sambar server for the changes to take effect.
This section contains notes and hints specific to Xitami.
This list describes how to set up the PHP CGI binary to work with Xitami on Windows.
Important for CGI users: Read the faq on cgi.force_redirect for important details. This directive needs to be set to 0.
Make sure the webserver is running, and point your browser to xitamis admin console (usually http://127.0.0.1/admin), and click on Configuration.
Navigate to the Filters, and put the extension which PHP should parse (i.e. .php) into the field File extensions (.xxx).
In Filter command or script put the path and name of your PHP executable i.e. c:\php\php.exe.
Press the 'Save' icon.
Restart the server to reflect changes.
PHP can be built to support a large number of web servers. Please see Server-related options for a full list of server-related configure options. The PHP CGI binaries are compatible with almost all webservers supporting the CGI standard.
Some problems are more common than others. The most common ones are listed in the PHP FAQ, part of this manual.
If you are still stuck, someone on the PHP installation mailing list may be able to help you. You should check out the archive first, in case someone already answered someone else who had the same problem as you. The archives are available from the support page on http://www.php.net/support.php. To subscribe to the PHP installation mailing list, send an empty mail to php-install-subscribe@lists.php.net. The mailing list address is php-install@lists.php.net.
If you want to get help on the mailing list, please try to be precise and give the necessary details about your environment (which operating system, what PHP version, what web server, if you are running PHP as CGI or a server module, bezpeΦn² re╛im, etc...), and preferably enough code to make others able to reproduce and test your problem.
If you think you have found a bug in PHP, please report it. The PHP developers probably don't know about it, and unless you report it, chances are it won't be fixed. You can report bugs using the bug-tracking system at http://bugs.php.net/. Please do not send bug reports in mailing list or personal letters. The bug system is also suitable to submit feature requests.
Read the How to report a bug document before submitting any bug reports!
Below is a partial list of configure options used by the PHP configure scripts when compiling in Unix-like environments. Most configure options are listed in their appropriate locations and not here. For a complete up-to-date list of configure options, run ./configure --help in your PHP source directory after running autoconf (see also the Installation chapter). You may also be interested in reading the GNU configure documentation for information on additional configure options such as --prefix=PREFIX.
Poznßmka: These are only used at compile time. If you want to alter PHP's runtime configuration, please see the chapter on Runtime Configuration.
Poznßmka: These options are only used in PHP 4 as of PHP 4.1.0. Some are available in older versions of PHP 4, some even in PHP 3, some only in PHP 4.1.0. If you want to compile an older version, some options will probably not be available.
The imagick extension has been moved to PECL in PEAR and can be found at http://pear.php.net/imagick. Install instructions for PHP 4 can be found on the PEAR site.
Simply doing --with-imagick is only supported in PHP 3 unless you follow the instructions found on the PEAR site.
Compile with debugging symbols.
Sets how installed files will be laid out. Type is one of PHP (default) or GNU.
Install PEAR in DIR (default PREFIX/lib/php).
Do not install PEAR.
Enable PHP's own SIGCHLD handler.
Disable passing additional runtime library search paths.
Enable explicitly linking against libgcc.
Include experimental PHP streams. Do not use unless you are testing the code!
Define the location of zlib install directory.
Enable transparent session id propagation. Only valid for PHP 4.1.2 or less. From PHP 4.2.0, trans-sid feature is always compiled.
Use POSIX threads (default).
Build shared libraries [default=yes].
Build static libraries [default=yes].
Optimize for fast installation [default=yes].
Assume the C compiler uses GNU ld [default=no].
Avoid locking (might break parallel builds).
Try to use only PIC/non-PIC objects [default=use both].
Compile with memory limit support.
Disable the URL-aware fopen wrapper that allows accessing files via HTTP or FTP.
Export only required symbols. See INSTALL for more information.
Include IMSp support (DIR is IMSP's include dir and libimsp.a dir). PHP 3 only!
Include Cybercash MCK support. DIR is the cybercash mck build directory, defaults to /usr/src/mck-3.2.0.3-linux for help look in extra/cyberlib. PHP 3 only!
Include DAV support through Apache's mod_dav, DIR is mod_dav's installation directory (Apache module version only!) PHP 3 only!
Compile with remote debugging functions. PHP 3 only!
Take advantage of versioning and scoping provided by Solaris 2.x and Linux. PHP 3 only!
Enable make rules and dependencies not useful (and sometimes confusing) to the casual installer.
Sets the path in which to look for php.ini, defaults to PREFIX/lib.
Enable safe mode by default.
Only allow executables in DIR when in safe mode defaults to /usr/local/php/bin.
Enable magic quotes by default.
Disable the short-form <? start tag by default.
The following list contains the available SAPI&s (Server Application Programming Interface) for PHP.
Specify path to the installed AOLserver.
Build shared Apache module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs. Make sure you specify the version of apxs that is actually installed on your system and NOT the one that is in the apache source tarball.
Build a static Apache module. DIR is the top-level Apache build directory, defaults to /usr/local/apache.
Enable transfer tables for mod_charset (Russian Apache).
Build shared Apache 2.0 module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs.
Build PHP as a Pike module for use with Caudium. DIR is the Caudium server dir, with the default value /usr/local/caudium/server.
Available with PHP 4.3.0. Disable building the CLI version of PHP (this forces --without-pear). More information is available in the section about Using PHP from the command line.
Enable building of the embedded SAPI library. TYPE is either shared or static, which defaults to shared. Available with PHP 4.3.0.
Build fhttpd module. DIR is the fhttpd sources directory, defaults to /usr/local/src/fhttpd. No longer available as of PHP 4.3.0.
Build PHP as an ISAPI module for use with Zeus.
Specify path to the installed Netscape/iPlanet/SunONE Webserver.
No information yet.
Build PHP as a module for use with Pi3Web.
Build PHP as a Pike module. DIR is the base Roxen directory, normally /usr/local/roxen/server.
Build the Roxen module using Zend Thread Safety.
Include servlet support. DIR is the base install directory for the JSDK. This SAPI requires the java extension must be built as a shared dl.
Build PHP as thttpd module.
Build PHP as a TUX module (Linux only).
Build PHP as a WebJames module (RISC OS only)
Disable building CGI version of PHP. Available with PHP 4.3.0.
Enable the security check for internal server redirects. You should use this if you are running the CGI version with Apache.
If this is enabled, the PHP CGI binary can safely be placed outside of the web tree and people will not be able to circumvent .htaccess security.
Build PHP as FastCGI application. No longer available as of PHP 4.3.0, instead you should use --enable-fastcgi.
If this is enabled, the CGI module will be built with support for FastCGI also. Available since PHP 4.3.0
If this is disabled, paths such as /info.php/test?a=b will fail to work. Available since PHP 4.3.0. For more information see the Apache Manual.
The configuration file (called php3.ini in PHP 3.0, and simply php.ini as of PHP 4.0) is read when PHP starts up. For the server module versions of PHP, this happens only once when the web server is started. For the CGI and CLI version, it happens on every invocation.
The default location of php.ini is a compile time option (see the FAQ entry), but can be changed for the CGI and CLI version with the -c command line switch, see the chapter about using PHP from the command line. You can also use the environment variable PHPRC for an additional path to search for a php.ini file.
Poznßmka: The Apache web server changes the directory to root at startup causing PHP to attempt to read php.ini from the root filesystem if it exists.
Not every PHP directive is documented below. For a list of all directives, please read your well commented php.ini file. You may want to view the latest php.ini here from CVS.
Poznßmka: The default value for the PHP directive register_globals changed from on to off in PHP 4.2.0.
P°φklad 4-1. php.ini example
|
When using PHP as an Apache module, you can also change the configuration settings using directives in Apache configuration files (e.g. httpd.conf) and .htaccess files (You will need "AllowOverride Options" or "AllowOverride All" privileges)
With PHP 4.0, there are several Apache directives that allow you to change the PHP configuration from within the Apache configuration files. For a listing of which directives are PHP_INI_ALL, PHP_INI_PERDIR, or PHP_INI_SYSTEM, have a look at the table found within the ini_set() documentation.
Poznßmka: With PHP 3.0, there are Apache directives that correspond to each configuration setting in the php3.ini name, except the name is prefixed by "php3_".
Sets the value of the specified directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a previously set value use none as the value.
Poznßmka: Don't use php_value to set boolean values. php_flag (see below) should be used instead.
Used to set a Boolean configuration directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives.
Sets the value of the specified directive. This can NOT be used in .htaccess files. Any directive type set with php_admin_value can not be overridden by .htaccess or virtualhost directives. To clear a previously set value use none as the value.
Used to set a Boolean configuration directive. This can NOT be used in .htaccess files. Any directive type set with php_admin_flag can not be overridden by .htaccess or virtualhost directives.
V²straha |
PHP constants do not exist outside of PHP. For example, in httpd.conf you can not use PHP constants such as E_ALL or E_NOTICE to set the error_reporting directive as they will have no meaning and will evaluate to 0. Use the associated bitmask values instead. These constants can be used in php.ini |
When running PHP on Windows, the configuration values can be modified on per-directory basis using the Windows registry. The configuration values are stored in the registry key HKLM\SOFTWARE\PHP\Per Directory Values, in the sub-keys corresponding to the path names. For example, configuration values for the directory c:\inetpub\wwwroot would be stored in the key HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot. The settings for the directory would be active for any script running from this directory or any subdirectory of it. The values under the key should have the name of PHP configuration directive and the string value. PHP constants in the values would not be parsed.
Regardless of the interface to PHP you can change certain values at runtime of your scripts through ini_set(). The following table provides an overview at which level a directive can be set/changed.
Tabulka 4-1. Definition of PHP_INI_* constants
Constant | Value | Meaning |
---|---|---|
PHP_INI_USER | 1 | Entry can be set in user scripts |
PHP_INI_PERDIR | 2 | Entry can be set in php.ini, .htaccess or httpd.conf |
PHP_INI_SYSTEM | 4 | Entry can be set in php.ini or httpd.conf |
PHP_INI_ALL | 7 | Entry can be set anywhere |
You can view the settings of the configuration values in the output of phpinfo(). You can also access the values of individual configuration directives using ini_get() or get_cfg_var().
This is not a complete list of PHP directives. Directives are listed in their appropriate locations so for example information on session directives is located in the sessions chapter.
Tabulka 4-3. Language and Misc Configuration Options
Name | Default | Changeable |
---|---|---|
short_open_tag | On | PHP_INI_SYSTEM|PHP_INI_PERDIR |
asp_tags | Off | PHP_INI_SYSTEM|PHP_INI_PERDIR |
precision | "14" | PHP_INI_ALL |
y2k_compliance | Off | PHP_INI_ALL |
allow_call_time_pass_reference | On | PHP_INI_SYSTEM|PHP_INI_PERDIR |
expose_php | On | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Tells whether the short form (<? ?>) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"'; ?>. Also if disabled, you must use the long form of the PHP open tag (<?php ?>).
Poznßmka: This directive also affects the shorthand <?=, which is identical to <? echo. Use of this shortcut requires short_open_tag to be on.
Enables the use of ASP-like <% %> tags in addition to the usual <?php ?> tags. This includes the variable-value printing shorthand of <%= $value %>. For more information, see Escaping from HTML.
Poznßmka: Support for ASP-style tags was added in 3.0.4.
The number of significant digits displayed in floating point numbers.
Enforce year 2000 compliance (will cause problems with non-compliant browsers)
Whether to enable the ability to force arguments to be passed by reference at function call time. This method is deprecated and is likely to be unsupported in future versions of PHP/Zend. The encouraged method of specifying which arguments should be passed by reference is in the function declaration. You're encouraged to try and turn this option Off and make sure your scripts work properly with it in order to ensure they will work with future versions of the language (you will receive a warning each time you use this feature, and the argument will be passed by value instead of by reference).
See also References Explained.
Decides whether PHP may expose the fact that it is installed on the server (e.g. by adding its signature to the Web server header). It is no security threat in any way, but it makes it possible to determine whether you use PHP on your server or not.
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. In order to use this directive you must have enabled it at compile time. So, your configure line would have included: --enable-memory-limit. Note that you have to set it to -1 if you don't want any limit for your memory.
As of PHP 4.3.2, and when memory_limit is enabled, the PHP function memory_get_usage() is made available.
See also: max_execution_time.
Tabulka 4-5. Data Handling Configuration Options
Name | Default | Changeable |
---|---|---|
track-vars | "On" | PHP_INI_?? |
arg_separator.output | "&" | PHP_INI_ALL |
arg_separator.input | "&" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
variables_order | "EGPCS" | PHP_INI_ALL |
register_globals | "Off" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
register_argc_argv | "On" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
register_long_arrays | "On" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
post_max_size | "8M" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
gpc_order | "GPC" | PHP_INI_ALL |
auto_prepend_file | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
auto_append_file | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
default_mimetype | "text/html" | PHP_INI_ALL |
default_charset | "iso-8859-1" | PHP_INI_ALL |
always_populate_raw_post_data | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
allow_webdav_methods | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
If enabled, then Environment, GET, POST, Cookie, and Server variables can be found in the global associative arrays $_ENV, $_GET, $_POST, $_COOKIE, and $_SERVER.
Note that as of PHP 4.0.3, track_vars is always turned on.
The separator used in PHP generated URLs to separate arguments.
List of separator(s) used by PHP to parse input URLs into variables.
Poznßmka: Every character in this directive is considered as separator!
Set the order of the EGPCS (Environment, GET, POST, Cookie, Server) variable parsing. The default setting of this directive is "EGPCS". Setting this to "GP", for example, will cause PHP to completely ignore environment variables, cookies and server variables, and to overwrite any GET method variables with POST-method variables of the same name.
See also register_globals.
Tells whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables. For example; if register_globals = on, the url http://www.example.com/test.php?id=3 will produce $id. Or, $DOCUMENT_ROOT from $_SERVER['DOCUMENT_ROOT']. You may want to turn this off if you don't want to clutter your scripts' global scope with user data. As of PHP 4.2.0, this directive defaults to off. It's preferred to go through PHP Predefined Variables instead, such as the superglobals: $_ENV, $_GET, $_POST, $_COOKIE, and $_SERVER. Please read the security chapter on Using register_globals for related information.
Please note that register_globals cannot be set at runtime (ini_set()). Although, you can use .htaccess if your host allows it as described above. An example .htaccess entry: php_flag register_globals on.
Poznßmka: register_globals is affected by the variables_order directive.
Tells PHP whether to declare the argv & argc variables (that would contain the GET information).
See also command line. Also, this directive became available in PHP 4.0.0 and was always "on" before that.
Tells PHP whether or not to register the deprecated long $HTTP_*_VARS type predefined variables. When On (default), long predefined PHP variables like $HTTP_GET_VARS will be defined. If you're not using them, it's recommended to turn them off, for performance reasons. Instead, use the superglobal arrays, like $_GET.
This directive became available in PHP 5.0.0.
Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize.
If memory limit is enabled by your configure script, memory_limit also affects file uploading. Generally speaking, memory_limit should be larger than post_max_size.
Set the order of GET/POST/COOKIE variable parsing. The default setting of this directive is "GPC". Setting this to "GP", for example, will cause PHP to completely ignore cookies and to overwrite any GET method variables with POST-method variables of the same name.
Poznßmka: This option is not available in PHP 4. Use variables_order instead.
Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the include() function, so include_path is used.
The special value none disables auto-prepending.
Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the include() function, so include_path is used.
The special value none disables auto-appending.
Poznßmka: If the script is terminated with exit(), auto-append will not occur.
As of 4.0b4, PHP always outputs a character encoding by default in the Content-type: header. To disable sending of the charset, simply set it to be empty.
Always populate the $HTTP_RAW_POST_DATA variable.
Allow handling of WebDAV http requests within PHP scripts (eg. PROPFIND, PROPPATCH, MOVE, COPY, etc..) If you want to get the post data of those requests, you have to set always_populate_raw_post_data as well.
See also: magic_quotes_gpc, magic-quotes-runtime, and magic_quotes_sybase.
Tabulka 4-6. Paths and Directories Configuration Options
Name | Default | Changeable |
---|---|---|
include_path | PHP_INCLUDE_PATH | PHP_INI_ALL |
doc_root | PHP_INCLUDE_PATH | PHP_INI_SYSTEM |
user_dir | NULL | PHP_INI_SYSTEM |
extension_dir | PHP_EXTENSION_DIR | PHP_INI_SYSTEM |
cgi.fix_pathinfo | "0" | PHP_INI_SYSTEM |
cgi.force_redirect | "1" | PHP_INI_SYSTEM |
cgi.redirect_status_env | "" | PHP_INI_SYSTEM |
fastcgi.impersonate | "0" | PHP_INI_SYSTEM |
cgi.rfc2616_headers | "0" | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Specifies a list of directories where the require(), include() and fopen_with_path() functions look for files. The format is like the system's PATH environment variable: a list of directories separated with a colon in Unix or semicolon in Windows.
Using a . in the include path allows for relative includes as it means the current directory.
PHP's "root directory" on the server. Only used if non-empty. If PHP is configured with bezpeΦn² re╛im, no files outside this directory are served. If PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root if you are running PHP as a CGI under any web server (other than IIS) The alternative is to use the cgi.force_redirect configuration below.
The base name of the directory used on a user's home directory for PHP files, for example public_html.
In what directory PHP should look for dynamically loadable extensions. See also: enable_dl, and dl().
Which dynamically loadable extensions to load when PHP starts up.
Provides real PATH_INFO/PATH_TRANSLATED support for CGI. PHP's previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting this to 1 will cause PHP CGI to fix it's paths to conform to the spec. A setting of zero causes PHP to behave as before. Default is zero. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
cgi.force_redirect is necessary to provide security running PHP as a CGI under most web servers. Left undefined, PHP turns this on by default. You can turn it off AT YOUR OWN RISK.
Poznßmka: Windows Users: You CAN safely turn this off for IIS, in fact, you MUST. To get OmniHTTPD or Xitami to work you MUST turn it off.
If cgi.force_redirect is turned on, and you are not running under Apache or Netscape (iPlanet) web servers, you MAY need to set an environment variable name that PHP will look for to know it is OK to continue execution.
Poznßmka: Setting this variable MAY cause security issues, KNOW WHAT YOU ARE DOING FIRST.
FastCGI under IIS (on WINNT based OS) supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under. mod_fastcgi under Apache does not currently support this feature (03/17/2002) Set to 1 if running under IIS. Default is zero.
Tells PHP what type of headers to use when sending HTTP response code. If it's set 0, PHP sends a Status: header that is supported by Apache and other web servers. When this option is set to 1, PHP will send RFC 2616 compliant headers. Leave it set to 0 unless you know what you're doing.
Tabulka 4-7. File Uploads Configuration Options
Name | Default | Changeable |
---|---|---|
file_uploads | "1" | PHP_INI_SYSTEM |
upload_tmp_dir | NULL | PHP_INI_SYSTEM |
upload_max_filesize | "2M" | PHP_INI_SYSTEM|PHP_INI_PERDIR |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether or not to allow HTTP file uploads. See also the upload_max_filesize, upload_tmp_dir, and post_max_size directives.
The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default.
The maximum size of an uploaded file.
Jsou Φty°i zp∙soby jak opustit HTML a vstoupit to "PHP m≤du":
P°φklad 5-1. Zp∙soby opu╣t∞nφ HTML
|
Prvnφ zp∙sob je dostupn² pouze, pokud jsou povoleny krßtkΘ tagy. To se dß ud∞lat povolenφm konfiguraΦnφ direktivy short_open_tag v konfiguraΦnφm souboru PHP, nebo kompilacφ PHP s configure volbou --enable-short-tags.
Obecn∞ preferovanou metodou je druh² zp∙sob, proto╛e umo╛≥uje snadnou implementaci dal╣φho generovßnφ XHTML z PHP.
╚tvrt² zp∙sob je dostupn², pouze pokud byly povoleny ASP tagy pomocφ konfiguraΦnφ direktivy asp_tags.
Poznßmka: Podpora ASP tag∙ byla p°idßna v 3.0.4.
P°φpadnß bezprost°edn∞ nßsledujφcφ sekvence konce °ßdku je souΦßstφ uzavφrajφcφho tagu.
Instrukce se odd∞lujφ stejn∞ jako v C nebo Perlu - ukonΦujte ka╛d² v²raz st°ednφkem.
Uzavφrajφcφ tag (?>) takΘ implikuje konec v²razu, tak╛e nßsledujφcφ ukßzky jsou ekvivalentnφ:
PHP podporuje komentß°ovΘ notace jazyk∙ 'C', 'C++' a UnixovΘho shellu. Nap°φklad:
<?php echo "Toto je test"; // Toto je jedno°ßdkov² komentß° typu C++ /* Toto je vφce°ßdkov² komentß° a je╣t∞ jeden komentß° */ echo "Toto je dal╣φ test"; echo "Poslednφ Test"; # Toto je komentß° shellovΘho typu ?> |
Jedno°ßdkovΘ typy komentß°∙ ve skuteΦnosti komentujφ do konce °ßdku nebo souΦasnΘho bloku PHP k≤du, podle toho, co se vyskytuje d°φv.
<h1>Toto je <?php # echo "mal²";?> p°φklad.</h1> <p>HlaviΦka na p°edchozφm °ßdku bude 'Toto je p°φklad'. |
M∞li byste si dßt pozor na vno°ovßnφ komentß°∙ typu 'C++', ke kterΘmu m∙╛e dojφt p°i zakomentovßnφ velk²ch blok∙.
PHP supports eight primitive types.
Four scalar types:
Two compound types: And finally two special types: This manual also introduces some pseudo-types for readability reasons: You may also find some references to the type "double". Consider double the same as float, the two names exist only for historic reasons.The type of a variable is usually not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which that variable is used.
Poznßmka: If you want to check out the type and value of a certain expression, use var_dump().
Poznßmka: If you simply want a human-readable representation of the type for debugging, use gettype(). To check for a certain type, do not use gettype(), but use the is_type functions. Some examples:
<?php $bool = TRUE; // a boolean $str = "foo"; // a string $int = 12; // an integer echo gettype($bool); // prints out "boolean" echo gettype($str); // prints out "string" // If this is an integer, increment it by four if (is_int($int)) { $int += 4; } // If $bool is a string, print it out // (does not print out anything) if (is_string($bool)) { echo "String: $bool"; } ?>
If you would like to force a variable to be converted to a certain type, you may either cast the variable or use the settype() function on it.
Note that a variable may be evaluated with different values in certain situations, depending on what type it is at the time. For more information, see the section on Type Juggling. Also, you may be interested in viewing the type comparison tables, as they show examples of various type related comparisons.
This is the easiest type. A boolean expresses a truth value. It can be either TRUE or FALSE.
Poznßmka: The boolean type was introduced in PHP 4.
To specify a boolean literal, use either the keyword TRUE or FALSE. Both are case-insensitive.
Usually you use some kind of operator which returns a boolean value, and then pass it on to a control structure.
To explicitly convert a value to boolean, use either the (bool) or the (boolean) cast. However, in most cases you do not need to use the cast, since a value will be automatically converted if an operator, function or control structure requires a boolean argument.
See also Type Juggling.
When converting to boolean, the following values are considered FALSE:
the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
an array with zero elements
an object with zero member variables
the special type NULL (including unset variables)
Varovßnφ |
-1 is considered TRUE, like any other non-zero (whether negative or positive) number! |
<?php echo gettype((bool) ""); // bool(false) echo gettype((bool) 1); // bool(true) echo gettype((bool) -2); // bool(true) echo gettype((bool) "foo"); // bool(true) echo gettype((bool) 2.3e5); // bool(true) echo gettype((bool) array(12)); // bool(true) echo gettype((bool) array()); // bool(false) ?> |
An integer is a number of the set Z = {..., -2, -1, 0, 1, 2, ...}.
See also: Arbitrary length integer / GMP, Floating point numbers, and Arbitrary precision / BCMath
Integers can be specified in decimal (10-based), hexadecimal (16-based) or octal (8-based) notation, optionally preceded by a sign (- or +).
If you use the octal notation, you must precede the number with a 0 (zero), to use hexadecimal notation precede the number with 0x.
If you specify a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, if you perform an operation that results in a number beyond the bounds of the integer type, a float will be returned instead.
<?php $large_number = 2147483647; var_dump($large_number); // output: int(2147483647) $large_number = 2147483648; var_dump($large_number); // output: float(2147483648) // this goes also for hexadecimal specified integers: var_dump( 0x80000000 ); // output: float(2147483648) $million = 1000000; $large_number = 50000 * $million; var_dump($large_number); // output: float(50000000000) ?> |
Varovßnφ |
Unfortunately, there was a bug in PHP so that this does not always work correctly when there are negative numbers involved. For example: when you do -50000 * $million, the result will be -429496728. However, when both operands are positive there is no problem. This is solved in PHP 4.1.0. |
There is no integer division operator in PHP. 1/2 yields the float 0.5. You can cast the value to an integer to always round it downwards, or you can use the round() function.
To explicitly convert a value to integer, use either the (int) or the (integer) cast. However, in most cases you do not need to use the cast, since a value will be automatically converted if an operator, function or control structure requires an integer argument. You can also convert a value to integer with the function intval().
See also type-juggling.
When converting from float to integer, the number will be rounded towards zero.
If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), the result is undefined, since the float hasn't got enough precision to give an exact integer result. No warning, not even a notice will be issued in this case!
Varovßnφ |
Never cast an unknown fraction to integer, as this can sometimes lead to unexpected results. See for more information the warning about float-precision. |
V²straha |
Behaviour of converting to integer is undefined for other types. Currently, the behaviour is the same as if the value was first converted to boolean. However, do not rely on this behaviour, as it can change without notice. |
Floating point numbers (AKA "floats", "doubles" or "real numbers") can be specified using any of the following syntaxes:
Formally:LNUM [0-9]+ DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) EXPONENT_DNUM ( ({LNUM} | {DNUM}) [eE][+-]? {LNUM}) |
Floating point precision |
It is quite usual that simple decimal fractions like 0.1 or 0.7 cannot be converted into their internal binary counterparts without a little loss of precision. This can lead to confusing results: for example, floor((0.1+0.7)*10) will usually return 7 instead of the expected 8 as the result of the internal representation really being something like 7.9999999999.... This is related to the fact that it is impossible to exactly express some fractions in decimal notation with a finite number of digits. For instance, 1/3 in decimal form becomes 0.3333333. . .. So never trust floating number results to the last digit and never compare floating point numbers for equality. If you really need higher precision, you should use the arbitrary precision math functions or gmp functions instead. |
For information on when and how strings are converted to floats, see the section titled String conversion to numbers. For values of other types, the conversion is the same as if the value would have been converted to integer and then to float. See the Converting to integer section for more information.
A string is series of characters. In PHP, a character is the same as a byte, that is, there are exactly 256 different characters possible. This also implies that PHP has no native support of Unicode. See utf8_encode() and utf8_decode() for some Unicode support.
Poznßmka: It is no problem for a string to become very large. There is no practical bound to the size of strings imposed by PHP, so there is no reason at all to worry about long strings.
A string literal can be specified in three different ways.
The easiest way to specify a simple string is to enclose it in single quotes (the character ').
To specify a literal single quote, you will need to escape it with a backslash (\), like in many other languages. If a backslash needs to occur before a single quote or at the end of the string, you need to double it. Note that if you try to escape any other character, the backslash will also be printed! So usually there is no need to escape the backslash itself.
Poznßmka: In PHP 3, a warning will be issued at the E_NOTICE level when this happens.
Poznßmka: Unlike the two other syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.
<?php echo 'this is a simple string'; echo 'You can also have embedded newlines in strings this way as it is okay to do'; // Outputs: Arnold once said: "I'll be back" echo 'Arnold once said: "I\'ll be back"'; // Outputs: You deleted C:\*.*? echo 'You deleted C:\\*.*?'; // Outputs: You deleted C:\*.*? echo 'You deleted C:\*.*?'; // Outputs: This will not expand: \n a newline echo 'This will not expand: \n a newline'; // Outputs: Variables do not $expand $either echo 'Variables do not $expand $either'; ?> |
If the string is enclosed in double-quotes ("), PHP understands more escape sequences for special characters:
Tabulka 6-1. Escaped characters
sequence | meaning |
---|---|
\n | linefeed (LF or 0x0A (10) in ASCII) |
\r | carriage return (CR or 0x0D (13) in ASCII) |
\t | horizontal tab (HT or 0x09 (9) in ASCII) |
\\ | backslash |
\$ | dollar sign |
\" | double-quote |
\[0-7]{1,3} | the sequence of characters matching the regular expression is a character in octal notation |
\x[0-9A-Fa-f]{1,2} | the sequence of characters matching the regular expression is a character in hexadecimal notation |
Again, if you try to escape any other character, the backslash will be printed too!
But the most important feature of double-quoted strings is the fact that variable names will be expanded. See string parsing for details.
Another way to delimit strings is by using heredoc syntax ("<<<"). One should provide an identifier after <<<, then the string, and then the same identifier to close the quotation.
The closing identifier must begin in the first column of the line. Also, the identifier used must follow the same naming rules as any other label in PHP: it must contain only alphanumeric characters and underscores, and must start with a non-digit character or underscore.
Varovßnφ |
It is very important to note that the line with the closing identifier contains no other characters, except possibly a semicolon (;). That means especially that the identifier may not be indented, and there may not be any spaces or tabs after or before the semicolon. It's also important to realize that the first character before the closing identifier must be a newline as defined by your operating system. This is \r on Macintosh for example. If this rule is broken and the closing identifier is not "clean" then it's not considered to be a closing identifier and PHP will continue looking for one. If in this case a proper closing identifier is not found then a parse error will result with the line number being at the end of the script. |
Heredoc text behaves just like a double-quoted string, without the double-quotes. This means that you do not need to escape quotes in your here docs, but you can still use the escape codes listed above. Variables are expanded, but the same care must be taken when expressing complex variables inside a here doc as with strings.
P°φklad 6-2. Heredoc string quoting example
|
Poznßmka: Heredoc support was added in PHP 4.
When a string is specified in double quotes or with heredoc, variables are parsed within it.
There are two types of syntax: a simple one and a complex one. The simple syntax is the most common and convenient. It provides a way to parse a variable, an array value, or an object property.
The complex syntax was introduced in PHP 4, and can be recognised by the curly braces surrounding the expression.
If a dollar sign ($) is encountered, the parser will greedily take as many tokens as possible to form a valid variable name. Enclose the variable name in curly braces if you want to explicitly specify the end of the name.
<?php $beer = 'Heineken'; echo "$beer's taste is great"; // works, "'" is an invalid character for varnames echo "He drank some $beers"; // won't work, 's' is a valid character for varnames echo "He drank some ${beer}s"; // works echo "He drank some {$beer}s"; // works ?> |
Similarly, you can also have an array index or an object property parsed. With array indices, the closing square bracket (]) marks the end of the index. For object properties the same rules apply as to simple variables, though with object properties there doesn't exist a trick like the one with variables.
<?php // These examples are specific to using arrays inside of strings. // When outside of a string, always quote your array string keys // and do not use {braces} when outside of strings either. // Let's show all errors error_reporting(E_ALL); $fruits = array('strawberry' => 'red', 'banana' => 'yellow'); // Works but note that this works differently outside string-quotes echo "A banana is $fruits[banana]."; // Works echo "A banana is {$fruits['banana']}."; // Works but PHP looks for a constant named banana first // as described below. echo "A banana is {$fruits[banana]}."; // Won't work, use braces. This results in a parse error. echo "A banana is $fruits['banana']."; // Works echo "A banana is " . $fruits['banana'] . "."; // Works echo "This square is $square->width meters broad."; // Won't work. For a solution, see the complex syntax. echo "This square is $square->width00 centimeters broad."; ?> |
For anything more complex, you should use the complex syntax.
This isn't called complex because the syntax is complex, but because you can include complex expressions this way.
In fact, you can include any value that is in the namespace in strings with this syntax. You simply write the expression the same way as you would outside the string, and then include it in { and }. Since you can't escape '{', this syntax will only be recognised when the $ is immediately following the {. (Use "{\$" or "\{$" to get a literal "{$"). Some examples to make it clear:
<?php // Let's show all errors error_reporting(E_ALL); $great = 'fantastic'; // Won't work, outputs: This is { fantastic} echo "This is { $great}"; // Works, outputs: This is fantastic echo "This is {$great}"; echo "This is ${great}"; // Works echo "This square is {$square->width}00 centimeters broad."; // Works echo "This works: {$arr[4][3]}"; // This is wrong for the same reason as $foo[bar] is wrong // outside a string. In other words, it will still work but // because PHP first looks for a constant named foo, it will // throw an error of level E_NOTICE (undefined constant). echo "This is wrong: {$arr[foo][3]}"; // Works. When using multi-dimensional arrays, always use // braces around arrays when inside of strings echo "This works: {$arr['foo'][3]}"; // Works. echo "This works: " . $arr['foo'][3]; echo "You can even write {$obj->values[3]->name}"; echo "This is the value of the var named $name: {${$name}}"; ?> |
Characters within strings may be accessed and modified by specifying the zero-based offset of the desired character after the string in curly braces.
Poznßmka: For backwards compatibility, you can still use array-brackets for the same purpose. However, this syntax is deprecated as of PHP 4.
P°φklad 6-3. Some string examples
|
Strings may be concatenated using the '.' (dot) operator. Note that the '+' (addition) operator will not work for this. Please see String operators for more information.
There are a lot of useful functions for string modification.
See the string functions section for general functions, the regular expression functions for advanced find&replacing (in two tastes: Perl and POSIX extended).
There are also functions for URL-strings, and functions to encrypt/decrypt strings (mcrypt and mhash).
Finally, if you still didn't find what you're looking for, see also the character type functions.
You can convert a value to a string using the (string) cast, or the strval() function. String conversion is automatically done in the scope of an expression for you where a string is needed. This happens when you use the echo() or print() functions, or when you compare a variable value to a string. Reading the manual sections on Types and Type Juggling will make the following clearer. See also settype().
A boolean TRUE value is converted to the string "1", the FALSE value is represented as "" (empty string). This way you can convert back and forth between boolean and string values.
An integer or a floating point number (float) is converted to a string representing the number with its digits (including the exponent part for floating point numbers).
Arrays are always converted to the string "Array", so you cannot dump out the contents of an array with echo() or print() to see what is inside them. To view one element, you'd do something like echo $arr['foo']. See below for tips on dumping/viewing the entire contents.
Objects are always converted to the string "Object". If you would like to print out the member variable values of an object for debugging reasons, read the paragraphs below. If you would like to find out the class name of which an object is an instance of, use get_class().
Resources are always converted to strings with the structure "Resource id #1" where 1 is the unique number of the resource assigned by PHP during runtime. If you would like to get the type of the resource, use get_resource_type().
NULL is always converted to an empty string.
As you can see above, printing out the arrays, objects or resources does not provide you any useful information about the values themselfs. Look at the functions print_r() and var_dump() for better ways to print out values for debugging.
You can also convert PHP values to strings to store them permanently. This method is called serialization, and can be done with the function serialize(). You can also serialize PHP values to XML structures, if you have WDDX support in your PHP setup.
When a string is evaluated as a numeric value, the resulting value and type are determined as follows.
The string will evaluate as a float if it contains any of the characters '.', 'e', or 'E'. Otherwise, it will evaluate as an integer.
The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero). Valid numeric data is an optional sign, followed by one or more digits (optionally containing a decimal point), followed by an optional exponent. The exponent is an 'e' or 'E' followed by one or more digits.
<?php $foo = 1 + "10.5"; // $foo is float (11.5) $foo = 1 + "-1.3e3"; // $foo is float (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2) $foo = "10.0 pigs " + 1; // $foo is float (11) $foo = "10.0 pigs " + 1.0; // $foo is float (11) ?> |
For more information on this conversion, see the Unix manual page for strtod(3).
If you would like to test any of the examples in this section, you can cut and paste the examples and insert the following line to see for yourself what's going on:
Do not expect to get the code of one character by converting it to integer (as you would do in C for example). Use the functions ord() and chr() to convert between charcodes and characters.
An array in PHP is actually an ordered map. A map is a type that maps values to keys. This type is optimized in several ways, so you can use it as a real array, or a list (vector), hashtable (which is an implementation of a map), dictionary, collection, stack, queue and probably more. Because you can have another PHP array as a value, you can also quite easily simulate trees.
Explanation of those data structures is beyond the scope of this manual, but you'll find at least one example for each of them. For more information we refer you to external literature about this broad topic.
An array can be created by the array() language-construct. It takes a certain number of comma-separated key => value pairs.
array( [key =>] value , ... ) // key may be an integer or string // value may be any value |
A key may be either an integer or a string. If a key is the standard representation of an integer, it will be interpreted as such (i.e. "8" will be interpreted as 8, while "08" will be interpreted as "08"). There are no different indexed and associative array types in PHP; there is only one array type, which can both contain integer and string indices.
A value can be of any PHP type.
<?php $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); echo $arr["somearray"][6]; // 5 echo $arr["somearray"][13]; // 9 echo $arr["somearray"]["a"]; // 42 ?> |
If you do not specify a key for a given value, then the maximum of the integer indices is taken, and the new key will be that maximum value + 1. If you specify a key that already has a value assigned to it, that value will be overwritten.
<?php // This array is the same as ... array(5 => 43, 32, 56, "b" => 12); // ...this array array(5 => 43, 6 => 32, 7 => 56, "b" => 12); ?> |
Varovßnφ |
As of PHP 4.3.0, the index generation behaviour described above has changed. Now, if you append to an array in which the current maximum key is negative, then the next key created will be zero (0). Before, the new index would have been set to the largest existing key + 1, the same as positive indices are. |
Using TRUE as a key will evaluate to integer 1 as key. Using FALSE as a key will evaluate to integer 0 as key. Using NULL as a key will evaluate to the empty string. Using the empty string as key will create (or overwrite) a key with the empty string and its value; it is not the same as using empty brackets.
You cannot use arrays or objects as keys. Doing so will result in a warning: Illegal offset type.
You can also modify an existing array by explicitly setting values in it.
This is done by assigning values to the array while specifying the key in brackets. You can also omit the key, add an empty pair of brackets ("[]") to the variable name in that case.
$arr[key] = value; $arr[] = value; // key may be an integer or string // value may be any value |
<?php $arr = array(5 => 1, 12 => 2); $arr[] = 56; // This is the same as $arr[13] = 56; // at this point of the script $arr["x"] = 42; // This adds a new element to // the array with key "x" unset($arr[5]); // This removes the element from the array unset($arr); // This deletes the whole array ?> |
Poznßmka: As mentioned above, if you provide the brackets with no key specified, then the maximum of the existing integer indices is taken, and the new key will be that maximum value + 1 . If no integer indices exist yet, the key will be 0 (zero). If you specify a key that already has a value assigned to it, that value will be overwritten.
Varovßnφ As of PHP 4.3.0, the index generation behaviour described above has changed. Now, if you append to an array in which the current maximum key is negative, then the next key created will be zero (0). Before, the new index would have been set to the largest existing key + 1, the same as positive indices are.
Note that the maximum integer key used for this need not currently exist in the array. It simply must have existed in the array at some time since the last time the array was re-indexed. The following example illustrates:
<?php // Create a simple array. $array = array(1, 2, 3, 4, 5); print_r($array); // Now delete every item, but leave the array itself intact: foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); // Append an item (note that the new key is 5, instead of 0 as you // might expect). $array[] = 6; print_r($array); // Re-index: $array = array_values($array); $array[] = 7; print_r($array); ?>The above example would produce the following output:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( ) Array ( [5] => 6 ) Array ( [0] => 6 [1] => 7 )
There are quite a few useful functions for working with arrays. See the array functions section.
Poznßmka: The unset() function allows unsetting keys of an array. Be aware that the array will NOT be reindexed. If you only use "usual integer indices" (starting from zero, increasing by one), you can achieve the reindex effect by using array_values().
The foreach control structure exists specifically for arrays. It provides an easy way to traverse an array.
You should always use quotes around a string literal array index. For example, use $foo['bar'] and not $foo[bar]. But why is $foo[bar] wrong? You might have seen the following syntax in old scripts:
This is wrong, but it works. Then, why is it wrong? The reason is that this code has an undefined constant (bar) rather than a string ('bar' - notice the quotes), and PHP may in future define constants which, unfortunately for your code, have the same name. It works because PHP automatically converts a bare string (an unquoted string which does not correspond to any known symbol) into a string which contains the bare string. For instance, if there is no defined constant named bar, then PHP will substitute in the string 'bar' and use that.Poznßmka: This does not mean to always quote the key. You do not want to quote keys which are constants or variables, as this will prevent PHP from interpreting them.
<?php error_reporting(E_ALL); ini_set('display_errors', true); ini_set('html_errors', false); // Simple array: $array = array(1, 2); $count = count($array); for ($i = 0; $i < $count; $i++) { echo "\nChecking $i: \n"; echo "Bad: " . $array['$i'] . "\n"; echo "Good: " . $array[$i] . "\n"; echo "Bad: {$array['$i']}\n"; echo "Good: {$array[$i]}\n"; } ?>Poznßmka: The output from the above is:
Checking 0: Notice: Undefined index: $i in /path/to/script.html on line 9 Bad: Good: 1 Notice: Undefined index: $i in /path/to/script.html on line 11 Bad: Good: 1 Checking 1: Notice: Undefined index: $i in /path/to/script.html on line 9 Bad: Good: 2 Notice: Undefined index: $i in /path/to/script.html on line 11 Bad: Good: 2
More examples to demonstrate this fact:
<?php // Let's show all errors error_reporting(E_ALL); $arr = array('fruit' => 'apple', 'veggie' => 'carrot'); // Correct print $arr['fruit']; // apple print $arr['veggie']; // carrot // Incorrect. This works but also throws a PHP error of // level E_NOTICE because of an undefined constant named fruit // // Notice: Use of undefined constant fruit - assumed 'fruit' in... print $arr[fruit]; // apple // Let's define a constant to demonstrate what's going on. We // will assign value 'veggie' to a constant named fruit. define('fruit', 'veggie'); // Notice the difference now print $arr['fruit']; // apple print $arr[fruit]; // carrot // The following is okay as it's inside a string. Constants are not // looked for within strings so no E_NOTICE error here print "Hello $arr[fruit]"; // Hello apple // With one exception, braces surrounding arrays within strings // allows constants to be looked for print "Hello {$arr[fruit]}"; // Hello carrot print "Hello {$arr['fruit']}"; // Hello apple // This will not work, results in a parse error such as: // Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING' // This of course applies to using autoglobals in strings as well print "Hello $arr['fruit']"; print "Hello $_GET['foo']"; // Concatenation is another option print "Hello " . $arr['fruit']; // Hello apple ?> |
When you turn error_reporting() up to show E_NOTICE level errors (such as setting it to E_ALL) then you will see these errors. By default, error_reporting is turned down to not show them.
As stated in the syntax section, there must be an expression between the square brackets ('[' and ']'). That means that you can write things like this:
This is an example of using a function return value as the array index. PHP also knows about constants, as you may have seen the E_* ones before.<?php $error_descriptions[E_ERROR] = "A fatal error has occured"; $error_descriptions[E_WARNING] = "PHP issued a warning"; $error_descriptions[E_NOTICE] = "This is just an informal notice"; ?> |
<?php $error_descriptions[1] = "A fatal error has occured"; $error_descriptions[2] = "PHP issued a warning"; $error_descriptions[8] = "This is just an informal notice"; ?> |
As we already explained in the above examples, $foo[bar] still works but is wrong. It works, because bar is due to its syntax expected to be a constant expression. However, in this case no constant with the name bar exists. PHP now assumes that you meant bar literally, as the string "bar", but that you forgot to write the quotes.
At some point in the future, the PHP team might want to add another constant or keyword, or you may introduce another constant into your application, and then you get in trouble. For example, you already cannot use the words empty and default this way, since they are special reserved keywords.
Poznßmka: To reiterate, inside a double-quoted string, it's valid to not surround array indexes with quotes so "$foo[bar]" is valid. See the above examples for details on why as well as the section on variable parsing in strings.
For any of the types: integer, float, string, boolean and resource, if you convert a value to an array, you get an array with one element (with index 0), which is the scalar value you started with.
If you convert an object to an array, you get the properties (member variables) of that object as the array's elements. The keys are the member variable names.
If you convert a NULL value to an array, you get an empty array.
The array type in PHP is very versatile, so here will be some examples to show you the full power of arrays.
<?php // this $a = array( 'color' => 'red', 'taste' => 'sweet', 'shape' => 'round', 'name' => 'apple', 4 // key will be 0 ); // is completely equivalent with $a['color'] = 'red'; $a['taste'] = 'sweet'; $a['shape'] = 'round'; $a['name'] = 'apple'; $a[] = 4; // key will be 0 $b[] = 'a'; $b[] = 'b'; $b[] = 'c'; // will result in the array array(0 => 'a' , 1 => 'b' , 2 => 'c'), // or simply array('a', 'b', 'c') ?> |
P°φklad 6-4. Using array()
|
Note that it is currently not possible to change the values of the array directly in such a loop. A workaround is the following:
This example creates a one-based array.
Arrays are ordered. You can also change the order using various sorting functions. See the array functions section for more information. You can count the number of items in an array using the count() function.
Because the value of an array can be anything, it can also be another array. This way you can make recursive and multi-dimensional arrays.
P°φklad 6-10. Recursive and multi-dimensional arrays
|
You should be aware that array assignment always involves value copying. You need to use the reference operator to copy an array by reference.
To initialize an object, you use the new statement to instantiate the object to a variable.
For a full discussion, please read the section Classes and Objects.
If an object is converted to an object, it is not modified. If a value of any other type is converted to an object, a new instance of the stdClass built in class is created. If the value was null, the new instance will be empty. For any other value, a member variable named scalar will contain the value.
A resource is a special variable, holding a reference to an external resource. Resources are created and used by special functions. See the appendix for a listing of all these functions and the corresponding resource types.
Poznßmka: The resource type was introduced in PHP 4
As resource types hold special handlers to opened files, database connections, image canvas areas and the like, you cannot convert any value to a resource.
Due to the reference-counting system introduced with PHP 4's Zend-engine, it is automatically detected when a resource is no longer referred to (just like Java). When this is the case, all resources that were in use for this resource are made free by the garbage collector. For this reason, it is rarely ever necessary to free the memory manually by using some free_result function.
Poznßmka: Persistent database links are special, they are not destroyed by the garbage collector. See also the section about persistent connections.
The special NULL value represents that a variable has no value. NULL is the only possible value of type NULL.
Poznßmka: The null type was introduced in PHP 4
A variable is considered to be NULL if
it has been assigned the constant NULL.
it has not been set to any value yet.
it has been unset().
mixed indicates that a parameter may accept multiple (but not necessarily all) types.
gettype() for example will accept all PHP types, while str_replace() will accept strings and arrays.
Some functions like call_user_func() or usort() accept user defined callback functions as a parameter. Callback functions can not only be simple functions but also object methods including static class methods.
A PHP function is simply passed by its name as a string. You can pass any builtin or user defined function with the exception of array(), echo(), empty(), eval(), exit(), isset(), list(), print() and unset().
A method of an instantiated object is passed as an array containing an object as the element with index 0 and a method name as the element with index 1.
Static class methods can also be passed without instantiating an object of that class by passing the class name instead of an object as the element with index 0.
P°φklad 6-11. Callback function examples
|
PHP does not require (or support) explicit type definition in variable declaration; a variable's type is determined by the context in which that variable is used. That is to say, if you assign a string value to variable $var, $var becomes a string. If you then assign an integer value to $var, it becomes an integer.
An example of PHP's automatic type conversion is the addition operator '+'. If any of the operands is a float, then all operands are evaluated as floats, and the result will be a float. Otherwise, the operands will be interpreted as integers, and the result will also be an integer. Note that this does NOT change the types of the operands themselves; the only change is in how the operands are evaluated.
<?php $foo = "0"; // $foo is string (ASCII 48) $foo += 2; // $foo is now an integer (2) $foo = $foo + 1.3; // $foo is now a float (3.3) $foo = 5 + "10 Little Piggies"; // $foo is integer (15) $foo = 5 + "10 Small Pigs"; // $foo is integer (15) ?> |
If the last two examples above seem odd, see String conversion to numbers.
If you wish to force a variable to be evaluated as a certain type, see the section on Type casting. If you wish to change the type of a variable, see settype().
If you would like to test any of the examples in this section, you can use the var_dump() function.
Poznßmka: The behaviour of an automatic conversion to array is currently undefined.
Since PHP (for historical reasons) supports indexing into strings via offsets using the same syntax as array indexing, the example above leads to a problem: should $a become an array with its first element being "f", or should "f" become the first character of the string $a?
The current versions of PHP interpret the second assignment as a string offset identification, so $a becomes "f", the result of this automatic conversion however should be considered undefined. PHP 4 introduced the new curly bracket syntax to access characters in string, use this syntax instead of the one presented above:
See the section titled String access by character for more information.
Type casting in PHP works much as it does in C: the name of the desired type is written in parentheses before the variable which is to be cast.
The casts allowed are:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
Note that tabs and spaces are allowed inside the parentheses, so the following are functionally equivalent:
Poznßmka: Instead of casting a variable to string, you can also enclose the variable in double quotes.
It may not be obvious exactly what will happen when casting between certain types. For more info, see these sections:
Prom∞nnΘ jsou v PHP reprezentovßny znakem dolaru, nßsledovan²m nßzvem p°φslu╣nΘ prom∞nnΘ. V nßzvech prom∞nn²ch se rozli╣uje velikost pφsmen.
Nßzvy prom∞nn²ch jsou pod°φzeny stejn²m pravidl∙m jako jinß nßv∞╣tφ v PHP. Platn² nßzev prom∞nnΘ zaΦφnß pφsmenem nebo podtr╛φtkem, nßsledovan²m libovoln²m poΦtem pφsmen, Φφslic nebo potr╛φtek. Jako regulßrnφ v²raz to lze zapsat takto: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
Poznßmka: Pro na╣e ·Φely zde budeme za pφsmena pova╛ovat znaky a-z, A-Z a ASCII znaky od 127 do 255 (0x7f-0xff).
$var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // vypφ╣e "Bob, Joe" $4site = 'not yet'; // neplatnΘ; zaΦφnß Φφslicφ $_4site = 'not yet'; // platnΘ; zaΦφnß podtr╛φtkem $tΣyte = 'mansikka'; // platnΘ; 'Σ' je ASCII 228. |
V PHP 3 majφ prom∞nnΘ v╛dy p°i°azenu hodnotu. To znamenß, ╛e kdy╛ p°i°adφte v²raz do prom∞nnΘ, celß hodnota p∙vodnφho v²razu se zkopφruje do cφlovΘ prom∞nnΘ. Tedy, nap°φklad, po p°i°azenφ hodnoty jednΘ prom∞nnΘ do druhΘ, zm∞na jednΘ z nich se na druhΘ neprojevφ. Vφce informacφ o tomto zp∙sobu p°i°azenφ viz V²razy.
PHP nabφzφ jin² zp∙sob p°i°azenφ hodnot prom∞nn²m: p°i°azenφ odkazu. To znamenß, ╛e novß prom∞nnß jednodu╣e odkazuje (jin²mi slovy, "stßvß se aliasem" nebo "ukazuje na") na p∙vodnφ prom∞nnou. Zm∞ny na novΘ prom∞nnΘ se projevφ na tΘ p∙vodnφ a naopak. To takΘ znamenß, ╛e se nic nekopφruje; proto je p°i°azenφ rychlej╣φ. Av╣ak toto zrychlenφ bude zjistitelnΘ pouze v t∞sn²ch cyklech nebo p°i p°i°azovßnφ velk²ch polφ Φi objekt∙.
Pro p°i°azenφ odkazu staΦφ jednodu╣e p°ed prom∞nnou, kterß bude p°i°azovßna (zdrojovß prom∞nnß), p°ed°adit ampersand (&). Nap°φklad nßsledujφcφ kus k≤du vypφ╣e dvakrßt 'Jmenuji se Bob':
<?php $foo = 'Bob'; // P°i°adφ hodnotu 'Bob' do $foo $bar = &$foo; // Odkaz $foo p°es $bar. $bar = "Jmenuji se $bar"; // Zm∞na $bar... echo $bar; echo $foo; // $foo je takΘ zm∞n∞no. ?> |
Jednou z d∙le╛it²ch v∞cφ, kterΘ je t°eba si uv∞domit, je to, ╛e p°es odkazy lze p°i°azovat pouze pojmenovanΘ prom∞nnΘ.
PHP poskytuje velkΘ mno╛stvφ p°eddefinovan²ch prom∞nn²ch jakΘmukoli skriptu, kter² provßdφ. Mnoho t∞chto prom∞nn²ch, bohu╛el, nem∙╛e b²t pln∞ zdokumentovßno, proto╛e zßvisejφ na tom, na kterΘm serveru skript b∞╛φ, na verzi a nastavenφ serveru a dal╣φch faktorech. N∞kterΘ z t∞chto prom∞nn²ch nebudou dostupnΘ, kdy╛ PHP pob∞╛φ z p°φkazovΘ °ßdky. Seznam prom∞nn²ch - viz sekce P°eddefinovanΘ prom∞nnΘ.
Varovßnφ |
V PHP 4.2.0 a pozd∞j╣φch se zm∞nila implicitnφ sada p°eddefinovan²ch prom∞nn²ch, kterΘ jsou globßln∞ dostupnΘ. Individußlnφ vstupnφ a serverovΘ prom∞nnΘ se implicitn∞ neumφs╗ujφ do globßlnφho kontextu; namφsto toho jsou v nßsledujφcφch superglobßlnφch polφch. M∙╛ete v╣ak stßle vynutit starΘ chovßnφ nastavenφm register_globals v souboru php.ini na 'On'. Pro vφce informacφ a pozadφ t∞chto zm∞n prosφm nahlΘdn∞te do PHP 4.1.0 Release Announcement. |
Od verze 4.1.0 poskytuje PHP sadu p°eddefinovan²ch polφ, obsahujφcφch prom∞nnΘ WWW serveru (pokud to jde), prost°edφ a u╛ivatelskΘho vstupu. Tato novß pole majφ tu zvlß╣tnost, ╛e jsou automaticky globßlnφ -- tedy nap°. automaticky dostupnΘ v ka╛dΘm kontextu. Z tohoto d∙vodu jsou Φasto znßma jako "autoglobßlnφ" nebo "superglobßlnφ". (V PHP neexistuje mechanismus pro u╛ivatelskou definici superglobßlnφch prom∞nn²ch). Superglobßlnφ prom∞nnΘ jsou vypsßny nφ╛e; pro seznam jejich obsah∙ a dal╣φ diskusi o p°eddefinovan²ch prom∞nn²ch v PHP a jejich charakteru v╣ak musφte nahlΘdnout do Φßsti P°eddefinovanΘ prom∞nnΘ.
PHP superglobals (superglobßlnφ prom∞nnΘ)
Obsahuje odkaz na ka╛dou prom∞nnou, kterß je momentßln∞ dostupnß v globßlnφm kontextu skriptu. KlφΦi tohoto pole jsou nßzvy globßlnφch prom∞nn²ch.
Prom∞nnΘ nastavovanΘ WWW serveru nebo jinak p°φmo spjatΘ s provßd∞cφm prost°edφm aktußlnφho skriptu. AnalogickΘ starΘmu poli $HTTP_SERVER_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ).
Prom∞nnΘ poskytovanΘ skriptu p°es HTTP GET. AnalogickΘ starΘmu poli $HTTP_GET_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ).
Prom∞nnΘ poskytovanΘ skriptu p°es HTTP POST. AnalogickΘ starΘmu poli $HTTP_POST_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ).
Prom∞nnΘ poskytovanΘ skriptu p°es HTTP cookies. AnalogickΘ starΘmu poli $HTTP_COOKIE_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ).
Prom∞nnΘ poskytovanΘ skriptu p°es HTTP post uploady soubor∙. AnalogickΘ uploads. AnalogickΘ starΘmu poli $HTTP_POST_FILES (kterΘ je stßle dostupnΘ, ale zavr╛enΘ). Vφce informacφ - viz Upload metodou POST.
Prom∞nnΘ poskytovanΘ skriptu z prost°edφ. AnalogickΘ starΘmu poli $HTTP_ENV_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ).
Prom∞nnΘ poskytovanΘ skriptu p°es libovoln² vstupnφ mechanismus a kter²m proto nelze d∙v∞°ovat. Pozn.: p°i b∞hu z p°φkazovΘ °ßdky zde nebudou p°φtomny polo╛ky argv a argc; nachßzejφ se v poli $_SERVER. P°φtomnost a po°adφ prom∞nn²ch v tomto poli se definuje podle konfiguraΦnφ direktivy variables_order. Toto pole nemß p°φmou analogii ve verzφch PHP p°ed 4.1.0.
Prom∞nnΘ, kterΘ jsou momentßln∞ registrovßny v aktußlnφ relaci skriptu. AnalogickΘ starΘmu poli $HTTP_SESSION_VARS (kterΘ je stßle dostupnΘ, ale zavr╛enΘ). Vφce informacφ - viz Funkce pro obsluhu sessions.
Kontext prom∞nnΘ je oblast, ve kterΘ je definovßna. V∞t╣ina prom∞nn²ch v PHP mß pouze jedin² kontext. Ten zahrnuje i soubory vlo╛enΘ pomocφ "include" nebo "require". Nap°φklad:
Zde bude prom∞nnß $a dostupnß ve vlo╛enΘm skriptu b.inc. Av╣ak uvnit° u╛ivatelsky definovan²ch funkcφ se zaklßdß jejich lokßlnφ kontext. Jakßkoli prom∞nnß pou╛itß uvnit° funkce je implicitn∞ omezena na tento mφstnφ kontext. Nap°φklad:
$a = 1; /* globßlnφ kontext */ function Test() { echo $a; /* odkaz na prom∞nnou v lokßlnφm kontextu */ } Test(); |
Tento skript nevyprodukuje ╛ßdn² v²stup, proto╛e konstrukt "echo" odkazuje na lokßlnφ verzi prom∞nnΘ $a, a ta nemß v tomto kontextu p°i°azenu ╛ßdnou hodnotu. M∙╛ete si v╣imnout, ╛e to je trochu jinΘ ne╛ v jazyce C, kde jsou globßlnφ funkce automaticky dostupnΘ ve funkcφch, pokud nejsou specificky zastφn∞ny lokßlnφ definicφ. To m∙╛e zp∙sobit problΘmy tφm, ╛e Φlov∞k m∙╛e necht∞n∞ zm∞nit globßlnφ prom∞nnou. V PHP musφ b²t globßlnφ prom∞nnΘ deklarovßny uvnit° funkce jako globßlnφ, pokud se v nφ majφ pou╛φvat. P°φklad:
V²╣e uveden² skript vytiskne "3". Deklaracφ $a a $b ve funkci jako globßlnφch prom∞nn²ch se dosßhne toho, ╛e p°i odkazovßnφ na prom∞nnΘ se pracuje s jejich globßlnφ verzφ. PoΦet globßlnφch prom∞nn²ch, se kter²mi lze ve funkci manipulovat, nenφ omezen.
Druh²m zp∙sobem, jak p°istupovat k prom∞nn²m z globßlnφho kontextu, je pou╛itφ specißlnφho pole $GLOBALS, definovanΘho v PHP. P°edchozφ p°φklad lze p°epsat:
Pole $GLOBALS je asociativnφ pole s nßzvem globßlnφ prom∞nnΘ jako klφΦem a obsahem p°φslu╣nΘ prom∞nnΘ jako obsahem elementu pole.
Jinou d∙le╛itou vlastnostφ rozli╣ovßnφ kontext∙ prom∞nn²ch je mo╛nost pou╛φvßnφ static prom∞nn²ch. Statickß prom∞nnß existuje pouze v lokßlnφm kontextu funkce, ale neztrßcφ svoji hodnotu, pokud provßd∞nφ programu tento kontext opustφ. Uva╛ujme nßsledujφcφ p°φklad:
Tato funkce je pon∞kud neu╛iteΦnß, nebo╗ p°i ka╛dΘm volßnφ nastavuje $a na 0 a tiskne "0". Konstrukt $a++, kter² inkrementuje prom∞nnou, nemß ╛ßdn² v²znam, proto╛e p°i skonΦenφ vykonßvßnφ funkce se obsah prom∞nnΘ $a ztrßcφ. Aby m∞la funkce skuteΦn² v²znam ΦφtaΦe a hodnota se neztrßcela, deklaruje se prom∞nnß $a jako statickß:
Nynφ se p°i ka╛dΘm volßnφ funkce Test() vytiskne hodnota prom∞nnΘ $a a inkrementuje se.
StatickΘ prom∞nnΘ takΘ poskytujφ zp∙sob, jak °e╣it rekurzφvnφ funkce. Rekurzφvnφ funkce je takovß funkce, kterß volß sama sebe. Psanφ rekurzφvnφch funkcφ je t°eba v∞novat zvlß╣tnφ pΘΦi, proto╛e m∙╛e vzniknout nekoneΦn² cyklus volßnφ. Musφte se ujistit, ╛e mßte rekurzi adekvßtn∞ ukonΦenu. Nßsledujφcφ jednoduchß funkce rekurzφvn∞ poΦφtß do 10 za pou╛itφ statickΘ prom∞nnΘ $count ke zji╣t∞nφ okam╛iku pro ukonΦenφ:
N∞kdy je vhodnΘ, aby se nßzvy prom∞nn²ch mohly m∞nit, tj. aby mohly b²t dynamicky nastavovßny a pou╛φvßny. Normßlnφ prom∞nnß se nastavuje takov²mto konstruktem:
Prom∞nnß s prom∞nn²m nßzvem vezme hodnotu prom∞nnΘ a pou╛ije ji jako nßzev prom∞nnΘ. Ve v²╣e uvedenΘm p°φkladu, ahoj lze pou╛φt jako nßzev prom∞nnΘ uvedenφm dvou symbol∙ dolaru:
V tΘto chvφli byly definovßny dv∞ prom∞nnΘ a byly ulo╛eny do stromu symbol∙ PHP: $a s obsahem "ahoj" a $ahoj s obsahem "sv∞te". Proto konstrukt:
provede p°esn∞ totΘ╛ jako:
tedy oba vyprodukujφ: ahoj sv∞te.
P°i pou╛itφ prom∞nn²ch s prom∞nn²mi nßzvy s poli musφte vy°e╣it problΘm vφceznaΦnosti. Tj. kdy╛ napφ╣ete $$a[1], parser pot°ebuje v∞d∞t, mßte-li na mysli pou╛itφ $a[1] jako prom∞nnΘ nebo chcete $$a jako prom∞nnou a potom index [1] v tΘto prom∞nnΘ. Syntaxe pro °e╣enφ tΘto vφceznaΦnosti je ${$a[1]} pro prvnφ p°φpad a ${$a}[1] pro druh².
Kdy╛ se ode╣le formulß° do PHP skriptu, jakΘkoli prom∞nnΘ z tohoto formulß°e budou automaticky dostupnΘ v tomto skriptu. Je-li zapnuta konfiguraΦnφ volba track_vars, budou tyto prom∞nnΘ umφst∞ny v asociativnφch polφch $HTTP_POST_VARS, $HTTP_GET_VARS, a/nebo $HTTP_POST_FILES v zßvislosti na zdroji prom∞nn²ch.
Pro vφce informacφ o t∞chto prom∞nn²ch si laskav∞ p°eΦt∞te P°eddefinovanΘ prom∞nnΘ.
Kdy╛ se v²╣e uveden² formulß° ode╣le, hodnota vstupnφho textu bude dostupnß v $HTTP_POST_VARS['username']. Je-li zapnuta konfiguraΦnφ direktiva register_globals, prom∞nnß bude dostupnß i jako $username v globßlnφm kontextu.
Poznßmka: The magic_quotes_gpc configuration directive affects Get, Post and Cookie values. If turned on, value (It's "PHP!") will automagically become (It\'s \"PHP!\"). Escaping is needed for DB insertion. Also see addslashes(), stripslashes() and magic_quotes_sybase.
PHP also understands arrays in the context of form variables (see the related faq). You may, for example, group related variables together, or use this feature to retrieve values from a multiple select input:
P°φklad 7-2. More complex form variables
|
In PHP 3, the array form variable usage is limited to single-dimensional arrays. In PHP 4, no such restriction applies.
When submitting a form, it is possible to use an image instead of the standard submit button with a tag like:
When the user clicks somewhere on the image, the accompanying form will be transmitted to the server with two additional variables, sub_x and sub_y. These contain the coordinates of the user click within the image. The experienced may note that the actual variable names sent by the browser contains a period rather than an underscore, but PHP converts the period to an underscore automatically.
PHP transparently supports HTTP cookies as defined by Netscape's Spec. Cookies are a mechanism for storing data in the remote browser and thus tracking or identifying return users. You can set cookies using the setcookie() function. Cookies are part of the HTTP header, so the SetCookie function must be called before any output is sent to the browser. This is the same restriction as for the header() function. Any cookies sent to you from the client will automatically be turned into a PHP variable just like GET and POST method data.
If you wish to assign multiple values to a single cookie, just add [] to the cookie name. For example:
Note that a cookie will replace a previous cookie by the same name in your browser unless the path or domain is different. So, for a shopping cart application you may want to keep a counter and pass this along. i.e.
PHP automatically makes environment variables available as normal PHP variables.
Since information coming in via GET, POST and Cookie mechanisms also automatically create PHP variables, it is sometimes best to explicitly read a variable from the environment in order to make sure that you are getting the right version. The getenv() function can be used for this. You can also set an environment variable with the putenv() function.
Typically, PHP does not alter the names of variables when they are passed into a script. However, it should be noted that the dot (period, full stop) is not a valid character in a PHP variable name. For the reason, look at it:
$varname.ext; /* invalid variable name */ |
For this reason, it is important to note that PHP will automatically replace any dots in incoming variable names with underscores.
Because PHP determines the types of variables and converts them (generally) as needed, it is not always obvious what type a given variable is at any one time. PHP includes several functions which find out what type a variable is. They are gettype(), is_array(), is_float(), is_int(), is_object(), and is_string().
PHP definuje n∞kolik konstant a poskytuje mechanismus pro definici dal╣φch za b∞hu. Konstanty se hodn∞ podobajφ prom∞nn²m s v²jimkou dvou skuteΦnostφ: konstanty se musφ definovat pomocφ funkce define(), a nemohou pozd∞ji nab²vat jin²ch hodnot.
P°eddefinovanΘ konstanty (dostupnΘ v╛dy) jsou:
Nßzev souboru skriptu, kter² je prßv∞ Φten. Pokud je pou╛ita v souboru, kter² byl vlo╛en pomocφ "include" nebo "require", obsahuje nßzev vlo╛enΘho souboru, nikoli rodiΦovskΘho.
╚φslo °ßdku ve skriptu, kter² je prßv∞ Φten. Pokud je pou╛ita v souboru vlo╛enΘho pomocφ "include" nebo "require", obsahuje pozici v rßmci tohoto souboru.
TextovΘ vyjßd°enφ verze b∞╛φcφho PHP parseru, nap°. '3.0.8-dev'.
Nßzev operaΦnφho systΘmu, na kterΘm PHP parser b∞╛φ, nap°. 'Linux'.
Pravdivß hodnota (logickß jedniΦka).
Nepravdivß hodnota (logickß nula).
OznaΦuje neo╣et°itelnou chybu jinou ne╛ "parse error".
OznaΦuje stav, kdy PHP vφ, ╛e je n∞co ╣patn∞, ale bude dßl pokraΦovat. Tyto stavy se dajφ o╣et°it v samotnΘm skriptu. P°φkladem by byl neplatn² "regexp" (regulßrnφ v²raz) ve funkci ereg().
Chyba p°i syntaktickΘ anal²ze skriptu (chybnß syntaxe). O╣et°enφ nenφ mo╛nΘ.
Do╣lo k n∞Φemu, co by mohlo b²t chybou. Provßd∞nφ skriptu pokraΦuje. Mezi p°φklady pat°φ textov² index pole neopat°en² uvozovkami nebo prßce s prom∞nnou, kterß je╣t∞ nebyla definovßna.
V╣echny E_* konstanty shrnutΘ do jednΘ. P°i pou╛itφ s funkcφ error_reporting() zp∙sobφ hlß╣enφ ·pln∞ v╣ech problΘmu zaregistrovan²ch PHP.
E_* konstanty se typicky pou╛φvajφ s funkcφ error_reporting() nastavenφ hladiny hlß╣enφ chyb. Viz v╣echny tyto konstanty v O╣et°enφ chyb.
Dal╣φ konstanty m∙╛ete definovat pomocφ funkce define().
V╣imn∞te si, ╛e toto jsou konstanty, ne cΘΦkovskß makra; konstanty mohou reprezentovat pouze platnß skalßrnφ data.
V²razy jsou nejd∙le╛it∞j╣φmi stavebnφmi kameny PHP. V PHP je tΘm∞° v╣e, co napφ╣ete, v²raz. Nejjednodu╣╣φ, a p°ece nejp°esn∞j╣φ definicφ v²razu je "v╣echno, co mß hodnotu".
Nejzßkladn∞j╣φmi formami v²raz∙ jsou konstanty a prom∞nnΘ. Kdy╛ napφ╣ete "$a = 5", p°i°azujete '5' do $a. '5' mß, pochopiteln∞, hodnotu 5, nebo jin²mi slovy, '5' je v²raz s hodnotou 5 (v tomto p°φpad∞ je '5' celoΦφselnou konstantou).
Po tomto p°i°azenφ budete oΦekßvat, ╛e hodnota $a bude 5, tak╛e kdybyste napsali $b = $a, oΦekßvali byste totΘ╛, jako p°i napsßnφ $b = 5. Jin²mi slovy, $a je tedy v²raz s hodnotou 5. Pokud v╣e pracuje sprßvn∞, p°esn∞ to se takΘ stane.
O n∞co slo╛it∞j╣φm p°φkladem v²raz∙ jsou funkce. Uva╛ujme nap°. tuto funkci:
Za p°edpokladu, ╛e jste dob°e seznßmeni s konceptem funkcφ (pokud ne, nahlΘdn∞te do kapitoly o funkcφch), byste p°edpoklßdali, ╛e napsßnφ $c = foo() je v zßsad∞ totΘ╛ jako $c = 5, a mßte pravdu. Funkce jsou v²razy s hodnotou jejich nßvratovΘ hodnoty. Funkce foo() vracφ 5, tudφ╛ hodnota v²razu 'foo()' je 5. Obvykle funkce nevracejφ konstantnφ hodnotu, n²br╛ n∞co vypoΦφtßvajφ.
Hodnoty v PHP samoz°ejm∞ nemusejφ b²t pouze celß Φφsla, a velmi Φasto takΘ nejsou. PHP podporuje t°i typy skalßrnφch hodnot: celoΦφselnΘ, reßlnΘ (pohyblivß °ßdovß Φßrka) a °et∞zce (skalßrnφ hodnoty jsou hodnoty, kterΘ nejde "rozbφt" na men╣φ Φßsti, narozdφl nap°. od polφ). PHP podporuje takΘ dva kompozitnφ (neskalßrnφ) typy: pole a objekty. Ka╛d² z t∞chto typ∙ hodnot m∙╛e b²t p°i°azen do prom∞nnΘ nebo vracen z funkce.
U╛ivatelΘ PHP/FI 2 by nem∞li pocφtit zm∞nu. Ale PHP jde ve v²razech mnohem dßle, stejn∞ jako mnoho jin²ch programovacφch jazyk∙. PHP je v²razov∞ orientovan² jazyk, ve smyslu, ╛e tΘm∞° v╣e je v²raz. Uva╛ujme p°φklad, kter²m jsme se ji╛ zab²vali, '$a = 5'. Ihned vidφme, ╛e jsou zde zahrnuty dv∞ hodnoty, celoΦφselnß konstanta '5' a hodnota $a, kterß je aktualizovßna na 5. Ale je pravda, ╛e je tu je╣t∞ jedna hodnota, je to hodnota samotnΘho p°i°azenφ. P°i°azenφ jako takovΘ ohodnocuje p°i°azovanou hodnotu, v tomto p°φpad∞ 5. V praxi to znamenß, ╛e '$a = 5', bez ohledu na to co d∞lß, je v²raz s hodnotou 5. Proto je '$b = ($a = 5)' totΘ╛ jako '$a = 5; $b = 5;' (st°ednφk oznaΦuje konec v²razu). Proto╛e p°i°ezenφ jsou parsovßna zprava doleva, m∙╛ete takΘ napsat '$b = $a = 5'.
Jin²m dobr²m p°φkladem orientace na v²razy je pre- a post-inkrementace a dekrementace. U╛ivatelΘ PHP/FI 2 a mnoha jin²ch jazyk∙ znajφ notaci prom∞nnß++ a prom∞nnß--. To jsou inkrementaΦnφ a dekrementaΦnφ operßtory. V PHP/FI 2 nem∞lo '$a++' ╛ßdnou hodnotu (nenφ to v²raz), a proto ne╣lo p°i°adit nebo jinak pou╛φt. PHP roz╣i°uje schopnosti p°em∞nou t∞chto konstrukcφ ve v²razy, jako v C. V PHP, stejn∞ jako v C, existujφ dva typy inkrementace - pre-inkrementace a post-inkrementace. Oba ve svΘ podstat∞ inkrementujφ prom∞nnou a efekt na tuto prom∞nnou je toto╛n². Rozdφl je v hodnot∞ inkrementaΦnφho v²razu. Pre-inkrementace, zapsanß jako '++$var', ohodnocuje v²raz inkrementovanou hodnotou (PHP inkrementuje prom∞nnou d°φve, ne╛ p°eΦte jejφ hodnotu, proto "pre-inkrementace"). Post-inkrementace, zapsanß jako '$var++', ohodnocuje v²raz p∙vodnφ hodnotou prom∞nnΘ $var, p°ed inkrementacφ (PHP inkrementuje prom∞nnou po p°eΦtenφ jejφ hodnoty, proto "post-inkrement").
Velmi Φast²m typem v²raz∙ jsou v²razy porovnßvacφ. Tyto v²razy se ohodnocujφ 0 a 1 ve v²znamu FALSE, resp. TRUE. PHP podporuje > (v∞t╣φ ne╛), >= (v∞t╣φ nebo rovno), == (rovnß se), != (nerovnß se), < (men╣φ ne╛) a <= (men╣φ nebo rovno). Tyto v²razy se nejΦast∞ji pou╛φvajφ v podmφnkßch, jako je konstrukt if.
Poslednφm p°φkladem v²raz∙, kter²m se budeme zab²vat, je kombinacφ p°i°azenφ a operßtor∙. Ji╛ vφte, ╛e kdy╛ chcete inkrementovat $a o jedniΦku, jednodu╣e napφ╣ete '$a++' nebo '++$a'. Ale co kdy╛ chcete hodnotu zv²╣it o jinΘ Φφslo, nap°. o 3? Mohli byste napsat '$a++' vφckrßt za sebou, ale to samoz°ejm∞ nenφ efektivnφ ani pohodlnΘ. Mnohem praktiΦt∞j╣φ je napsat '$a = $a + 3'. V²raz '$a + 3' ohodnocuje hodnotu $a plus 3 a je p°i°azen zp∞t do $a, co╛ dßvß $a inkrementovanΘ o 3. V PHP, stejn∞ jako v °ad∞ jin²ch jazyk∙ (jako je C), to m∙╛ete napsat krat╣φm zp∙sobem, kter² se Φasem stane jasn∞j╣φ i rychlej╣φ k pochopenφ. P°iΦtenφ 3 k aktußlnφ hodnot∞ $a lze zapsat jako '$a += 3'. P°esn∞ to znamenß "vezmi hodnotu $a, p°iΦti k nφ 3 a p°i°a∩ zp∞t do $a". Krom∞ krat╣φho a p°ehledn∞j╣φho zßpisu je v²hodou takΘ rychlej╣φ provedenφ. Hodnota '$a += 3', jako hodnota regulΘrnφho p°i°azenφ, je p°i°azovanß hodnota. Uv∞domte si, ╛e to NEN═ 3, n²br╛ $a plus 3 (co╛ je hodnota v²razu p°i°azovanΘho do $a). Takto lze pou╛φt jak²koli binßrnφ operßtor, nap°φklad '$a -= 5' (odeΦti 5 od hodnoty $a), '$b *= 7' (vynßsob hodnotu $b Φφslem 7) apod.
Je tu je╣t∞ jeden v²raz, kter² se m∙╛e zdßt zvlß╣tnφ, pokud jste ho je╣t∞ nevid∞li v jin²ch jazycφch: ternßrnφ podmφn∞n² operßtor:
Pokud hodnota prvnφho podv²razu je TRUE (nenulovß), je ohodnocen druh² podv²raz a je v²sledkem celΘho podmφn∞nΘho v²razu. Jinak je ohodnocen t°etφ podv²raz a je pak hodotou celΘho v²razu.Nßsledujφcφ p°φklad by m∞l pomoci lΘpe pochopit pre- a post-inkrementaci i v²razy obecn∞:
function double($i) { return $i*2; } $b = $a = 5; /* p°i°a∩ hodnotu p∞t do prom∞nn²ch $a a $b */ $c = $a++; /* prove∩ post-inkrement, p°i°a∩ p∙vodnφ hodnotu $a (5) do $c */ $e = $d = ++$b; /* prove∩ pre-inkrement, p°i°a∩ inkrementovanou hodnotu $b (6) do $d a $e */ /* nynφ jsou hodnoty prom∞nn²ch $d a $e rovny 6 */ $f = double($d++); /* p°i°a∩ dvakrßt hodnotu $d <emphasis>p°ed</emphasis> inkrementacφ, 2*6 = 12, do $f */ $g = double(++$e); /* p°i°a∩ dvakrßt hodnotu $e <emphasis>po</emphasis> inkrementaci, 2*7 = 14 do $g */ $h = $g += 10; /* nejd°φve je $g inkrementovßno o 10 mß pak hodnotu 24. Hodnota p°i°azenφ (24) se p°i°adφ do $h a $h tφm zφskßvß takΘ hodnotu 24. */ |
Na zaΦßtku kapitoly bylo °eΦeno, ╛e si popφ╣eme r∙znΘ typy konstrukt∙, a jak bylo slφbeno, v²razy mohou b²t konstrukty. V tomto p°φpad∞ majφ konstrukty formßt 'expr' ';', co╛ znamenß "v²raz nßsledovan² st°ednφkem. V konstruktu '$b=$a=5;', je $a=5 platn² v²raz, ale samo o sob∞ to nenφ konstrukt.'$b=$a=5;' je i platn² konstrukt.
Pozn. p°ekladatele: P°edchozφm odstavci (obΦas i jinde) pou╛φvßm termφn "konstrukt" pro anglickΘ slovo "statement". Tento p°eklad nenφ p°φli╣ korektnφ, ale v ΦeskΘ programßtorskΘ mluv∞ neexistuje vhodn² termφn. Kdyby n∞kdo v∞d∞l o lep╣φm, napi╣te mi, prosφm, na luk@php.net.
Poslednφ v∞cφ, kterß si zaslou╛φ zmφnku, je pravdivostnφ hodnota v²raz∙. V mnoha p°φpadech, hlavn∞ podmφnkßch a cyklech, vßs nezajφmß konkrΘtnφ hodnota v²razu, n²br╛ pouze to, jestli je TRUE nebo FALSE. Konstanty TRUE a FALSE (malß/velkß pφsmena nehrajφ roli) p°edstavujφ dv∞ mo╛nΘ boolovskΘ (pravdivostnφ) hodnoty. V p°φpad∞ pot°eby je v²raz automaticky p°eveden na typ boolean. Detailn∞j╣φ informace o zp∙sobu konverze - viz sekce o typovΘ konverzi.
PHP poskytuje plnou a silnou implementaci v²raz∙ a ·pln∞ je zdokumentovat p°esahuje rozsah tohoto manußlu. V²╣e uvedenΘ p°φklady by vßm m∞li naznaΦit, co jsou v∙bec v²razy a jak konstruovat u╛iteΦnΘ v²razy. Ve zb²vajφcφ Φßsti manußlu budeme psßt expr jako╛to jak²koli platn² PHP v²raz.
Vzpomφnßte si na zßkladnφ aritmetiku ze ╣koly? Tohle je ·pln∞ stejnΘ.
Tabulka 10-1. AritmetickΘ operßtory
P°φklad | Nßzev | V²sledek |
---|---|---|
$a + $b | SΦφtßnφ | SouΦet $a a $b. |
$a - $b | OdΦφtßnφ | ROzdφl $a a $b. |
$a * $b | Nßsobenφ | SouΦin $a a $b. |
$a / $b | D∞lenφ | Podφl $a a $b. |
$a % $b | Zbytek | Zbytek po d∞lenφ $a a $b. |
Operßtor d∞lenφ ("/") vracφ celoΦφselnou hodnotu (v²sledek celoΦφselnΘho d∞lenφ) prßv∞ tehdy, kdy╛ oba operandy jsou celß Φφsla (nebo °et∞zce, kterΘ se dajφ p°evΘst na celß Φφsla) a podφl je celΘ Φφslo. Pokud n∞kter² z operand∙ celoΦφseln² nenφ nebo v²sledek nenφ celΘ Φφslo, vrßtφ se hodnota v plovoucφ °ßdovΘ Φßrce (float).
Zßkladnφm p°i°azovacφm operßtorem je "=". Mohli byste si zprvu myslet, ╛e se jednß o "rovnß se". Nikoliv. SkuteΦn∞ to znamenß, ╛e se levΘmu operandu p°i°adφ hodnota v²razu vpravo (tj. "nastav na", "p°i°a∩ do" atd.).
Hodnotou v²razu p°i°azenφ je hodnota, kterß se p°i°azuje. Tj. hodnotou "$a = 3" je Φφslo 3. To vßm umo╛≥uje provßd∞t r∙znΘ triky:
Krom∞ zßkladnφho operßtoru p°i°azenφ existujφ je╣t∞ "kombinovanΘ operßtory" pro v╣echny binßrnφ aritmetickΘ a °et∞zovΘ operßtory, kterΘ umo╛≥ujφ pou╛φt hodnotu ve v²razu a pak hodnotu tohoto v²razu p°i°adit zp∞t. Nap°φklad:
$a = 3; $a += 5; // nastavφ $a na hodnotu 8, jako kdybychom °ekli: $a = $a + 5; $b = "Ahoj "; $b .= "tam!"; // nastavφ $b na "Ahoj tam!", p°esn∞ tak, jako $b = $b . "tam!"; |
Uv∞domte si, ╛e p°i°azenφ zkopφruje hodnotu p∙vodnφ prom∞nnΘ do novΘ prom∞nnΘ (p°i°azenφ hodnoty), tak╛e zm∞ny jednΘ z nich se na druhΘ prom∞nnΘ neprojevφ. To m∙╛e mφt v²znam takΘ tehdy, kdy╛ pot°ebujete zkopφrovat n∞co jako obrovskΘ pole uvnit° krßtkΘho cyklu. PHP 4 podporuje p°i°azenφ odkazem pou╛itφm syntaxe $var = &$othervar;, ale v PHP 3 to provΘst nelze. "P°i°azenφ odkazem" znamenß, ╛e ob∞ prom∞nnΘ ukazujφ na tatß╛ data a nic se nikam nekopφruje. Chcete-li se o odkazech dozv∞d∞t vφce, Φt∞te prosφm Vysv∞tlenφ referencφ.
BitovΘ operßtory umo╛≥ujφ "p°ehodit" konkrΘtnφ bit v celoΦφselnΘ hodnot∞ (integer) na jedniΦku nebo nulu. Pokud jsou jak lev², tak prav² parametr °et∞zce, pracujφ bitovΘ operßtory na znacφch v t∞chto °etezcφch.
<?php echo 12 ^ 9; // Vypφ╣e '5' echo "12" ^ "9"; // Vypφ╣e znak Backspace (ascii 8) // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8 echo "hallo" ^ "hello"; // Vypφ╣e ascii hodnoty #0 #4 #0 #0 #0 // 'a' ^ 'e' = #4 ?> |
Tabulka 10-2. BitovΘ operßtory
P°φklad | Nßzev | V²sledek |
---|---|---|
$a & $b | And (log. souΦin) | Nastavujφ se bity, kde je jedniΦka v $a i v $b. |
$a | $b | Or(log. souΦet) | Nastavujφ se bity, kde je jedniΦka v $a nebo v $b (i v obou souΦasn∞). |
$a ^ $b | Xor (exkluzφvnφ log. souΦet) | Nastavujφ se bity, kde je jedniΦka v $a nebo v $b, ale ne v obou souΦasn∞. |
~ $a | Not (negace) | Tam, kde je nula, bude jedniΦka, a naopak. |
$a << $b | Posun vlevo | Posune bity v $a o $b krok∙ (mφst) vlevo (ka╛d² krok znamenß "nßsobenφ dv∞ma"). |
$a >> $b | Posun vpravo | Posune bity v $a o $b krok∙ (mφst) vpravo (ka╛d² krok znamenß "d∞lenφ dv∞ma"). |
Operßtory porovnßnφ, jak nßzev napovφdß, slou╛φ k porovnßnφ dvou hodnot.
Tabulka 10-3. Operßtory porovnßnφ
P°φklad | Nßzev | V²sledek |
---|---|---|
$a == $b | Rovnost | TRUE, prßv∞ kdy╛ je $a rovno $b. |
$a === $b | Identita | TRUE kdy╛ je $a rovno $b a navφc tΘto╛ typu (pouze PHP 4). |
$a != $b | Nerovnost | TRUE prßv∞ kdy╛ $a nenφ rovno $b. |
$a <> $b | Nerovnost | TRUE prßv∞ kdy╛ $a nenφ rovno $b. |
$a !== $b | Neidentita | TRUE kdy╛ $a nenφ rovno $b nebo nejsou tΘho╛ typu (pouze PHP 4). |
$a < $b | Men╣φ ne╛ | TRUE kdy╛ je $a ost°e men╣φ ne╛ $b. |
$a > $b | V∞t╣φ ne╛ | TRUE kdy╛ je $a ost°e v∞t╣φ ne╛ $b. |
$a <= $b | Men╣φ nebo rovno | TRUE kdy╛ je $a men╣φ nebo rovno $b. |
$a >= $b | V∞t╣φ nebo rovno | TRUE kdy╛ je $a v∞t╣φ nebo rovno $b. |
Jin²m podmφnkov²m operßtorem je "?:" (ternßrnφ) operßtor, kter² funguje stejn∞ jako v C a mnoh²ch jin²ch jazycφch.
V²raz je ohodnocen jako hodnota expr2 kdy╛ mß expr1 hodnotu TRUE, a expr3 kdy╛ mß expr1 hodnotu FALSE.PHP podporuje jeden operßtor °φzenφ chyb: znak at (@). Kdy╛ ho p°ed°adφte v²razu v PHP, jakΘkoli chybovΘ zprßvy, kterΘ se mohou generovat ve v²razu, budou ignorovßny.
Pokud je zapnutotrack_errors, budou se v╣echny chybovΘ zprßvy generovanΘ v²razem uklßdat do globßlnφ prom∞nnΘ $php_errormsg. Tato prom∞nnß bude p°epsßna p°i ka╛dΘ chyb∞, tak╛e ji testujte v╛dy co nejd°φve, pokud ji chcete pou╛φvat.
<?php /* Intentional file error */ $my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'"); // this works for any expression, not just functions: $value = @$cache[$key]; // will not issue a notice if the index $key doesn't exist. ?> |
Poznßmka: Operßtor @ pracuje pouze na v²razech. Platφ jednoduchΘ pravidlo: m∙╛ete-li zφskat hodnotu n∞Φeho, m∙╛ete p°ed to dßt operßtor @. To se t²kß nap°φklad prom∞nn²ch, funkcφ, volßnφ include() konstant a podobn∞. Nem∙╛ete ho p°ed°adit definicφm funkcφ nebo t°φd a podmφnkov²m strukturßm typu if nebo foreach.
Viz takΘ error_reporting().
Varovßnφ |
V souΦasnosti p°ed°azenφ operßtoru °φzenφ chyb "@" vy°adφ i hlß╣enφ kritick²ch chyb, kterΘ zp∙sobφ ukonΦenφ provßd∞nφ skriptu. To mj. znamenß, ╛e pokud pou╛ijete "@" k potlaΦenφ chyb z n∞jakΘ funkce, a tato funkce nenφ k dispozici nebo obsahuje chyby, skript zde skonΦφ bez jakΘkoli indikace, co se stalo. |
PHP podporuje jeden provßd∞cφ operßtor: obrßcenΘ apostrofy (``). Uv∞domte si, ╛e to nejsou obyΦejnΘ apostrofy! PHP se pokusφ provΘst obsah uzav°en² mezi t∞mito znaky jako p°φkaz shellu; v²stup je vrßcen (tzn. nebude pouze vypsßn na v²stup∙ m∙╛e b²t p°i°azen prom∞nnΘ).
Poznßmka: Operßtor m∙╛e b²t vy°azen, pokud je aktivnφ bezpeΦn² re╛im nebo je vypnuto shell_exec().
Viz takΘ escapeshellcmd(), exec(), passthru(), popen(), shell_exec(), a system().
PHP podporuje pre- a post inkrementaΦnφ a dekrementaΦnφ operßtory ve stylu C.
Tabulka 10-4. InkrementaΦnφ/dekrementaΦnφ operßtory
P°φklad | Nßzev | ┌Φinek |
---|---|---|
++$a | Pre-inkrementace | Inkrementuje $a o jedniΦku, potom vrßtφ $a. |
$a++ | Post-inkrementace | Vrßtφ $a, potom inkrementuje $a o jedniΦku. |
--$a | Pre-dekrementace | Dekrementuje $a o jedniΦku, potom vrßtφ $a. |
$a-- | Post-dekrementace | Vrßtφ $a, potom dkrementuje $a o jedniΦku. |
Zde je p°φklad jednoduchΘho skriptu:
<?php echo "<h3>Postinkrementace</h3>"; $a = 5; echo "M∞lo by b²t 5: " . $a++ . "<br>\n"; echo "M∞lo by b²t 6: " . $a . "<br>\n"; echo "<h3>Preinkrementace</h3>"; $a = 5; echo "M∞lo by b²t 6: " . ++$a . "<br>\n"; echo "M∞lo by b²t 6: " . $a . "<br>\n"; echo "<h3>Postdekrementace</h3>"; $a = 5; echo "M∞lo by b²t 5: " . $a-- . "<br>\n"; echo "M∞lo by b²t: " . $a . "<br>\n"; echo "<h3>Predekrementace</h3>"; $a = 5; echo "M∞lo by b²t 4: " . --$a . "<br>\n"; echo "M∞lo by b²t 4: " . $a . "<br>\n"; ?> |
Tabulka 10-5. LogickΘ operßtory
P°φklad | Nßzev | V²sledek |
---|---|---|
$a and $b | And | TRUE kdy╛ $a i $b jsou TRUE. |
$a or $b | Or | TRUE kdy╛ $a nebo $b je TRUE. |
$a xor $b | Xor | TRUE kdy╛ $a nebo $b je TRUE, ale ne oba souΦasn∞. |
! $a | Not | TRUE kdy╛ $a nenφ TRUE. |
$a && $b | And | TRUE kdy╛ $a i $b jsou TRUE. |
$a || $b | Or | TRUE kdy╛ $a nebo $b je TRUE. |
D∙vodem pro dv∞ r∙znΘ varianty operßtor∙ "and" a "or" je to, ╛e majφ jinou prioritu. (Viz Priorita operßtor∙.)
Priorita operßtoru specifikuje, jak "t∞sn∞" vß╛e dva v²razy mezi sebou. Nap°φklad v²raz 1 + 5 * 3, v²sledkem je 16 a nikoli 18, proto╛e operßtor nßsobenφ ("*") mß vy╣╣φ prioritu ne╛ operßtor sΦφtßnφ ("+"). K vynucenφ priority m∙╛eme v p°φpad∞ pot°eby pou╛φt zßvorky. Kup°. (1 + 5) * 3 mß hodnotu 18.
Nßsledujφcφ tabulka ukazuje p°ehled operßtor∙ vzestupn∞ se°azen²ch podle priority.
Tabulka 10-6. Priorita operßtor∙
Asociativita | Operßtory |
---|---|
levß | , |
levß | or |
levß | xor |
levß | and |
pravß | |
levß | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
levß | ? : |
levß | || |
levß | && |
levß | | |
levß | ^ |
levß | & |
bez asociativity | == != === !== |
bez asociativity | < <= > >= |
levß | << >> |
levß | + - . |
levß | * / % |
pravß | ! ~ ++ -- (int) (double) (string) (array) (object) @ |
pravß | [ |
bez asociativity | new |
Existujφ dva °etezcovΘ operßtory. Jednφm je operßtor spojenφ ('.'), kter² vracφ spojenφ pravΘho a levΘho argumentu. Druh²m je operßtor spojujφcφho p°i°azenφ ('.='), jen╛ p°ipojφ argument na pravΘ stran∞ k argumentu na stran∞ levΘ. Pro vφce informacφ si laskav∞ p°eΦt∞te Operßtory p°i°azenφ.
Jak²koli PHP skript je slo╛en ze sΘrie konstrukt∙. Konstrukt m∙╛e b²t p°i°azenφ, volßnφ funkce, cyklus, podmφnka, stejn∞ jako konstrukt, kter² nic ned∞lß (prßzdn² konstrukt). Konstrukt obvykle konΦφ st°ednφkem. Navφc lze konstrukty seskupit do skupiny (bloku) uzav°enΘ slo╛en²mi zßvorkami. Tento blok je sßm o sob∞ konstruktem. V tΘto kapitole jsou popsßny r∙znΘ typy konstrukt∙.
Konstrukt if je jednφm z nejd∙le╛it∞j╣φch prvk∙ v mnoha jazycφch, vΦetn∞ PHP. Umo╛≥uje podmφn∞nΘ provßd∞nφ kusu k≤du. Struktura if v PHP je podobnß struktu°e v C:
Jak je popsßno v sekci o v²razech, v²raz expr je ohodnoce svou boolovskou hodnotou. Poku je expr ohodnocen jako TRUE, PHP provede statement; je-li ohodnocen jako FALSE, neprovede se nic. Vφce informacφ o to, jak se v²razy ohodnocujφ jako FALSE najdete v Φßsti 'Konverze na typ boolean'.
Nßsledujφcφ p°φklad by vypsal a je v∞t╣φ ne╛ b, pokud $a je v∞t╣φ ne╛ $b:
╚asto byste cht∞li, aby se podmφn∞n∞ provßd∞l vφce ne╛ jeden konstrukt. Nenφ samoz°ejm∞ nutnΘ ka╛d² konstrukt zabalit do struktury if. Mφsto toho m∙╛ete seskupit vφce konstrukt∙ do bloku. Nap°φklad tento k≤d by zobrazil a je v∞t╣φ ne╛ b, pokud $a je v∞t╣φ ne╛ $b a p°i°adil by hodnotu $a do $b:
Konstrukty if mohou b²t libovoln∞ vno°ovßny do jin²ch konstrukt∙ if, co╛ poskytuje plnou flexibilitu podmφn∞nΘho provßd∞nφ r∙zn²ch Φßstφ programu.
╚asto takΘ m∙╛ete chtφt n∞co provßd∞t, pokud je jistß podmφnka spln∞na, a n∞co jinΘho, kdy╛ spln∞na nenφ. To umo╛≥uje konstrukt else. else roz╣i°uje konstrukt if o provßd∞nφ k≤du v p°φpad∞, ╛e v²raz v konstruktu if je ohodnocen jako FALSE. Nap°φklad nßsledujφcφ k≤d vypφ╣e a je v∞t╣φ ne╛ b, pokud $a je v∞t╣φ ne╛ $b, a a NEN═ v∞t╣φ ne╛ b v ostatnφch p°φpadech:
Konstrukt v else se provßdφ, pouze pokud je v²raz v if ohodnocen jako FALSE, a pokud by zde byly n∞jakΘ v²razy elseif - pouze pokud by byly takΘ ohodnoceny jako FALSE (viz elseif).Jak nßzev napovφdß, elseif, je kombinacφ if a else. Stejn∞ jako else, roz╣i°uje konstrukt if k provßd∞nφ odli╣n²ch konstrukt∙ v p°φpad∞, ╛e jev²raz p∙vodnφho konstruktu if ohodnocen jako FALSE. Tedy, narozdφl od else, se provßdφ pouze tehdy, je-li v²raz v podmφnce elseif ohodnocen jako TRUE. Nap°φklad nßsledujφcφ k≤d vypφ╣e a je v∞t╣φ ne╛ b, a se rovnß b nebo a je men╣φ ne╛ b:
if ($a > $b) { print "a je v∞t╣φ ne╛ b"; } elseif ($a == $b) { print "a se rovnß b"; } else { print "a je men╣φ ne╛ b"; } |
V rßmci jednoho konstruktu if m∙╛e b²t vφce konstrukt∙ elseif. Provßdφ se prvnφ konstrukt elseif (pokud v∙bec n∞jak²), jeho╛ v²raz je ohodnocen TRUE. V PHP m∙╛ete napsat i 'else if' (dv∞ma slovy), chovßnφ bude naprosto toto╛nΘ jako u 'elseif' (jednφm slovem). Syntaktick² v²znam je mφrn∞ odli╣n² (znßte-li C, je to stejnΘ), av╣ak ve v²sledku dostaneme p°esn∞ toto╛nΘ chovßnφ.
Konstrukt elseif se provßdφ, pouze jsou-li p°φslu╣n² (bezprost°edn∞ p°edchßzejφcφ) v²raz konstruktu if a v²razy v╣ech p°φslu╣n²ch p°edchßzejφcφch konstrukt∙ elseif ohodnoceny jako FALSE, a konkrΘtnφ v²raz v elseif ohodnocen jako TRUE.
PHP nabφzφ alternativnφ syntaxi pro n∞kterΘ z °φdicφch struktur, jmenovit∞ if, while, for, foreach, a switch. V ka╛dΘm z t∞chto p°φpad∙ je zßkladnφm formßtem alternativnφ syntaxe zßm∞na otvφracφ zßvorky za dvojteΦku (:) a uzavφracφ zßvorky za endif;, endwhile;, endfor;, endforeach;, resp. endswitch;.
Ve v²╣e uvedenΘm p°φkladu je HTML blok vno°en do konstruktu if napsanΘm alternativnφ syntaxφ. Tento HTML blok by se zobrazil pouze v p°φpad∞, ╛e je $a rovno 5.
Alternativnφ syntaxi lze pou╛φt i pro else a elseif. Nßsledujφcφ p°φklad ukazuje strukturu if, elseif a else v alternativnφm formßtu:
Cykly while jsou nejjednodu╣╣φm typem cykl∙ v PHP. Chovajφ se jako jejich prot∞j╣ci v C. Zßkladφ formßt konstruktu while je tento:
V²znam konstruktu while je snadno pochopiteln². ╪φkß PHP, ╛e mß provßd∞t vno°en²(Θ) konstrukt(y) tak dlouho, dokud je v²raz ve while roven TRUE. Hodnota v²razu je testovßna poka╛dΘ na zaΦßtku cyklu (v ka╛dΘ iteraci), tak╛e i kdy╛ se tato hodnota b∞hem provßd∞nφ vno°en²ch konstrukt∙ zm∞nφ, provede se zbytek k≤du uvnit° cyklu - v konkrΘtnφ iteraci - a╛ do konce (ka╛dΘ provedenφ k≤du uvnit° cyklu je jedna iterace). N∞kdy, kdy╛ je v²raz ve while ohodnocen jako FALSE ji╛ p°i vstupu do cyklu, vno°en² k≤d se neprovede v∙bec.
Podobn∞, jako v p°φpad∞ if, m∙╛ete i zde seskupovat konstrukty uvnit° cyklu while ohraniΦenφm tohoto k≤du slo╛en²mi zßvorkami nebo za pou╛itφ alternativnφ syntaxe:
Nßsledujφcφ p°φklady jsou identickΘ, oba vypφ╣φ Φφsla od 1 do 10:
Cykly do..while jsou velmi podobnΘ cykl∙m while krom∞ toho, ╛e pravdivost v²razu se testuje na konci ka╛dΘ iterace namφsto jejφho zaΦßtku. Hlavnφ rozdφl oproti b∞╛n²m cykl∙m while je ten, ╛e prvnφ iterace cyklu do..while se provede v╛dy (pravdivostnφ v²raz je testovßn a╛ na konci iterace), co╛ u cyklu while nenφ zaruΦeno (pravdivostnφ v²raz je testovßn na zaΦßtku iterace; pokud je ohodnocen jako FALSE, provßd∞nφ cyklu hned skonΦφ).
Toto je jedinß syntaxe pro cykly do..while:
V²╣e uveden² cyklus by se provedl prßv∞ jednou, proto╛e po prvnφ iteraci, kdy╛ se testuje pravdivostnφ v²raz, je tento ohodnocen jako FALSE ($i nenφ v∞t╣φ ne╛ 0) a provßd∞nφ cyklu konΦφ.
PokroΦilφ programßto°i v C mohou znßt i odli╣nΘ pou╛itφ cyklu do..while. K≤d se uzav°e do do..while(0) a pou╛ije se p°φkaz break. To umo╛≥uje p°eru╣it provßd∞nφ cyklu uprost°ed k≤du, jak je znßzorn∞no v tomto p°φkladu:
do { if ($i < 5) { print "i nenφ dost velkΘ"; break; } $i *= $factor; if ($i < $minimum_limit) { break; } print "i je ok"; ...zpracuj i... } while(0); |
Ned∞lejte si nic z toho, ╛e tomu hned a beze zbytku nerozumφte. M∙╛ete psßt skripty, a to i velmi ·ΦinnΘ skripty, i bez pou╛itφ tΘto 'finty'.
Cykly for jsou nejslo╛it∞j╣φmi cykly v PHP. Chovajφ se stejn∞, jako jejich soukmenovci v C. Syntaxe cyklu for je nßsledujφcφ:
Prvnφ v²raz (expr1) je ohodnocen (proveden) jednou, bezpodmφneΦn∞, na zaΦßtku cyklu.
Na zaΦßtku ka╛dΘ iterace je ohodnocen v²raz expr2. Pokud mß hodnotu TRUE, cyklus pokraΦuje a zpracovßvß se k≤d uvnit° cyklu. Je-li naopak jeho hodnota FALSE, provßd∞nφ cyklu konΦφ.
Na konci ka╛dΘ iterace se ohodnotφ (provede) v²raz expr3.
Ka╛d² z v²raz∙ m∙╛e b²t prßzdn². Prßzdn² v²raz expr2 znamenß, ╛e cyklus bude probφhat nekoneΦn∞ dlouho (PHP, stejn∞ jako C, implicitn∞ p°edpoklßdß hodnotu TRUE). To nemusφ b²t tak bez u╛itku, jak si m∙╛ete myslet. ╚asto m∙╛ete toti╛ chtφt ukonΦit cyklus pomocφ podmφn∞nΘho p°φkazu break, namφsto pou╛itφ pravdivostnφho v²razu v konstruktu cyklu for.
P°edpoklßdejme nßsledujφcφ p°φklady. V╣echny zobrazφ Φφsla od 1 do 10:
/* p°φklad 1 */ for ($i = 1; $i <= 10; $i++) { print $i; } /* p°φklad 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; } print $i; } /* p°φklad 3 */ $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } /* p°φklad 4 */ for ($i = 1; $i <= 10; print $i, $i++); |
Prvnφ p°φklad samoz°ejm∞ vypadß nejlΘpe (nebo mo╛nß i ten Φtvrt²), ale m∙╛ete p°ijφt na to, ╛e schopnost pou╛φvat prßzdnΘ v²razy v cyklech for nemusφ b²t n∞kdy ·pln∞ k zahozenφ.
PHP podporuje pro cykly for takΘ alternativnφ "dvojteΦkovou syntaxi".
JinΘ jazyky majφ konstrukt foreach k traverzovßnφ polφ nebo hash∙. V PHP 3 nic takovΘho nenφ, PHP 4 ano (viz foreach). V PHP 3 m∙╛ete k dosa╛enφ stejnΘho efektu kombinovat while s funkcemi list() a each(). P°φklady najdete v dokumentaci.
PHP 4 (ne PHP 3) zahrnuje konstrukt foreach, podobn∞ jako Perl a r∙znΘ dal╣φ jazyky. To poskytuje snadn² zp∙sob k iteraci p°es pole. Existujφ dv∞ syntaxe; ta druhß je men╣φm, av╣ak u╛iteΦn²m roz╣φ°enφm tΘ prvnφ:
Prvnφ forma traverzuje pole danΘ v²razem array_expression. V ka╛dΘ iteraci je hodnota aktußlnφho elementu p°i°azena do $value a vnit°nφ ukazatel na pole je zv²╣en o jednotku (tzn. v p°φ╣tφ iteraci budete hled∞t na nßsledujφcφ element).
Druhß forma d∞lß totΘ╛, krom∞ toho, ╛e aktußlnφ klφΦ elementu bude v ka╛dΘ iteraci p°i°azen do prom∞nnΘ $key.
Poznßmka: Kdy╛ foreach zaΦne provßd∞nφ prvnφ iterace, je vnit°nφ ukazatel automaticky nastaven na prvnφ element pole. To znamenß, ╛e p°ed foreach nemusφte volat reset().
Poznßmka: Uv∞domte si takΘ, ╛e foreach pracuje na kopii specifikovanΘho pole, nikoli na poli samotnΘm, proto ukazatel na pole nenφ modifikovßn tak, jako konstruktem each() a zm∞ny na vrßcenΘm elementu se na p∙vodnφm poli neprojevφ.
Poznßmka: foreach nepodporuje mo╛nost potlaΦit chybovß hlß╣enφ pou╛itφm '@'.
M∙╛ete si v╣imnout, ╛e nßsledujφcφ p°φklady jsou funkΦn∞ toto╛nΘ:
reset ($arr); while (list(, $value) = each ($arr)) { echo "Hodnota: $value<br>\n"; } foreach ($arr as $value) { echo "Hodnota: $value<br>\n"; } |
reset ($arr); while (list($key, $value) = each ($arr)) { echo "KlφΦ: $key; Hodnota: $value<br>\n"; } foreach ($arr as $key => $value) { echo "KlφΦ: $key; Hodnota: $value<br>\n"; } |
Dal╣φ p°φklady demonstrujφcφ pou╛φtφ:
/* foreach p°φklad 1: pouze hodnota */ $a = array (1, 2, 3, 17); foreach ($a as $v) { print "SouΦasnß hodnota \$a: $v.\n"; } /* foreach p°φklad 2: hodnota (pro ilustraci je vypsßn i klφΦ) */ $a = array (1, 2, 3, 17); $i = 0; /* pouze pro ilustrativnφ ·Φely */ foreach($a as $v) { print "\$a[$i] => $v.\n"; $i++; } /* foreach p°φklad 3: klφΦ a hodnota */ $a = array ( "jedna" => 1, "dv∞" => 2, "t°i" => 3, "sedmnßct" => 17 ); foreach($a as $k => $v) { print "\$a[$k] => $v.\n"; } /* foreach p°φklad 4: vφcerozm∞rnß pole */ $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; $a[1][1] = "z"; foreach($a as $v1) { foreach ($v1 as $v2) { print "$v2\n"; } } /* foreach p°φklad 5: dynamickß pole */ foreach(array(1, 2, 3, 4, 5) as $v) { print "$v\n"; } |
break ukonΦuje provßd∞nφ aktußlnφho konstruktu for, foreach while, do..while nebo switch.
break akceptuje nepovinn² Φφseln² argument, kter² °φkß, z kolika vno°en²ch struktur se mß vyskoΦit.
$arr = array ('jedna', 'dv∞', 't°i', 'Φty°i', 'stop', 'p∞t'); while (list (, $val) = each ($arr)) { if ($val == 'stop') { break; /* Tady byste mohli napsat takΘ 'break 1;'. */ } echo "$val<br>\n"; } /* Pou╛itφ nepovinnΘho argumentu. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "P°i 5<br>\n"; break 1; /* UkonΦuje pouze switch. */ case 10: echo "P°i 10; konec<br>\n"; break 2; /* UkonΦuje switch a while. */ default: break; } } |
continue se pou╛φvß uvnit° cykl∙ k p°eskoΦenφ zbytku aktußlnφ iterace a bezprost°ednφmu p°echodu na nßsledujφcφ iteraci.
continue akceptuje nepovinn² Φφseln² argument, kter² °φkß, kolik ·rovnφ cykl∙ se mß narßz dokonΦit.
while (list ($key, $value) = each ($arr)) { if (!($key % 2)) { // p°eskoΦ sudΘ Φleny continue; } do_something_odd ($value); } $i = 0; while ($i++ < 5) { echo "Vn∞j╣φ<br>\n"; while (1) { echo " St°ednφ<br>\n"; while (1) { echo " Vnit°nφ<br>\n"; continue 3; } echo "Toto se nikdy nevytiskne.<br>\n"; } echo "Ani tohle se neprovßdφ.<br>\n"; } |
Konstrukt switch je podobnß sΘrii konstrukt∙ IF, testujφcφch tent²╛ v²raz. V mnoha p°φpadech m∙╛ete chtφt porovnßvat stejnou prom∞nnou (nebo v²raz) s mnoha r∙zn²mi hodnotami a provßd∞t r∙znΘ kusy k≤du v zßvislosti na tom, kterΘ hodnot∞ se rovnß. To je p°esn∞ to, k Φemu je switch.
Nßsledujφcφ dva p°φklady p°edstavujφ dva odli╣nΘ zp∙soby, jak napsat totΘ╛; jeden pou╛φvß sΘrii podmφnek if, zatφmco druh² je zalo╛en na konstruktu switch:
if ($i == 0) { print "i se rovnß 0"; } if ($i == 1) { print "i se rovnß 1"; } if ($i == 2) { print "i se rovnß 2"; } switch ($i) { case 0: print "i se rovnß 0"; break; case 1: print "i se rovnß 1"; break; case 2: print "i se rovnß 2"; break; } |
Je d∙le╛itΘ pochopit, jak se konstrukt switch provßdφ, aby se zabrßnilo chybßm. Konstrukt switch provßdφ °ßdek po °ßdku (resp. konstrukt po konstruktu). Na zaΦßtku nenφ proveden ╛ßdn² k≤d. Pouze tehdy, kdy╛ se najde case s hodnotou odpovφdajφcφ hodnot∞ v²razu u switch, zaΦne PHP provßd∞t nßsledujφcφ konstrukty. Vykonßvßnφ k≤du pokraΦuje, dokud se nedosßhne konce bloku switch nebo prvnφho p°φkazu break. Pokud nenapφ╣ete na konec bloku po case p°φkaz break, bude PHP pokraΦovat v provßd∞nφ dal╣φch konstrukt∙ (po dal╣φm case). Nap°φklad:
switch ($i) { case 0: print "i se rovnß 0"; case 1: print "i se rovnß 1"; case 2: print "i se rovnß 2"; } |
Zde, pokud se $i rovnß 0, se budou provßd∞t v╣echny p°φkazy "print"! Pokud se $i rovnß 1, PHP provede poslednφ dva p°φkazy, a pouze rovnß-li se $i Φφslu 2, obdr╛φte "oΦekßvanΘ" chovßnφ a zobrazφ se pouze "i se rovnß 2". Tak╛e je d∙le╛itΘ nezapomenout na p°φkaz break (krom∞ p°φpadu, kdy ho chcete vynechat zßm∞rn∞ k dosa╛enφ urΦitΘho cφle).
V konstruktu switch se podmφnka testuje pouze jednou a v²sledek se porovnßvß s ka╛dou hodnotou v case. V p°φpad∞ elseif se podmφnka poka╛dΘ testuje znovu. Pokud je va╣e podmφnka komplikovan∞j╣φ ne╛ jednoduchΘ porovnßnφ a/nebo je uvnit° cyklu, switch m∙╛e b²t rychlej╣φ.
Seznam konstrukt∙ za case m∙╛e b²t takΘ prßzdn², co╛ jednodu╣e p°edß °φzenφ nßsledujφcφmu case.
switch ($i) { case 0: case 1: case 2: print "i je men╣φ ne╛ 3, ale nezßpornΘ"; break; case 3: print "i je 3"; } |
Specißlnφ case je "default". Vyhovuje v╣em ostatnφm hodnotßm, kterΘ nejsou pokryty n∞kter²m z ostatnφch case a mß b²t v╛dy jako poslednφ. Nap°φklad:
switch ($i) { case 0: print "i se rovnß 0"; break; case 1: print "i se rovnß 1"; break; case 2: print "i se rovnß 2"; break; default: print "i se nerovnß 0, 1 ani 2"; } |
V²raz v case m∙╛e b²t libovoln² v²raz, jeho╛ hodnota je jednoduchΘho typu, tj. celΘ nebo reßlnΘ Φφslo nebo °et∞zec. Pole ani objekty nelze pou╛φt, leda╛e by odkazovaly na jednoduch² typ.
Alternativnφ syntaxe pro konstrukty switch je podporovßna. Pro vφc informacφ viz Alternativnφ syntaxe °φdicφch struktur .
Konstrukt declare se pou╛φvß k nastavenφ provßd∞cφch direktiv pro blok k≤du. Syntaxe declare je podobnß syntaxi ostatnφcj konstrukt∙ pro °φzenφ toku:
╚ßst directive umo╛≥uje nastavit chovßnφ bloku, kter² mß b²t ovlivn∞n pomocφ declare. V souΦasnosti je rozpoznßvßna pouze jedinß direktiva: ticks. (Pro vφce informacφ viz nφ╛e - direktiva ticks)
╚ßst statement bloku declare bude provedena - jak bude provedena a jakΘ vedlej╣φ efekty nastanou b∞hem provßd∞nφ m∙╛e zßle╛et na direktiv∞ nastavenΘ v bloku directive.
Tick je udßlost, kterß nastane pro ka╛d²ch N nφzko·rov≥ov²ch konstrukt∙ proveden²ch parserem uvnit° bloku declare. Hodnota N je specifikovßna pomocφ ticks=N uvnit° sekce directive bloku declare.
Udßlost(i), kterß nastane p°i ka╛dΘm ticku, se specifikuje pomocφ register_tick_function(). Vφce podrobnostφ - viz p°φklad nφ╛e. Uv∞domte si, ╛e na ka╛d² tick m∙╛e nastat vφce ne╛ jedna udßlost.
P°φklad 11-1. Profile a section of PHP code
|
Ticks are well suited for debugging, implementing simple multitasking, backgrounded I/O and many other tasks.
See also register_tick_function() and unregister_tick_function().
Zavolßn uvnit° funkce, konstrukt return() okam╛it∞ ukonΦφ provßd∞nφ tΘto funkce a vracφ sv∙j argument jako hodnotu volßnφ funkce. return() takΘ obdobn∞ ukonΦφ provßd∞nφ konstruktu eval() nebo celΘho skriptu.
Pokud se volß z globßlnφho kontextu, provßd∞nφ skriptu se ukonΦφ. Byl-li aktußlnφ skript vlo╛en pomocφ include() nebo require(), p°edß se °φzenφ volajφcφmu souboru. Navφc, bylo-li pou╛ito include(), bude hodnota specifikovanß v return() vrßcena jako hodnota volßnφ include(). Pokud se return() zavolß z hlavnφho souboru skriptu, provßd∞nφ skonΦφ. Kdy╛ se jednß o soubor specifikovan² pomocφ konfiguraΦnφch voleb auto_prepend_file nebo auto_append_file v konfiguraΦnφm souboru, zpracovßnφ souboru konΦφ.
Vφce informacφ - viz NßvratovΘ hodnoty.
Poznßmka: Uv∞domte si, ╛e return() je jazykov² konstrukt, a nikoli funkce -- uzav°enφ argument∙ do zßvorek nenφ nutnΘ. Obvykle se vynechßvajφ, ale nezßle╛φ na tom, zda se pou╛ijφ Φi nikoli.
Konstrukt require() vlo╛φ a ohodnotφ specifikovan² soubor.
require() vlo╛φ a ohodnotφ specifikovan² soubor. PodrobnΘ informace o tom, jak vklßdßnφ pracuje, jsou popsßny v dokumentaci o include().
require() a include() jsou toto╛nΘ, krom∞ toho, jak zpracovßvajφ chyby. include() vyprodukuje Warning (varovßnφ), zatφmco require() skonΦφ s chybou typu Fatal Error (velmi vß╛nß chyba). Jinak °eΦeno, nerozpakujte se pou╛φt require(), pokud chcete, aby nep°φtomnost souboru zastavila zpracovßnφ strßnky. include() se takto nechovß, skript bude neru╣en∞ pokraΦovat. Ujist∞te se takΘ, ╛e mßte v po°ßdku nastavenφ include_path.
P°φklad 11-2. Zßkladnφ p°φklady pou╛itφ require()
|
Dal╣φ p°φklady -- viz dokumentace include().
Poznßmka: U verzφ p°ed PHP 4.0.2 platφ toto: require() se v╛dy pokusφ p°eΦφst p°φslu╣n² soubor, krom∞ p°φpadu, ╛e se °ßdek s tφmto p°φkazem nem∙╛e nikdy provΘst. Podmφn∞n² v²raz require() neovliv≥uje. Av╣ak pokud se °ßdek, na kterΘm require() le╛φ, v∙bec neprovßdφ, nebude se provßd∞t ani k≤d v p°φslu╣nΘm souboru. Podobn∞ je tomu i v p°φpad∞ cykl∙ -- ani ty neovliv≥ujφ chovßnφ require(). P°esto╛e k≤d obsa╛en² ve vklßdanΘm souboru je stßle p°edm∞tem opakovßnφ, samotnΘ require() se provede pouze jednou.
Viz takΘ include(), require_once(), include_once(), eval(), file(), readfile(), virtual() a include_path.
Konstrukt include() vlo╛φ a ohodnotφ specifikovan² soubor.
Nφ╛e popsanΘ platφ i pro require(). Tyto dva konstrukty jsou zcela toto╛nΘ, krom∞ toho, jak zpracovßvajφ chyby. include() produkuje Warning (varovßnφ), zatφmco require() skonΦφ s chybou typu Fatal Error. Jin²mi slovy, require() pou╛ijte tehdy, chcete-li, aby se p°i chyb∞jφcφm souboru zastavilo zpracovßvßnφ. include() se tak nechovß, skript bude neru╣en∞ pokraΦovat. Ujist∞te se takΘ, ╛e mßte v po°ßdku nastavenφ include_path.
Pokud se vlo╛φ soubor, potom k≤d v n∞m obsa╛en² d∞dφ kontext prom∞nnΘ °ßdku, kde byl vlo╛en. V╣echny prom∞nnΘ dostupnΘ na tomto °ßdku volajφcφho souboru budou (od tΘto chvφle) dostupnΘ i ve volanΘm souboru.
P°φklad 11-3. Zßkladnφ p°φklad -- include()
|
Pokud ke vlo╛enφ dojde uvnit° funkce ve volajφcφm souboru, potom se v╣echen k≤d obsa╛en² ve volanΘm souboru bude chovat, jako by byl definovßn uvnit° tΘto funkce -- tedy v rßmci kontextu prom∞nn²ch funkce.
P°φklad 11-4. Vklßdßnφ uvnit° funkcφ
|
P°i vklßdßnφ souboru p°ejde parsing na zaΦßtku souboru z PHP re╛imu do m≤du HTML a na jeho konci se vracφ zp∞t do m≤du PHP. Z tohoho d∙vodu musφ b²t provßd∞n² PHP k≤d ve vklßdanΘm souboru uzav°en mezi platnou poΦßteΦnφ a koncovou PHP znaΦku.
Pokud jsou v PHP povoleny "URL fopen wrappery" (co╛ tak implicitn∞ je), m∙╛ete specifikovat soubor ke vlo╛enφ pomocφ URL (p°es HTTP) namφsto lokßlnφho umφst∞nφ. Pokud p°φsku╣n² server interpretuje po╛adovan² soubor jako PHP k≤d, prom∞nnΘ mohou b²t odkazovßny pomocφ °et∞zce URL po╛adavku jako u HTTP GET. Nenφ to ·pln∞ totΘ╛ jako vlo╛enφ souboru s d∞d∞nφm kontextu prom∞nn²ch od rodiΦovskΘho souboru; skript b∞╛φ na vzdßlenΘm serveru a v²sledek se potom vlo╛φ do lokßlnφho skriptu.
P°φklad 11-5. include() p°es HTTP
|
Proto╛e include() a require() jsou specißlnφ jazykovΘ konstrukty, pokud se provßd∞jφ podmφn∞n∞, musφte je uzav°φt do bloku.
Obsluha nßvrat∙: Uvnit° vklßdanΘho souboru lze provΘst konstrukt return() k ukonΦenφ provßd∞nφ souboru a nßvrat do volajφcφho skriptu. Je tedy mo╛nΘ z vlo╛en²ch soubor∙ vracet hodnoty. M∙╛ete vzφt hodnotu volßnφ include, jako by to byla normßlnφ funkce.
Poznßmka: V PHP 3 se return nesmφ objevit uvnit° bloku, pokud to nenφ funkΦnφ blok; tehdy v╣ak se v╣ak return() t²kß tΘto funkce a ne celΘho souboru.
$bar mß hodnotu 1, proto╛e p°φkaz include byl ·sp∞╣n². V╣imn∞te si rozdφlu mezi v²╣e uveden²mi p°φklady. Prvnφ pou╛φvß ve vklßdanΘm souboru return(), druh² nikoli. Dal╣φmi zp∙soby, jak p°i°adit hodnotu souboru do prom∞nnΘ, jsou funkce fopen(), file() a pou╛itφ include() spoleΦn∞ s funkcemi °φzenφ v²stupu.
Viz takΘ require(), require_once(), include_once(), readfile(), virtual(), a include_path.
Konstrukt require_once() vlo╛φ a ohodnotφ specifikovan² soubor b∞hem provßd∞nφ skriptu. Chovß se tedy podobn∞ jako require(), s tφm rozdφlem, ╛e pokud u╛ byl k≤d ze souboru d°φve vlo╛en do skriptu, nebude znovu vklßdßn. Vφce informacφ o chovßnφ p°φkazu -- viz p°φkaz require().
P°φkaz require_once() by se m∞l pou╛φvat v p°φpadech, kde by mohl b²t b∞hem provßd∞nφ skriptu tent²╛ soubor vlo╛en a ohodnocen vφckrßt, a p°itom chcete zajistit prßv∞ jedno vlo╛enφ (je t°eba se vyhnout redefinicφm funkcφ, novΘmu p°i°azenφ hodnot atd.).
P°φklady na pou╛itφ require_once() a include_once() najdete v k≤du PEAR p°ilo╛enΘm v nejnov∞j╣φch distribucφch zdrojov²ch k≤d∙ PHP.
Poznßmka: P°φkaz require_once() byl p°idßn v PHP 4.0.1pl2.
Viz takΘ: require(), include(), include_once(), get_required_files(), get_included_files(), readfile(), a virtual().
Konstrukt include_once() vlo╛φ a ohodnotφ specifikovan² soubor b∞hem provßd∞nφ skriptu. Chovß se tedy podobn∞ jako include() , s tφm rozdφlem, ╛e pokud u╛ byl k≤d ze souboru d°φve vlo╛en do skriptu, nebude znovu vklßdßn. Jak nßzev napovφdß, bude vlo╛en prßv∞ jednou.
P°φkaz include_once() by se m∞l pou╛φvat v p°φpadech, kde by mohl b²t b∞hem provßd∞nφ skriptu tent²╛ soubor vlo╛en a ohodnocen vφckrßt, a p°itom chcete zajistit prßv∞ jedno vlo╛enφ (je t°eba se vyhnout redefinicφm funkcφ, novΘmu p°i°azenφ hodnot atd.).
P°φklady na pou╛itφ require_once() and include_once() najdete v k≤du PEAR p°ilo╛enΘm v nejnov∞j╣φch distribucφch zdrojov²ch k≤d∙ PHP.
Poznßmka: P°φkaz include_once() byl p°idßn v PHP 4.0.1pl2.
Viz takΘ include(), require(), require_once(), get_required_files(), get_included_files(), readfile(), a virtual().
Funkce m∙╛e b²t definovßna pomocφ syntaxe podobnΘ tΘto:
Do funkce m∙╛e b²t vlo╛en jak²koli platn² PHP k≤d, dokonce i definice jin²ch funkcφ a t°φd.
V PHP 3 musφ b²t funkce definovßny d°φve, ne╛ je na n∞ odkazovßno. V PHP u╛ tento po╛adavek neplatφ.
PHP nepodporuje p°et∞╛ovßnφ funkcφ, nenφ mo╛nΘ ani oddefinovßnφ nebo p°edefinovanß d°φve deklarovan²ch funkcφ.
PHP 3 nepodporuje prom∞nn² poΦet argument∙ funkcφ, zatφmco implicitnφ argumenty jsou podporovßny (vφce informacφ - viz Implicitnφ hodnoty argument∙). PHP 4 podporuje obojφ: vφce informacφ - viz Seznam argument∙ prom∞nnΘ dΘlky a reference funkcφ func_num_args(), func_get_arg(), a func_get_args().
Informace mohou b²t do funkcφ p°edßvßny p°es seznam argument∙, co╛ je seznam prom∞nn²ch a/nebo konstant odd∞len²ch Φßrkou.
PHP podporuje p°edßvßnφ argument∙ hodnotou (implicitnφ), p°edßvßnφ odkazem, a implicitnφ hodnoty argument∙. Prom∞nnß dΘlka seznamu argument∙ je podporovßna pouze v PHP 4 a pozd∞j╣φch; viz Seznam argument∙ prom∞nnΘ dΘlky a reference funkcφ func_num_args(), func_get_arg(), a func_get_args(). Podobn² efekt m∙╛e b²t v PHP 3 dosa╛en p°edßnφm pole argument∙ do funkce:
Implicitn∞ jsou argumenty funkcφ p°edßvßny hodnotou (tak╛e kdy╛ zm∞nφte hodnotu argumentu ve funkci, nezm∞nφ se mimo funkci). Pokud chcete umo╛nit funkci modifikovat svΘ argumenty, musφte je p°edßvat odkazem.
Pokud chcete, aby byl argument do funkce p°edßvßn v╛dy odkazem, m∙╛ete p°ed nßzev argumentu v definici funkce p°ed°adit ampersand (&):
Funkce m∙╛e ve stylu C++ definovat implicitnφ hodnoty pro skalßrnφ argumenty takto:
function makecoffee ($type = "cappucina") { return "D∞lßm ╣ßlek $type.\n"; } echo makecoffee (); echo makecoffee ("espressa"); |
V²stupem v²╣e uvedenΘho k≤du je:
D∞lßm ╣ßlek cappucina. D∞lßm ╣ßlek espressa. |
Implicitnφ hodnota musφ b²t konstantnφ v²raz, ne (nap°φklad) prom∞nnß nebo polo╛ka t°φdy.
Uv∞domte si, ╛e kdy╛ pou╛φvßte implicitnφ argumenty, jakΘkoli implicitnφ hodnoty by m∞ly b²t na pravΘ stan∞ neimplicitnφho argumentu; jinak to nebude pracovat podle oΦekßvßnφ. Uva╛ujme tento kus k≤du:
function makeyogurt ($type = "acidophilus", $flavour) { return "D∞lßm kelφmek jogurtu $type $flavour.\n"; } echo makeyogurt ("malina"); // nebude pracovat podle oΦekßvßnφ |
V²stupem uvedenΘho p°φkladu bude:
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 D∞lßm kelφmek jogurtu malina. |
A nynφ to porovnejme s tφmto:
function makeyogurt ($flavour, $type = "acidophilus") { return "D∞lßm kelφmek jogurtu $type $flavour.\n"; } echo makeyogurt ("malina"); // pracuje podle oΦekßvßnφ |
P°φklad vytiskne:
D∞lßm kelφmek jogurtu acidophilus malina. |
PHP 4 mß podporu pro seznam argument∙ prom∞nnΘ dΘlky v u╛ivatelsk²ch funkcφch. Je to opravdu jednoduchΘ, pou╛itφm funkcφ func_num_args(), func_get_arg(), a func_get_args().
Nenφ t°eba ╛ßdnß zvlß╣tnφ syntaxe, seznam argument∙ m∙╛e b²t stßle explicitn∞ poskytovßn definicemi funkcφ a bude se chovat jako normßln∞.
Hodnoty jsou vraceny pomocφ nepovinnΘ klausule return. M∙╛e b²t vracen libovoln² typ, vΦetn∞ seznam∙ a objekt∙. Klasule zp∙sobuje, ╛e funkce okam╛it∞ ukonΦφ sv∙j b∞h a p°edß °φzenφ zp∞t na °ßdek, odkud byla volßna. Pro vφce informacφ viz return().
Z funkce nem∙╛ete vracet vφce hodnot, ale podobnΘho v²sledku m∙╛e b²t dosa╛eno vrßcenφm seznamu.
K vrßcenφ odkazu z funkce musφte pou╛φt referenΦnφ operßtor & jak v deklaraci funkce, tak p°i p°i°azovßnφ vrßcenΘ hodnoty do prom∞nnΘ:
Pro dal╣φ informace o odkazech se laskav∞ podφvejte na Vysv∞tlenφ odkaz∙.
Klausule old_function umo╛≥uje deklarovat funkci s identickou syntaxφ jako v PHP/FI2 (krom∞ toho, ╛e musφte 'function' nahradit 'old_function'.
Toto je zavr╛enß mo╛nost a m∞la by b²t pou╛φvßna pouze PHP/FI2->PHP 3 konvertorem.
Varovßnφ |
Funkce deklarovanΘ jako old_function nelze volat z internφho k≤du PHP. To mj. znamenß, ╛e je nem∙╛ete pou╛φvat ve funkcφch jako usort(), array_walk(), a register_shutdown_function(). Toto omezenφ m∙╛ete obejφt napsßnφm wrapperu (v normßlnφ PHP 3 form∞), z n∞ho╛ volßte old_function. |
PHP podporuje koncept funkcφ v prom∞nn²ch. To znamenß, ╛e kdy╛ mß nßzev prom∞nnΘ p°ipojeny zßvorky, PHP bude hledat funkci se stejn²m nßzvem, jako mß hodnota prom∞nnΘ, a pokusφ se ji provΘst. To lze mj. pou╛φt k implementacφ zp∞tn²ch volßnφ, tabulek funkcφ atd.
Funkce v prom∞nn²ch nebudou fungovat s jazykov²mi konstrukty jin²mi ne╛ print(), jako je echo(), unset(), isset() a empty(). To je jeden z velk²ch rozdφl∙ mezi funkcemi PHP a jazykov²mi konstrukty.
A class is a collection of variables and functions working with these variables. A class is defined using the following syntax:
<?php class Cart { var $items; // Items in our shopping cart // Add $num articles of $artnr to the cart function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // Take $num articles of $artnr out of the cart function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> |
This defines a class named Cart that consists of an associative array of articles in the cart and two functions to add and remove items from this cart.
Varovßnφ |
You can NOT break up a class definition into multiple files, or multiple PHP blocks. The following will not work:
|
The following cautionary notes are valid for PHP 4.
V²straha |
The name stdClass is used interally by Zend and is reserved. You cannot have a class named stdClass in PHP. |
V²straha |
The function names __sleep and __wakeup are magical in PHP classes. You cannot have functions with these names in any of your classes unless you want the magic functionality associated with them. See below for more information. |
V²straha |
PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality. |
In PHP 4, only constant initializers for var variables are allowed. To initialize variables with non-constant values, you need an initialization function which is called automatically when an object is being constructed from the class. Such a function is called a constructor (see below).
<?php class Cart { /* None of these will work in PHP 4. */ var $todays_date = date("Y-m-d"); var $name = $firstname; var $owner = 'Fred ' . 'Jones'; /* Arrays containing constant values will, though. */ var $items = array("VCR", "TV"); } /* This is how it should be done. */ class Cart { var $todays_date; var $name; var $owner; var $items = array("VCR", "TV"); function Cart() { $this->todays_date = date("Y-m-d"); $this->name = $GLOBALS['firstname']; /* etc. . . */ } } ?> |
Classes are types, that is, they are blueprints for actual variables. You have to create a variable of the desired type with the new operator.
<?php $cart = new Cart; $cart->add_item("10", 1); $another_cart = new Cart; $another_cart->add_item("0815", 3); ?> |
This creates the objects $cart and $another_cart, both of the class Cart. The function add_item() of the $cart object is being called to add 1 item of article number 10 to the $cart. 3 items of article number 0815 are being added to $another_cart.
Both, $cart and $another_cart, have functions add_item(), remove_item() and a variable items. These are distinct functions and variables. You can think of the objects as something similar to directories in a filesystem. In a filesystem you can have two different files README.TXT, as long as they are in different directories. Just like with directories where you'll have to type the full pathname in order to reach each file from the toplevel directory, you have to specify the complete name of the function you want to call: In PHP terms, the toplevel directory would be the global namespace, and the pathname separator would be ->. Thus, the names $cart->items and $another_cart->items name two different variables. Note that the variable is named $cart->items, not $cart->$items, that is, a variable name in PHP has only a single dollar sign.
<?php // correct, single $ $cart->items = array("10" => 1); // invalid, because $cart->$items becomes $cart->"" $cart->$items = array("10" => 1); // correct, but may or may not be what was intended: // $cart->$myvar becomes $cart->items $myvar = 'items'; $cart->$myvar = array("10" => 1); ?> |
Within a class definition, you do not know under which name the object will be accessible in your program: at the time the Cart class was written, it was unknown that the object will be named $cart or $another_cart later. Thus, you cannot write $cart->items within the Cart class itself. Instead, in order to be able to access it's own functions and variables from within a class, one can use the pseudo-variable $this which can be read as 'my own' or 'current object'. Thus, '$this->items[$artnr] += $num' can be read as 'add $num to the $artnr counter of my own items array' or 'add $num to the $artnr counter of the items array within the current object'.
Poznßmka: There are some nice functions to handle classes and objects. You might want to take a look at the Class/Object Functions
Often you need classes with similar variables and functions to another existing class. In fact, it is good practice to define a generic class which can be used in all your projects and adapt this class for the needs of each of your specific projects. To facilitate this, classes can be extensions of other classes. The extended or derived class has all variables and functions of the base class (this is called 'inheritance' despite the fact that nobody died) and what you add in the extended definition. It is not possible to substract from a class, that is, to undefine any existing functions or variables. An extended class is always dependent on a single base class, that is, multiple inheritance is not supported. Classes are extended using the keyword 'extends'.
<?php class Named_Cart extends Cart { var $owner; function set_owner ($name) { $this->owner = $name; } } ?> |
This defines a class Named_Cart that has all variables and functions of Cart plus an additional variable $owner and an additional function set_owner(). You create a named cart the usual way and can now set and get the carts owner. You can still use normal cart functions on named carts:
<?php $ncart = new Named_Cart; // Create a named cart $ncart->set_owner("kris"); // Name that cart print $ncart->owner; // print the cart owners name $ncart->add_item("10", 1); // (inherited functionality from cart) ?> |
This is also called a "parent-child" relationship. You create a class, parent, and use extends to create a new class based on the parent class: the child class. You can even use this new child class and create another class based on this child class.
Poznßmka: Classes must be defined before they are used! If you want the class Named_Cart to extend the class Cart, you will have to define the class Cart first. If you want to create another class called Yellow_named_cart based on the class Named_Cart you have to define Named_Cart first. To make it short: the order in which the classes are defined is important.
V²straha |
In PHP 3 and PHP 4 constructors behave differently. The PHP 4 semantics are strongly preferred. |
Constructors are functions in a class that are automatically called when you create a new instance of a class with new. In PHP 3, a function becomes a constructor when it has the same name as the class. In PHP 4, a function becomes a constructor, when it has the same name as the class it is defined in - the difference is subtle, but crucial (see below).
<?php // Works in PHP 3 and PHP 4. class Auto_Cart extends Cart { function Auto_Cart() { $this->add_item ("10", 1); } } ?> |
This defines a class Auto_Cart that is a Cart plus a constructor which initializes the cart with one item of article number "10" each time a new Auto_Cart is being made with "new". Constructors can take arguments and these arguments can be optional, which makes them much more useful. To be able to still use the class without parameters, all parameters to constructors should be made optional by providing default values.
<?php // Works in PHP 3 and PHP 4. class Constructor_Cart extends Cart { function Constructor_Cart($item = "10", $num = 1) { $this->add_item ($item, $num); } } // Shop the same old boring stuff. $default_cart = new Constructor_Cart; // Shop for real... $different_cart = new Constructor_Cart("20", 17); ?> |
You also can use the @ operator to mute errors occurring in the constructor, e.g. @new.
V²straha |
In PHP 3, derived classes and constructors have a number of limitations. The following examples should be read carefully to understand these limitations. |
<?php class A { function A() { echo "I am the constructor of A.<br>\n"; } } class B extends A { function C() { echo "I am a regular function.<br>\n"; } } // no constructor is being called in PHP 3. $b = new B; ?> |
In PHP 3, no constructor is being called in the above example. The rule in PHP 3 is: 'A constructor is a function of the same name as the class.'. The name of the class is B, and there is no function called B() in class B. Nothing happens.
This is fixed in PHP 4 by introducing another rule: If a class has no constructor, the constructor of the base class is being called, if it exists. The above example would have printed 'I am the constructor of A.<br>' in PHP 4.
<?php class A { function A() { echo "I am the constructor of A.<br>\n"; } function B() { echo "I am a regular function named B in class A.<br>\n"; echo "I am not a constructor in A.<br>\n"; } } class B extends A { function C() { echo "I am a regular function.<br>\n"; } } // This will call B() as a constructor. $b = new B; ?> |
In PHP 3, the function B() in class A will suddenly become a constructor in class B, although it was never intended to be. The rule in PHP 3 is: 'A constructor is a function of the same name as the class.'. PHP 3 does not care if the function is being defined in class B, or if it has been inherited.
This is fixed in PHP 4 by modifying the rule to: 'A constructor is a function of the same name as the class it is being defined in.'. Thus in PHP 4, the class B would have no constructor function of its own and the constructor of the base class would have been called, printing 'I am the constructor of A.<br>'.
V²straha |
Neither PHP 3 nor PHP 4 call constructors of the base class automatically from a constructor of a derived class. It is your responsibility to propagate the call to constructors upstream where appropriate. |
Poznßmka: There are no destructors in PHP 3 or PHP 4. You may use register_shutdown_function() instead to simulate most effects of destructors.
Destructors are functions that are called automatically when an object is destroyed, either with unset() or by simply going out of scope. There are no destructors in PHP.
V²straha |
The following is valid for PHP 4 and later only. |
Sometimes it is useful to refer to functions and variables in base classes or to refer to functions in classes that have not yet any instances. The :: operator is being used for this.
<?php class A { function example() { echo "I am the original function A::example().<br>\n"; } } class B extends A { function example() { echo "I am the redefined function B::example().<br>\n"; A::example(); } } // there is no object of class A. // this will print // I am the original function A::example().<br> A::example(); // create an object of class B. $b = new B; // this will print // I am the redefined function B::example().<br> // I am the original function A::example().<br> $b->example(); ?> |
The above example calls the function example() in class A, but there is no object of class A, so that we cannot write $a->example() or similar. Instead we call example() as a 'class function', that is, as a function of the class itself, not any object of that class.
There are class functions, but there are no class variables. In fact, there is no object at all at the time of the call. Thus, a class function may not use any object variables (but it can use local and global variables), and it may no use $this at all.
In the above example, class B redefines the function example(). The original definition in class A is shadowed and no longer available, unless you are referring specifically to the implementation of example() in class A using the ::-operator. Write A::example() to do this (in fact, you should be writing parent::example(), as shown in the next section).
In this context, there is a current object and it may have object variables. Thus, when used from WITHIN an object function, you may use $this and object variables.
You may find yourself writing code that refers to variables and functions in base classes. This is particularly true if your derived class is a refinement or specialisation of code in your base class.
Instead of using the literal name of the base class in your code, you should be using the special name parent, which refers to the name of your base class as given in the extends declaration of your class. By doing this, you avoid using the name of your base class in more than one place. Should your inheritance tree change during implementation, the change is easily made by simply changing the extends declaration of your class.
<?php class A { function example() { echo "I am A::example() and provide basic functionality.<br>\n"; } } class B extends A { function example() { echo "I am B::example() and provide additional functionality.<br>\n"; parent::example(); } } $b = new B; // This will call B::example(), which will in turn call A::example(). $b->example(); ?> |
Poznßmka: In PHP 3, objects will lose their class association throughout the process of serialization and unserialization. The resulting variable is of type object, but has no class and no methods, thus it is pretty useless (it has become just like an array with a funny syntax).
V²straha |
The following information is valid for PHP 4 only. |
serialize() returns a string containing a byte-stream representation of any value that can be stored in PHP. unserialize() can use this string to recreate the original variable values. Using serialize to save an object will save all variables in an object. The functions in an object will not be saved, only the name of the class.
In order to be able to unserialize() an object, the class of that object needs to be defined. That is, if you have an object $a of class A on page1.php and serialize this, you'll get a string that refers to class A and contains all values of variabled contained in $a. If you want to be able to unserialize this on page2.php, recreating $a of class A, the definition of class A must be present in page2.php. This can be done for example by storing the class definition of class A in an include file and including this file in both page1.php and page2.php.
<?php // classa.inc: class A { var $one = 1; function show_one() { echo $this->one; } } // page1.php: include("classa.inc"); $a = new A; $s = serialize($a); // store $s somewhere where page2.php can find it. $fp = fopen("store", "w"); fputs($fp, $s); fclose($fp); // page2.php: // this is needed for the unserialize to work properly. include("classa.inc"); $s = implode("", @file("store")); $a = unserialize($s); // now use the function show_one() of the $a object. $a->show_one(); ?> |
If you are using sessions and use session_register() to register objects, these objects are serialized automatically at the end of each PHP page, and are unserialized automatically on each of the following pages. This basically means that these objects can show up on any of your pages once they become part of your session.
It is strongly recommended that you include the class definitions of all such registered objects on all of your pages, even if you do not actually use these classes on all of your pages. If you don't and an object is being unserialized without its class definition being present, it will lose its class association and become an object of class stdClass without any functions available at all, that is, it will become quite useless.
So if in the example above $a became part of a session by running session_register("a"), you should include the file classa.inc on all of your pages, not only page1.php and page2.php.
serialize() checks if your class has a function with the magic name __sleep. If so, that function is being run prior to any serialization. It can clean up the object and is supposed to return an array with the names of all variables of that object that should be serialized.
The intended use of __sleep is to close any database connections that object may have, committing pending data or perform similar cleanup tasks. Also, the function is useful if you have very large objects which need not be saved completely.
Conversely, unserialize() checks for the presence of a function with the magic name __wakeup. If present, this function can reconstruct any resources that object may have.
The intended use of __wakeup is to reestablish any database connections that may have been lost during serialization and perform other reinitialization tasks.
Creating references within the constructor can lead to confusing results. This tutorial-like section helps you to avoid problems.
<?php class Foo { function Foo($name) { // create a reference inside the global array $globalref global $globalref; $globalref[] = &$this; // set name to passed value $this->setName($name); // and put it out $this->echoName(); } function echoName() { echo "<br>",$this->name; } function setName($name) { $this->name = $name; } } ?> |
Let us check out if there is a difference between $bar1 which has been created using the copy = operator and $bar2 which has been created using the reference =& operator...
<?php $bar1 = new Foo('set in constructor'); $bar1->echoName(); $globalref[0]->echoName(); /* output: set in constructor set in constructor set in constructor */ $bar2 =& new Foo('set in constructor'); $bar2->echoName(); $globalref[1]->echoName(); /* output: set in constructor set in constructor set in constructor */ ?> |
Apparently there is no difference, but in fact there is a very significant one: $bar1 and $globalref[0] are _NOT_ referenced, they are NOT the same variable. This is because "new" does not return a reference by default, instead it returns a copy.
Poznßmka: There is no performance loss (since PHP 4 and up use reference counting) returning copies instead of references. On the contrary it is most often better to simply work with copies instead of references, because creating references takes some time where creating copies virtually takes no time (unless none of them is a large array or object and one of them gets changed and the other(s) one(s) subsequently, then it would be wise to use references to change them all concurrently).
<?php // now we will change the name. what do you expect? // you could expect that both $bar1 and $globalref[0] change their names... $bar1->setName('set from outside'); // as mentioned before this is not the case. $bar1->echoName(); $globalref[0]->echoName(); /* output: set from outside set in constructor */ // let us see what is different with $bar2 and $globalref[1] $bar2->setName('set from outside'); // luckily they are not only equal, they are the same variable // thus $bar2->name and $globalref[1]->name are the same too $bar2->echoName(); $globalref[1]->echoName(); /* output: set from outside set from outside */ ?> |
Another final example, try to understand it.
<?php class A { function A($i) { $this->value = $i; // try to figure out why we do not need a reference here $this->b = new B($this); } function createRef() { $this->c = new B($this); } function echoValue() { echo "<br>","class ",get_class($this),': ',$this->value; } } class B { function B(&$a) { $this->a = &$a; } function echoValue() { echo "<br>","class ",get_class($this),': ',$this->a->value; } } // try to understand why using a simple copy here would yield // in an undesired result in the *-marked line $a =& new A(10); $a->createRef(); $a->echoValue(); $a->b->echoValue(); $a->c->echoValue(); $a->value = 11; $a->echoValue(); $a->b->echoValue(); // * $a->c->echoValue(); /* output: class A: 10 class B: 10 class B: 10 class A: 11 class B: 11 class B: 11 */ ?> |
In PHP 4, objects are compared in a very simple manner, namely: Two object instances are equal if they have the same attributes and values, and are instances of the same class. Similar rules are applied when comparing two objects using the identity operator (===).
If we were to execute the code in the example below:
P°φklad 13-1. Example of object comparison in PHP 4
|
Compare instances created with the same parameters o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : TRUE o1 !== o2 : FALSE Compare instances created with different parameters o1 == o2 : FALSE o1 != o2 : TRUE o1 === o2 : FALSE o1 !== o2 : TRUE Compare an instance of a parent class with one from a subclass o1 == o2 : FALSE o1 != o2 : TRUE o1 === o2 : FALSE o1 !== o2 : TRUE |
Even in the cases where we have object composition, the same comparison rules apply. In the example below we create a container class that stores an associative array of Flag objects.
P°φklad 13-2. Compound object comparisons in PHP 4
|
Composite objects u(o,p) and v(q,p) o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : TRUE o1 !== o2 : FALSE u(o,p) and w(q) o1 == o2 : FALSE o1 != o2 : TRUE o1 === o2 : FALSE o1 !== o2 : TRUE |
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
In PHP 5, object comparison is a more complicated than in PHP 4 and more in accordance to what one will expect from an Object Oriented Language (not that PHP 5 is such a language).
When using the comparison operator (==), object variables are compared in a simple manner, namely: Two object instances are equal if they have the same attributes and values, and are instances of the same class.
On the other hand, when using the identity operator (===), object variables are identical if and only if they refer to the same instance of the same class.
An example will clarify these rules.
P°φklad 13-3. Example of object comparison in PHP 5
|
Two instances of the same class o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : FALSE o1 !== o2 : TRUE Two references to the same instance o1 == o2 : TRUE o1 != o2 : FALSE o1 === o2 : TRUE o1 !== o2 : FALSE Instances of two different classes o1 == o2 : FALSE o1 != o2 : TRUE o1 === o2 : FALSE o1 !== o2 : TRUE |
Reference (odkazy) jsou prost°edek, jak v PHP p°istupovat k tΘmu╛ obsahu prom∞nnΘ pod r∙zn²mi jmΘny. Nejsou to ukazatele (pointery) jako v C, jsou to aliasy v tabulce symbol∙. Uv∞domte si, ╛e v PHP je rozdφl mezi nßzvem prom∞nnΘ a jejφm obsahem, tak╛e stejn² obsah m∙╛e mφt r∙znΘ nßzvy. Nejbli╛╣φ analogiφ jsou nßzvy soubor∙ a soubory v UNIXu - nßzvy prom∞nn²ch jsou polo╛ky adresß°e, obsahy prom∞nn²ch samotnΘ soubory. Na reference m∙╛e b²t nazφrßno jako na hardlinky v UNIXovΘm systΘmu soubor∙.
PHP reference umo╛≥ujφ zajistit, aby dv∞ prom∞nnΘ odkazovaly na tent²╛ obsah. Tzn. kdy╛ provedete:
znamenß to, ╛e $a a $b ukazujφ na stejnou prom∞nnou.Poznßmka: $a a $b jsou zde ·pln∞ ekvivalentnφ, tj. nikoliv ╛e $a ukazuje na $b apod., n²br╛ ╛e $a a $b ukazujφ na stejnΘ mφsto.
Stejnß syntaxe se m∙╛e pou╛φt s funkcemi, kterΘ vracφ reference a s operßtorem new (v PHP 4.0.4 a pozd∞j╣φch):
Poznßmka: Nepou╛itφ operßtoru & zp∙sobφ zkopφrovßnφ objektu. Kdy╛ ve t°φd∞ pou╛ijete $this, bude se pracovat s aktußlnφ instancφ t°φdy. P°i°azenφ bez & zkopφruje instanci (nap°. objektu) a $this bude pracovat s touto kopiφ, co╛ nenφ v╛dy to, co se po╛aduje. V∞t╣inou chcete mφt jedinou instanci, s nφ╛ budete pracovat, kv∙li rychlosti a alokaci pam∞ti.
Druhou v∞cφ, kterou reference d∞lajφ, je p°edßvßnφ prom∞nn²ch odkazem. To se d∞lß vytvo°enφm lokßlnφ prom∞nnΘ ve funkci a prom∞nnΘ v kontextu volajφcφho prost°edφ, kdy se odkazuje na tent²╛ obsah. Nap°φklad:
nastavφ do $a hodnotu 6. To proto, ╛e ve funkci foo prom∞nnß $var odkazuje tent²╛ obsah jako $a. Viz detailn∞j╣φ vysv∞tlenφ o p°edßvßnφ odkazem.T°etφ v∞cφ, kterou mohou reference d∞lat, je vracenφ p°es reference.
Jak ji╛ bylo °eΦeno, reference nejsou ukazatele. To znamenß, ╛e tento konstrukt nebude d∞lat to, co oΦekßvßte:
Nastane to, ╛e $var ve funkci foo bude p°i°azena $bar ve volajφcφm kontextu, av╣ak potΘ bude p°i°azena $GLOBALS["baz"]. Nenφ zp∙sob, jak p°i°adit $bar ve volajφcφm kontextu n∞Φemu jinΘmu za pou╛itφ mechanismu referencφ, proto╛e $bar nenφ ve funkci foo dostupnß (je reprezentovßna $var, ale $var mß pouze obsah a nikoli spojenφ nßzvu s hodnotou v tabulce symbol∙).
M∙╛ete p°edßvat prom∞nnou do funkce pomocφ odkazu, tak╛e funkce m∙╛e modifikovat jejφ argumenty. Syntaxe je nßsledujφcφ:
V╣imn∞te si, ╛e ve volßnφ funkce nenφ znak reference - pouze v jejφ definici. Samotnß definice funkce staΦφ na sprßvnΘ p°edßvßnφ argumentu odkazem.Nßsledujφcφ v∞ci lze p°edßvat referencφ:
Prom∞nnß, nap°. foo($a)
Konstrukt s new, nap°. foo(new foobar())
Reference, vracenß z funkce, nap°.:
Viz takΘ vysv∞tlenφ vracenφ p°es reference.«ßdnΘ jinΘ v²razy nemohou b²t p°edßvßny odkazem, v²sledek tohoto nenφ definovßn. Nap°φklad, nßsledujφcφ ukßzky p°edßvßnφ odkazem jsou neplatnΘ:
Tyto po╛adavky platφ pro PHP 4.0.4 a pozd∞j╣φ.Vracenφ odkazem je u╛iteΦnΘ, kdy╛ chcete pou╛φt funkci k nalezenφ prom∞nnΘ, kterß by m∞la b²t odkazu p°i°azena. P°i vracenφ referencφ pou╛ijte tuto syntaxi:
function &find_var ($param) { ...n∞jak² k≤d... return $found_var; } $foo =& find_var ($bar); $foo->x = 2; |
Poznßmka: Narozdφl od p°edßvßnφ parametru, zde musφte & pou╛φt na obou mφstech - k indikaci, ╛e vracφte odkaz a nikoli kopii jako obvykle, a k indikaci p°i°azenφ reference do $foo namφsto b∞╛nΘho p°i°azenφ (hodnoty).
Kdy╛ odnastavφte referenci, p°eru╣φte vazbu mezi nßzvem prom∞nnΘ a jejφm obsahem. To neznamenß, ╛e by obsah byl zniΦen. Nap°φklad:
neodnastavφ $b, n²br╛ pouze $a.Znovu je dobrΘ si p°ipomenout analogii s UNIXov²m p°φkazem unlink.
Mnoho syntaktick²ch konstrukt∙ v PHP je implementovßno p°es odkazov² mechanismus, tak╛e v╣e, co bylo °eΦeno v²╣e o p°i°azovßnφ referencφ, platφ i na tyto konstrukty. N∞kterΘ konstrukty, jako p°edßvßnφ a vracenφ p°es odkazy, byly ji╛ zmφn∞ny. Ostatnφ konstrukty pou╛φvajφcφ reference jsou:
PHP is a powerful language and the interpreter, whether included in a web server as a module or executed as a separate CGI binary, is able to access files, execute commands and open network connections on the server. These properties make anything run on a web server insecure by default. PHP is designed specifically to be a more secure language for writing CGI programs than Perl or C, and with correct selection of compile-time and runtime configuration options, and proper coding practices, it can give you exactly the combination of freedom and security you need.
As there are many different ways of utilizing PHP, there are many configuration options controlling its behaviour. A large selection of options guarantees you can use PHP for a lot of purposes, but it also means there are combinations of these options and server configurations that result in an insecure setup.
The configuration flexibility of PHP is equally rivalled by the code flexibility. PHP can be used to build complete server applications, with all the power of a shell user, or it can be used for simple server-side includes with little risk in a tightly controlled environment. How you build that environment, and how secure it is, is largely up to the PHP developer.
This chapter starts with some general security advice, explains the different configuration option combinations and the situations they can be safely used, and describes different considerations in coding for different levels of security.
A completely secure system is a virtual impossibility, so an approach often used in the security profession is one of balancing risk and usability. If every variable submitted by a user required two forms of biometric validation (such as a retinal scan and a fingerprint), you would have an extremely high level of accountability. It would also take half an hour to fill out a fairly complex form, which would tend to encourage users to find ways of bypassing the security.
The best security is often inobtrusive enough to suit the requirements without the user being prevented from accomplishing their work, or over-burdening the code author with excessive complexity. Indeed, some security attacks are merely exploits of this kind of overly built security, which tends to erode over time.
A phrase worth remembering: A system is only as good as the weakest link in a chain. If all transactions are heavily logged based on time, location, transaction type, etc. but the user is only verified based on a single cookie, the validity of tying the users to the transaction log is severely weakened.
When testing, keep in mind that you will not be able to test all possibilities for even the simplest of pages. The input you may expect will be completely unrelated to the input given by a disgruntled employee, a cracker with months of time on their hands, or a housecat walking across the keyboard. This is why it's best to look at the code from a logical perspective, to discern where unexpected data can be introduced, and then follow how it is modified, reduced, or amplified.
The Internet is filled with people trying to make a name for themselves by breaking your code, crashing your site, posting inappropriate content, and otherwise making your day interesting. It doesn't matter if you have a small or large site, you are a target by simply being online, by having a server that can be connected to. Many cracking programs do not discern by size, they simply trawl massive IP blocks looking for victims. Try not to become one.
Using PHP as a CGI binary is an option for setups that for some reason do not wish to integrate PHP as a module into server software (like Apache), or will use PHP with different kinds of CGI wrappers to create safe chroot and setuid environments for scripts. This setup usually involves installing executable PHP binary to the web server cgi-bin directory. CERT advisory CA-96.11 recommends against placing any interpreters into cgi-bin. Even if the PHP binary can be used as a standalone interpreter, PHP is designed to prevent the attacks this setup makes possible:
Accessing system files: http://my.host/cgi-bin/php?/etc/passwd
The query information in a url after the question mark (?) is passed as command line arguments to the interpreter by the CGI interface. Usually interpreters open and execute the file specified as the first argument on the command line.
When invoked as a CGI binary, PHP refuses to interpret the command line arguments.
Accessing any web document on server: http://my.host/cgi-bin/php/secret/doc.html
The path information part of the url after the PHP binary name, /secret/doc.html is conventionally used to specify the name of the file to be opened and interpreted by the CGI program. Usually some web server configuration directives (Apache: Action) are used to redirect requests to documents like http://my.host/secret/script.php to the PHP interpreter. With this setup, the web server first checks the access permissions to the directory /secret, and after that creates the redirected request http://my.host/cgi-bin/php/secret/script.php. Unfortunately, if the request is originally given in this form, no access checks are made by web server for file /secret/script.php, but only for the /cgi-bin/php file. This way any user able to access /cgi-bin/php is able to access any protected document on the web server.
In PHP, compile-time configuration option --enable-force-cgi-redirect and runtime configuration directives doc_root and user_dir can be used to prevent this attack, if the server document tree has any directories with access restrictions. See below for full the explanation of the different combinations.
If your server does not have any content that is not restricted by password or ip based access control, there is no need for these configuration options. If your web server does not allow you to do redirects, or the server does not have a way to communicate to the PHP binary that the request is a safely redirected request, you can specify the option --enable-force-cgi-redirect to the configure script. You still have to make sure your PHP scripts do not rely on one or another way of calling the script, neither by directly http://my.host/cgi-bin/php/dir/script.php nor by redirection http://my.host/dir/script.php.
Redirection can be configured in Apache by using AddHandler and Action directives (see below).
This compile-time option prevents anyone from calling PHP directly with a url like http://my.host/cgi-bin/php/secretdir/script.php. Instead, PHP will only parse in this mode if it has gone through a web server redirect rule.
Usually the redirection in the Apache configuration is done with the following directives:
Action php-script /cgi-bin/php AddHandler php-script .php |
This option has only been tested with the Apache web server, and relies on Apache to set the non-standard CGI environment variable REDIRECT_STATUS on redirected requests. If your web server does not support any way of telling if the request is direct or redirected, you cannot use this option and you must use one of the other ways of running the CGI version documented here.
To include active content, like scripts and executables, in the web server document directories is sometimes considered an insecure practice. If, because of some configuration mistake, the scripts are not executed but displayed as regular HTML documents, this may result in leakage of intellectual property or security information like passwords. Therefore many sysadmins will prefer setting up another directory structure for scripts that are accessible only through the PHP CGI, and therefore always interpreted and not displayed as such.
Also if the method for making sure the requests are not redirected, as described in the previous section, is not available, it is necessary to set up a script doc_root that is different from web document root.
You can set the PHP script document root by the configuration directive doc_root in the configuration file, or you can set the environment variable PHP_DOCUMENT_ROOT. If it is set, the CGI version of PHP will always construct the file name to open with this doc_root and the path information in the request, so you can be sure no script is executed outside this directory (except for user_dir below).
Another option usable here is user_dir. When user_dir is unset, only thing controlling the opened file name is doc_root. Opening an url like http://my.host/~user/doc.php does not result in opening a file under users home directory, but a file called ~user/doc.php under doc_root (yes, a directory name starting with a tilde [~]).
If user_dir is set to for example public_php, a request like http://my.host/~user/doc.php will open a file called doc.php under the directory named public_php under the home directory of the user. If the home of the user is /home/user, the file executed is /home/user/public_php/doc.php.
user_dir expansion happens regardless of the doc_root setting, so you can control the document root and user directory access separately.
A very secure option is to put the PHP parser binary somewhere outside of the web tree of files. In /usr/local/bin, for example. The only real downside to this option is that you will now have to put a line similar to:
as the first line of any file containing PHP tags. You will also need to make the file executable. That is, treat it exactly as you would treat any other CGI script written in Perl or sh or any other common scripting language which uses the #! shell-escape mechanism for launching itself.To get PHP to handle PATH_INFO and PATH_TRANSLATED information correctly with this setup, the PHP parser should be compiled with the --enable-discard-path configure option.
When PHP is used as an Apache module it inherits Apache's user permissions (typically those of the "nobody" user). This has several impacts on security and authorization. For example, if you are using PHP to access a database, unless that database has built-in access control, you will have to make the database accessible to the "nobody" user. This means a malicious script could access and modify the database, even without a username and password. It's entirely possible that a web spider could stumble across a database administrator's web page, and drop all of your databases. You can protect against this with Apache authorization, or you can design your own access model using LDAP, .htaccess files, etc. and include that code as part of your PHP scripts.
Often, once security is established to the point where the PHP user (in this case, the apache user) has very little risk attached to it, it is discovered that PHP is now prevented from writing any files to user directories. Or perhaps it has been prevented from accessing or changing databases. It has equally been secured from writing good and bad files, or entering good and bad database transactions.
A frequent security mistake made at this point is to allow apache root permissions, or to escalate apache's abilitites in some other way.
Escalating the Apache user's permissions to root is extremely dangerous and may compromise the entire system, so sudo'ing, chroot'ing, or otherwise running as root should not be considered by those who are not security professionals.
There are some simpler solutions. By using open_basedir you can control and restrict what directories are allowed to be used for PHP. You can also set up apache-only areas, to restrict all web based activity to non-user, or non-system, files.
PHP is subject to the security built into most server systems with respect to permissions on a file and directory basis. This allows you to control which files in the filesystem may be read. Care should be taken with any files which are world readable to ensure that they are safe for reading by all users who have access to that filesystem.
Since PHP was designed to allow user level access to the filesystem, it's entirely possible to write a PHP script that will allow you to read system files such as /etc/passwd, modify your ethernet connections, send massive printer jobs out, etc. This has some obvious implications, in that you need to ensure that the files that you read from and write to are the appropriate ones.
Consider the following script, where a user indicates that they'd like to delete a file in their home directory. This assumes a situation where a PHP web interface is regularly used for file management, so the Apache user is allowed to delete files in the user home directories.
P°φklad 15-2. ... A filesystem attack
|
Only allow limited permissions to the PHP web user binary.
Check all variables which are submitted.
P°φklad 15-3. More secure file name checking
|
P°φklad 15-4. More secure file name checking
|
Depending on your operating system, there are a wide variety of files which you should be concerned about, including device entries (/dev/ or COM1), configuration files (/etc/ files and the .ini files), well known file storage areas (/home/, My Documents), etc. For this reason, it's usually easier to create a policy where you forbid everything except for what you explicitly allow.
Nowadays, databases are cardinal components of any web based application by enabling websites to provide varying dynamic content. Since very sensitive or secret information can be stored in a database, you should strongly consider protecting your databases.
To retrieve or to store any information you need to connect to the database, send a legitimate query, fetch the result, and close the connection. Nowadays, the commonly used query language in this interaction is the Structured Query Language (SQL). See how an attacker can tamper with an SQL query.
As you can surmise, PHP cannot protect your database by itself. The following sections aim to be an introduction into the very basics of how to access and manipulate databases within PHP scripts.
Keep in mind this simple rule: defense in depth. The more places you take action to increase the protection of your database, the less probability of an attacker succeeding in exposing or abusing any stored information. Good design of the database schema and the application deals with your greatest fears.
The first step is always to create the database, unless you want to use one from a third party. When a database is created, it is assigned to an owner, who executed the creation statement. Usually, only the owner (or a superuser) can do anything with the objects in that database, and in order to allow other users to use it, privileges must be granted.
Applications should never connect to the database as its owner or a superuser, because these users can execute any query at will, for example, modifying the schema (e.g. dropping tables) or deleting its entire content.
You may create different database users for every aspect of your application with very limited rights to database objects. The most required privileges should be granted only, and avoid that the same user can interact with the database in different use cases. This means that if intruders gain access to your database using your applications credentials, they can only effect as many changes as your application can.
You are encouraged not to implement all the business logic in the web application (i.e. your script), instead do it in the database schema using views, triggers or rules. If the system evolves, new ports will be intended to open to the database, and you have to re-implement the logic in each separate database client. Over and above, triggers can be used to transparently and automatically handle fields, which often provides insight when debugging problems with your application or tracing back transactions.
You may want to estabilish the connections over SSL to encrypt client/server communications for increased security, or you can use ssh to encrypt the network connection between clients and the database server. If either of these is used, then monitoring your traffic and gaining information about your database will be difficult for a would-be attacker.
SSL/SSH protects data travelling from the client to the server, SSL/SSH does not protect the persistent data stored in a database. SSL is an on-the-wire protocol.
Once an attacker gains access to your database directly (bypassing the webserver), the stored sensitive data may be exposed or misused, unless the information is protected by the database itself. Encrypting the data is a good way to mitigate this threat, but very few databases offer this type of data encryption.
The easiest way to work around this problem is to first create your own encryption package, and then use it from within your PHP scripts. PHP can assist you in this with several extensions, such as Mcrypt and Mhash, covering a wide variety of encryption algorithms. The script encrypts the data before inserting it into the database, and decrypts it when retrieving. See the references for further examples of how encryption works.
In case of truly hidden data, if its raw representation is not needed (i.e. not be displayed), hashing may also be taken into consideration. The well-known example for the hashing is storing the MD5 hash of a password in a database, instead of the password itself. See also crypt() and md5().
P°φklad 15-5. Using hashed password field
|
Many web developers are unaware of how SQL queries can be tampered with, and assume that an SQL query is a trusted command. It means that SQL queries are able to circumvent access controls, thereby bypassing standard authentication and authorization checks, and sometimes SQL queries even may allow access to host operating system level commands.
Direct SQL Command Injection is a technique where an attacker creates or alters existing SQL commands to expose hidden data, or to override valuable ones, or even to execute dangerous system level commands on the database host. This is accomplished by the application taking user input and combining it with static parameters to build a SQL query. The following examples are based on true stories, unfortunately.
Owing to the lack of input validation and connecting to the database on behalf of a superuser or the one who can create users, the attacker may create a superuser in your database.
P°φklad 15-6. Splitting the result set into pages ... and making superusers (PostgreSQL and MySQL)
|
// in case of PostgreSQL 0; insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd) select 'crack', usesysid, 't','t','crack' from pg_shadow where usename='postgres'; -- // in case of MySQL 0; UPDATE user SET Password=PASSWORD('crack') WHERE user='root'; FLUSH PRIVILEGES; |
Poznßmka: It is common technique to force the SQL parser to ignore the rest of the query written by the developer with -- which is the comment sign in SQL.
A feasible way to gain passwords is to circumvent your search result pages. The only thing the attacker needs to do is to see if there are any submitted variables used in SQL statements which are not handled properly. These filters can be set commonly in a preceding form to customize WHERE, ORDER BY, LIMIT and OFFSET clauses in SELECT statements. If your database supports the UNION construct, the attacker may try to append an entire query to the original one to list passwords from an arbitrary table. Using encrypted password fields is strongly encouraged.
SQL UPDATE's are also susceptible to attack. These queries are also threatened by chopping and appending an entirely new query to it. But the attacker might fiddle with the SET clause. In this case some schema information must be possessed to manipulate the query successfully. This can be acquired by examining the form variable names, or just simply brute forcing. There are not so many naming conventions for fields storing passwords or usernames.
// $uid == ' or uid like'%admin%'; -- $query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --"; // $pwd == "hehehe', admin='yes', trusted=100 " $query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;" |
A frightening example how operating system level commands can be accessed on some database hosts.
$query = "SELECT * FROM products WHERE id LIKE '%a%' exec master..xp_cmdshell 'net user test testpass /ADD'--"; $result = mssql_query($query); |
Poznßmka: Some of the examples above is tied to a specific database server. This does not mean that a similar attack is impossible against other products. Your database server may be similarly vulnerable in another manner.
You may plead that the attacker must possess a piece of information about the database schema in most examples. You are right, but you never know when and how it can be taken out, and if it happens, your database may be exposed. If you are using an open source, or publicly available database handling package, which may belong to a content management system or forum, the intruders easily produce a copy of a piece of your code. It may be also a security risk if it is a poorly designed one.
These attacks are mainly based on exploiting the code not being written with security in mind. Never trust any kind of input, especially that which comes from the client side, even though it comes from a select box, a hidden input field or a cookie. The first example shows that such a blameless query can cause disasters.
Never connect to the database as a superuser or as the database owner. Use always customized users with very limited privileges.
Check if the given input has the expected data type. PHP has a wide range of input validating functions, from the simplest ones found in Variable Functions and in Character Type Functions (e.g. is_numeric(), ctype_digit() respectively) and onwards to the Perl compatible Regular Expressions support.
If the application waits for numerical input, consider verifying data with is_numeric(), or silently change its type using settype(), or use its numeric representation by sprintf().
P°φklad 15-10. A more secure way to compose a query for paging
|
Quote each non numeric user input which is passed to the database with addslashes() or addcslashes(). See the first example. As the examples shows, quotes burnt into the static part of the query is not enough, and can be easily cracked.
Do not print out any database specific information, especially about the schema, by fair means or foul. See also Error Reporting and Error Handling and Logging Functions.
You may use stored procedures and previously defined cursors to abstract data access so that users do not directly access tables or views, but this solution has another impacts.
Besides these, you benefit from logging queries either within your script or by the database itself, if it supports logging. Obviously, the logging is unable to prevent any harmful attempt, but it can be helpful to trace back which application has been circumvented. The log is not useful by itself, but through the information it contains. More detail is generally better than less.
With PHP security, there are two sides to error reporting. One is beneficial to increasing security, the other is detrimental.
A standard attack tactic involves profiling a system by feeding it improper data, and checking for the kinds, and contexts, of the errors which are returned. This allows the system cracker to probe for information about the server, to determine possible weaknesses. For example, if an attacker had gleaned information about a page based on a prior form submission, they may attempt to override variables, or modify them:
The PHP errors which are normally returned can be quite helpful to a developer who is trying to debug a script, indicating such things as the function or file that failed, the PHP file it failed in, and the line number which the failure occured in. This is all information that can be exploited. It is not uncommon for a php developer to use show_source(), highlight_string(), or highlight_file() as a debugging measure, but in a live site, this can expose hidden variables, unchecked syntax, and other dangerous information. Especially dangerous is running code from known sources with built-in debugging handlers, or using common debugging techniques. If the attacker can determine what general technique you are using, they may try to brute-force a page, by sending various common debugging strings:
Regardless of the method of error handling, the ability to probe a system for errors leads to providing an attacker with more information.
For example, the very style of a generic PHP error indicates a system is running PHP. If the attacker was looking at an .html page, and wanted to probe for the back-end (to look for known weaknesses in the system), by feeding it the wrong data they may be able to determine that a system was built with PHP.
A function error can indicate whether a system may be running a specific database engine, or give clues as to how a web page or programmed or designed. This allows for deeper investigation into open database ports, or to look for specific bugs or weaknesses in a web page. By feeding different pieces of bad data, for example, an attacker can determine the order of authentication in a script, (from the line number errors) as well as probe for exploits that may be exploited in different locations in the script.
A filesystem or general PHP error can indicate what permissions the webserver has, as well as the structure and organization of files on the web server. Developer written error code can aggravate this problem, leading to easy exploitation of formerly "hidden" information.
There are three major solutions to this issue. The first is to scrutinize all functions, and attempt to compensate for the bulk of the errors. The second is to disable error reporting entirely on the running code. The third is to use PHP's custom error handling functions to create your own error handler. Depending on your security policy, you may find all three to be applicable to your situation.
One way of catching this issue ahead of time is to make use of PHP's own error_reporting(), to help you secure your code and find variable usage that may be dangerous. By testing your code, prior to deployment, with E_ALL, you can quickly find areas where your variables may be open to poisoning or modification in other ways. Once you are ready for deployment, by using E_NONE, you insulate your code from probing.
Perhaps the most controversial change in PHP is when the default value for the PHP directive register_globals went from ON to OFF in PHP 4.2.0. Reliance on this directive was quite common and many people didn't even know it existed and assumed it's just how PHP works. This page will explain how one can write insecure code with this directive but keep in mind that the directive itself isn't insecure but rather it's the misuse of it.
When on, register_globals will inject (poison) your scripts will all sorts of variables, like request variables from HTML forms. This coupled with the fact that PHP doesn't require variable initialization means writing insecure code is that much easier. It was a difficult decision, but the PHP community decided to disable this directive by default. When on, people use variables yet really don't know for sure where they come from and can only assume. Internal variables that are defined in the script itself get mixed up with request data sent by users and disabling register_globals changes this. Let's demonstrate with an example misuse of register_globals:
P°φklad 15-14. Example misuse with register_globals = on
|
When register_globals = on, our logic above may be compromised. When off, $authorized can't be set via request so it'll be fine, although it really is generally a good programming practice to initialize variables first. For example, in our example above we might have first done $authorized = false. Doing this first means our above code would work with register_globals on or off as users by default would be unauthorized.
Another example is that of sessions. When register_globals = on, we could also use $username in our example below but again you must realize that $username could also come from other means, such as GET (through the URL).
P°φklad 15-15. Example use of sessions with register_globals on or off
|
It's even possible to take preventative measures to warn when forging is being attempted. If you know ahead of time exactly where a variable should be coming from, you can check to see if the submitted data is coming from an inappropriate kind of submission. While it doesn't guarantee that data has not been forged, it does require an attacker to guess the right kind of forging. If you don't care where the request data comes from, you can use $_REQUEST as it contains a mix of GET, POST and COOKIE data. See also the manual section on using variables from outside of PHP.
P°φklad 15-16. Detecting simple variable poisoning
|
Of course, simply turning off register_globals does not mean your code is secure. For every piece of data that is submitted, it should also be checked in other ways. Always validate your user data and initialize your variables! To check for unitialized variables you may turn up error_reporting() to show E_NOTICE level errors.
dostupnost superglobßlnφch prom∞nn²ch: Od PHP 4.1.0 jsou k dispozici superglobßlnφ pole jako $_GET , $_POST a $_SERVER. Pro vφce informacφ viz Φßst manußlu o superglobals
The greatest weakness in many PHP programs is not inherent in the language itself, but merely an issue of code not being written with security in mind. For this reason, you should always take the time to consider the implications of a given piece of code, to ascertain the possible damage if an unexpected variable is submitted to it.
P°φklad 15-17. Dangerous Variable Usage
|
Will this script only affect the intended files?
Can unusual or undesirable data be acted upon?
Can this script be used in unintended ways?
Can this be used in conjunction with other scripts in a negative manner?
Will any transactions be adequately logged?
You may also want to consider turning off register_globals, magic_quotes, or other convenience settings which may confuse you as to the validity, source, or value of a given variable. Working with PHP in error_reporting(E_ALL) mode can also help warn you about variables being used before they are checked or initialized (so you can prevent unusual data from being operated upon).
In general, security by obscurity is one of the weakest forms of security. But in some cases, every little bit of extra security is desirable.
A few simple techniques can help to hide PHP, possibly slowing down an attacker who is attempting to discover weaknesses in your system. By setting expose_php = off in your php.ini file, you reduce the amount of information available to them.
Another tactic is to configure web servers such as apache to parse different filetypes through PHP, either with an .htaccess directive, or in the apache configuration file itself. You can then use misleading file extensions:
PHP, like any other large system, is under constant scrutiny and improvement. Each new version will often include both major and minor changes to enhance and repair security flaws, configuration mishaps, and other issues that will affect the overall security and stability of your system.
Like other system-level scripting languages and programs, the best approach is to update often, and maintain awareness of the latest versions and their changes.
Prost°edky HTTP autentikace jsou v PHP p°φstupnΘ pouze pokud PHP b∞╛φ jako modul Apache, tudφ╛ nejsou p°φstupnΘ v CGI verzi. V PHP skriptu b∞╛φcφm pod modulem Apache lze pou╛φt funkci header() k odeslßnφ zprßvy "Authentication Required" klientskΘmu browseru, co╛ vyvolß zobrazenφ dialogovΘho okna pro vlo╛enφ u╛ivatelskΘho jmΘna a hesla. Jakmile u╛ivatel zadß jmΘno a heslo, URL obsahujφcφ tento PHP skript se zavolß znovu s prom∞nn²mi $PHP_AUTH_USER, $PHP_AUTH_PW and $PHP_AUTH_TYPE obsahujφcφmi jmΘno, heslo a typ autentikace. V souΦasnosti je podporovßna pouze "Basic" autentikace. Vφce informacφ viz funkce header().
Nßsledujφcφ fragment k≤du m∙╛e poslou╛it jako ukßzka vy╛ßdßnφ autentikace u╛ivatele na strßnce:
P°φklad 16-1. Ukßzka HTTP Autentikace
|
Mφsto protΘho vyti╣t∞nφ $PHP_AUTH_USER a $PHP_AUTH_PW byste asi cht∞li ov∞°it platnost zadanΘho jmΘna a hesla. Nap°φklad dotazem v databßzi nebo vyhledßnφm u╛ivatele v dbm souboru.
Pozor na chybovΘ browsery Internet Explorer. Zdß se, ╛e jsou velice vybφravΘ, pokud jde o po°adφ hlaviΦek. Zdß se, ╛e odeslßnφ hlaviΦky WWW-Authenticate p°ed hlaviΦkou HTTP/1.0 401 zabφrß.
Aby se zabrßnilo psanφ skript∙ odhalujφcφch hesla na strßnkßch autentikovan²ch n∞kter²m z tradiΦnφch externφch mechanism∙, PHP_AUTH prom∞nnΘ se nevytvo°φ, pokud je pro tu kterou strßnku zapnuta externφ autentikace. V takovΘm p°φpad∞ m∙╛ete k identifikaci extern∞ autentikovanΘho u╛ivatele pou╛φt prom∞nnou $REMOTE_USER.
V╣imn∞te si nicmΘn∞, ╛e v²╣e uvedenΘ nezabrßnφ krßde╛φm hesel z autentikovan²ch URL osobou, kterß ovlßdß neautentikovanou URL na stejnΘm serveru.
Jak Netscape, tak Internet Explorer po p°ijetφ response k≤du 401 vyprßzdnφ autentikaΦnφ cache souΦasnΘho realmu. Tak m∙╛ete u╛ivatele v podstat∞ "odlogovat". N∞kte°φ lidΘ toho vyu╛φvajφ k "vypr╣enφ" p°ihlß╣enφ nebo tvorb∞ odhla╣ovacφho tlaΦφtka.
P°φklad 16-2. Ukßzka HTTP autentikace vy╛adujφcφ novΘ jmΘno a heslo
|
Podle standardu HTTP Basic authentication se toto chovßnφ nevy╛aduje, tak╛e byste na to nikdy nem∞li spolΘhat. Pokusy s Lynxem ukßzaly, ╛e Lynx po p°ijetφ response k≤du 401 nevyprßzdnφ autentikaΦnφ ·daje, tak╛e po stisknutφ back a forward se znovu ukß╛e po╛adovan² zdroj (pokud se nezm∞nily po╛adavky na ·daje).
Dßle si v╣imn∞te, ╛e tato vlastnost p°i pou╛itφ IIS serveru a CGI verze PHP dφky omezenφm IIS nefunguje.
PHP transparentn∞ podporuje HTTP cookies. Cookies jsou mechanismem na uklßdßnφ dat ve vzdßlenΘm browseru a tudφ╛ sledovßnφ nebo identifikaci vracejφcφch se u╛ivatel∙. Cookies m∙╛ete nastavovat pomocφ funkce setcookie(). Cookies jsou souΦßstφ HTTP hlaviΦky, tudφ╛ setcookie() se musφ volat p°ed odeslßnφm v²stupu do browseru. To je stejnΘ omezenφ, jako mß funkce header().
V╣echny cookies p°ijatΘ od klienta se automaticky stßvajφ PHP prom∞nnou stejn∞ jako u GET a POST dat. Pokud chcete p°i°adit jednomu cookie vφce hodnot, p°idejte [] na konec jmΘna cookie. Vφce detail∙ viz funkce setcookie().
PHP umo╛≥uje zpracovßnφ uploadu soubor∙ z jakΘhokoli prohlφ╛eΦe vyhovujφcφho RFC-1867 (co╛ zahrnuje mj. Netscape Navigator 3 a pozd∞j╣φ, Microsoft Internet Explorer 3 se zßplatou od Microsoftu, nebo pozd∞j╣φ bez zßplaty). Tato schopnost umo╛≥uje lidem uploadovat textovΘ i binßrnφ soubory. S autentizacφ poskytovanou PHP a s funkcemi pro manipulaci se soubory mßte plnou kontrolu nad tφm, kdo smφ uploadovat a co se mß ud∞lat s uploadovan²m souborem.
Nezapome≥te, ╛e PHP podporuje takΘ uploady metodou PUT tak, jak se pou╛φvß v Netscape Composeru a v editoru Amaya od W3C. Pro bli╛╣φ detaily viz Podpora metody PUT.
Obrazovka pro upload souboru m∙╛e b²t tvo°ena specißlnφm formulß°em, kter² vypadß podobn∞ jako tento:
Varovßnφ |
Hodnota MAX_FILE_SIZE je z hlediska prohlφ╛eΦe pouze informativnφ. Je snadnΘ ji obejφt. Tak╛e nepoΦφtejte s tφm, ╛e prohlφ╛eΦ se bude chovat tak, jak si p°ejete. Nastavenφ maximßlnφ velikosti v PHP v╣ak samoz°ejm∞ nem∙╛e b²t obelst∞no. |
Prom∞nnΘ definovanΘ pro uploadovanΘ soubory se li╣φ v zßvislosti na verzi a konfiguraci PHP. Pokud je aktivnφ volba track_vars, bude inicializovßno pole $HTTP_POST_FILES/$_FILES. KoneΦn∞, souvisejφcφ prom∞nnΘ mohou b²t inicializovßny jako globßlnφ, pokud je zapnuta volba register_globals. Ov╣em pou╛φvßnφ globßlnφch prom∞nn²ch nenφ doporuΦeno. Po ·sp∞╣nΘm uploadu budou v cφlovΘm skriptu definovßny nßsledujφcφ prom∞nnΘ:
Poznßmka: track_vars je od PHP 4.0.3 v╛dy zapnuto. U PHP 4.1.0 a pozd∞j╣φch m∙╛e b²t pou╛ito $_FILES namφsto $HTTP_POST_FILES. $_FILES je v╛dy globßlnφ prom∞nnß, tak╛e by se nem∞la pou╛φvat specifikace global pro prom∞nnou $_FILES.
$HTTP_POST_FILES/$_FILES obsahuje informace o uploadovanΘm souboru.
Obsah $HTTP_POST_FILES je takov²to (uv∞domte si, ╛e se p°edpoklßdß pou╛itφ nßzvu uploadovanΘho souboru 'userfile' tak, jako v p°φkladu v²╣e):
Originßlnφ nßzev souboru na klientskΘm poΦφtaΦi.
MIME typ souboru, pokud prohlφ╛eΦ tuto informaci poskytuje (nap°. "image/gif").
Velikost uploadovanΘho souboru v bytech.
DoΦasn² nßzev souboru, pod nφm╛ byl uploadovan² soubor ulo╛en na server.
Poznßmka: PHP 4.1.0 a pozd∞j╣φ podporujφ zkrßcen² nßzev prom∞nnΘ $_FILES. PHP 3 nepodporuje $HTTP_POST_FILES.
Obsah prom∞nnßch v situaci, kdy je prom∞nnß register_globals zapnuta nastavenφm v souboru php.ini (uv∞domte si, ╛e se p°edpoklßdß pou╛itφ nßzvu uploadovanΘho souboru 'userfile' tak, jako v p°φkladu v²╣e):
$userfile - DoΦasn² nßzev souboru, pod kter²m byl uploadovan² soubor ulo╛en na server.
$userfile_name - Originßlnφ nßzev souboru nebo cesta na odesφlajφcφm systΘmu.
$userfile_size - Velikost uploadovanΘho souboru v bytech.
$userfile_type - MIME typ souboru, pokud prohlφ╛eΦ tuto informaci poskytuje (nap°. "image/gif").
Poznßmka: Nastavenφ register_globals = On se nedoporuΦuje z bezpeΦnostnφch a v²konnostnφch d∙vod∙.
Soubory se implicitn∞ uklßdajφ do systΘmovΘho adresß°e pro doΦasnΘ soubory, pokud nebylo direktivou upload_tmp_dir v souboru php.ini stanoveno jinak. SystΘmov² adresß° pro doΦasnΘ soubory m∙╛e b²t zm∞n∞n nastavenφ prom∞nnΘ prost°edφ TMPDIR v prost°edφ, kde PHP b∞╛φ. Nastavenφ za pou╛itφ putenv() z PHP skriptu nebude fungovat. Tato prom∞nnß prost°edφ m∙╛e b²t takΘ pou╛ita k uji╣t∞nφ se, ╛e v╣echny ostatnφ operace pracujφ s uploadovan²mi soubory.
P°φklad 18-2. Ov∞°ovßnφ uploadu souboru Nßsledujφcφ p°φklady jsou pro verze PHP 4 vy╣╣φ ne╛ PHP 4.0.2. (viz funkce is_uploaded_file() a move_uploaded_file()).
|
PHP skript, kter² p°ijφmß uploadovanΘ soubory, by m∞l implementovat ve╣kerou logiku pro stanovenφ, co by se m∞lo ud∞lat s uploadovan²m souborem. M∙╛ete nap°. pou╛φt prom∞nnou $HTTP_POST_FILES['userfile']['size'] pro zahozenφ soubor∙, kterΘ jsou p°φli╣ malΘ nebo velkΘ. Mohli byste pou╛φt takΘ prom∞nnou $HTTP_POST_FILES['userfile']['type'] pro filtraci soubor∙ podle MIME datovΘho typu. Bez ohledu na °e╣enφ, soubor by m∞l b²t smazßn nebo p°esunut jinam.
Soubor bude automaticky smazßn z doΦasnΘho adresß°e na konci skriptu, pokud nebyl p°esunut jinam nebo p°ejmenovßn.
MAX_FILE_SIZE nem∙╛e specifikovat velikost souboru v∞t╣φ ne╛ je ta, kterß byla nastavena pomocφ upload_max_filesize v konfiguraci PHP. Implicitn∞ jsou to 2 MB.
Pokud je zapnut limit pam∞ti, m∙╛e b²t pot°eba v∞t╣φ hodnota memory_limit. Ujist∞te se, ╛e je hodnota memory_limit dostateΦn∞ velkß.
Pokud je nastavenß hodnota max_execution_time p°φli╣ malß, doba provßd∞nφ skriptu ji m∙╛e p°ekroΦit. Ujist∞te se, ╛e je hodnota max_execution_time dostateΦn∞ velkß.
Pokud je nastavenß hodnota post_max_size p°φli╣ malß, nem∙╛e b²t uploadovßn v∞t╣φ soubor. Ujist∞te se, ╛e je hodnota post_max_size dostateΦn∞ velkß.
Neov∞°ovßnφ, se kter²m souborem se pracuje, m∙╛e znamenat, ╛e se u╛ivatelΘ mohou dostat k citliv²m informacφm v jin²ch adresß°φch.
Uv∞domte si prosφm, ╛e server CERN httpd odstra≥uje v╣echno, co poΦφnaje prvnφ bφlou mezerou (whitespace) v MIME hlaviΦce Content-Type obdr╛φ od klienta. Za existence tohoto jevu nebude CERN httpd podporovat uploading soubor∙.
Vφce soubor∙ m∙╛e b²t uploadovßnφ za pou╛itφ r∙zn²ch nßzv∙ name pro souborovΘ pole input.
Je takΘ mo╛nΘ uploadovat vφce soubor∙ souΦasn∞ a nechat informace automaticky zorganizovat v polφch. V takovΘm p°φpad∞ je t°eba pou╛φt stejnou syntaxi v HTML formulß°i jako pro vφcenßsobnΘ v²b∞ry a za╣krtßvacφ polφΦka (checkboxy).
Poznßmka: Podpora pro upload vφce soubor∙ byla p°idßna ve verzi 3.0.10.
Pokud je v²╣e uveden² formulß° odeslßn, pole $HTTP_POST_FILES['userfile'], $HTTP_POST_FILES['userfile']['name'], a $HTTP_POST_FILES['userfile']['size'] budou inicializovßna (jak $_FILES v PHP 4.1.0 a pozd∞j╣φm, tak $HTTP_POST_VARS v PHP 3. Pokud je nastavenφ register_globals aktivnφ globßlnφ prom∞nnΘ pro uploadovanΘ soubory jsou takΘ inicializovßny). Ka╛dΘ z nich bude Φφseln∞ indexovanΘ pole odpovφdajφcφch hodnot pro odeslanΘ soubory.
Kup°φkladu p°edpoklßdejme, ╛e se posφlajφ soubory s nßzvy /home/test/review.html a /home/test/xwp.out. V tom p°φpad∞ by $HTTP_POST_FILES['userfile']['name'][0] obsahovalo hodnotu review.html a $HTTP_POST_FILES['userfile']['name'][1] hodnotu xwp.out. Podobn∞ $HTTP_POST_FILES['userfile']['size'][0] by obsahovalo velikost review.html atd.
$HTTP_POST_FILES['userfile']['name'][0], $HTTP_POST_FILES['userfile']['tmp_name'][0], $HTTP_POST_FILES['userfile']['size'][0] a $HTTP_POST_FILES['userfile']['type'][0] budou rovn∞╛ nastaveny.
PHP poskytuje podporu pro HTTP PUT metodu pou╛φvanou klienty jako Netscape Composer nebo W3C Amaya. Po╛adavky s metodou PUT jsou mnohem jednodu╣╣φ ne╛ upload soubor∙ a vypadajφ p°ibli╛n∞ takto:
Toto by normßln∞ znamenalo, ╛e by cht∞l klient ulo╛it obsah, kter² nßsleduje za nßzvem /path/filename.html, do svΘho webovΘho stromu. To samoz°ejm∞ nenφ dobr² nßpad, aby Apache nebo PHP automaticky nechal kohokoli p°epsat jakΘkoli soubory ve strom∞. Tak╛e, pro zpracovßnφ takovΘho po╛adavku je t°eba nejd°φv °ici va╣emu WWW serveru, ╛e chcete po╛adavek zpracovßvat konkrΘtnφm PHP skriptem. U serveru Apache se to provede direktivou Script. M∙╛e b²t umφst∞na kdekoli v konfiguraΦnφm souboru Apache. ╚ast²mi mφsty jsou bloky <Directory> a <Virtualhost>. Pou╛ije se k tomu °ßdek podobn² tomuto:
Toto °ekne serveru Apache, aby v╣echny PUT po╛adavky na n∞jak² URI vyhovujφcφ kontextu posφlal skriptu put.php. To pochopiteln∞ p°edpoklßdß, ╛e mßte povoleno PHP pro p°φponu .php a PHP je aktivnφ.
V souboru put.php byste potom mohli napsat n∞co jako:
Toto by m∞lo zkopφrovat soubor na mφsto po╛adovanΘ vzdßlen²m klientem. Pravd∞podobn∞ byste cht∞li provΘst n∞jakß ov∞°enφ a/nebo autentizace u╛ivatele p°ed provedenφm tohoto zkopφrovßnφ. Jedin²m pou╛iteln²m trikem je, ╛e PHP ulo╛φ p°enesen² soubor do doΦasnΘho adresß°e podobn∞, jako p°i pou╛itφ metody POST. A╛ skript skonΦφ, doΦasn² soubor bude odstran∞n. Tak╛e vß╣ PHP skipt pro zpracovßnφ PUT po╛adavk∙ musφ soubor zkopφrovat jinam. Nßzev souboru v doΦasnΘm umφst∞nφ je ulo╛en v prom∞nnΘ $PHP_PUT_FILENAME a po╛adovan² nßzev cφlovΘho souboru v prom∞nnΘ $REQUEST_URI (m∙╛e se li╣it u server∙ jin²ch ne╛ Apache). Toto cφlovΘ jmΘno je to jedinΘ, co klient specifikoval. Nemusφte ho poslechnout. Mohli byste, nap°φklad, kopφrovat v╣echny uploadovanΘ soubory do specißlnφho uploadovΘho adresß°e.
Pokud p°i konfiguraci PHP aktivujete podporu "URL fopen wrapper" (standardn∞ je zapnutß, leda╛e pro configure explicitn∞ zadßte --disable-url-fopen-wrapper p°φznak (verze do 4.0.3), nebo (u nov∞j╣φch verzφ) nastavφte allow_url_fopen v php.ini na off), m∙╛ete ve volßnφch v∞t╣iny funkcφ, kterΘ oΦekßvajφ jako argument nßzev souboru (vΦetn∞ require() a include()) uvΘst HTTP nebo FTP URL.
M∙╛ete nap°φklad otev°φt soubor na vzdßlenΘm web serveru, vyseparovat z v²stupu data, kterß pot°ebujete, a tato data potom pou╛φt v dotazu na databßzi, nebo je prost∞ zaΦlenit do v²stupu stylem odpovφdajφcφm zbytku va╣φ web site.
P°φklad 19-1. Zφskßnφ nßzvu vzdßlenΘ strßnky
|
Pokud se p°ipojφte jako u╛ivatel s dostateΦn²mi prßvy, a dan² soubor u╛ neexistuje, m∙╛ete data takΘ uklßdat po FTP. Pokud se chcete p°ipojit jako jin² u╛ivatel ne╛ 'anonymous', musφte v URL udat u╛ivatelskΘ jmΘno (a pravd∞podobn∞ i heslo), nap°. 'ftp://uzivatel:heslo@ftp.example.com/path/to/file'. (Pro p°φstup k soubor∙m p°es HTTP, kterΘ vy╛adujφ Basic authentication, m∙╛ete pou╛φt stejnou syntaxi.)
Poznßmka: Z v²╣e uvedenΘho p°φkladu by vßs mohlo napadnout vyu╛φt tuto techniku k zßpisu do vzdßlenΘho logu, ale jak u╛ bylo zmφn∞no v²╣e, pomocφ URL fopen() wrapperu m∙╛ete zapisovat pouze do novΘho souboru. Pokud mßte zßjem o distribuovanΘ logovßnφ, podφvejte se na syslog().
Poznßmka: Nßsledujφcφ text platφ pro verzi 3.0.7 a vy╣╣φ.
Stav spojenφ se v PHP intern∞ sleduje. Jsou t°i mo╛nΘ stavy:
0 - NORMAL (normßlnφ)
1 - ABORTED (zru╣eno)
2 - TIMEOUT (vypr╣el Φasov² limit)
P°i normßlnφm b∞hu PHP skriptu je aktivnφ stav NORMAL. Pokud se klient odpojφ, nastavφ se p°φznak ABORTED. K odpojenφ vzdßlenΘho klienta typicky dochßzφ, kdy╛ u╛ivatel zmßΦkne tlaΦφtko STOP. Pokud se dosßhne ΦasovΘho limitu (viz set_time_limit()), nastavφ se stavov² p°φznak TIMEOUT.
M∙╛ete se rozhodnout jestli chcete, aby odpojenφ klienta zp∙sobilo p°edΦasnΘ ukonΦenφ va╣eho skriptu. N∞kdy je u╛iteΦnΘ nechat skripty dob∞hnout do konce, p°esto╛e nenφ vzdßlenΘho browseru, kter² by p°ijφmal v²stup. V²chozφ chovßnφ je nicmΘn∞ takovΘ, ╛e p°i odpojenφ vzdßlenΘho klienta dojde k ukonΦenφ b∞hu skriptu. Toto chovßnφ se dß zm∞nit skrze konfiguraΦnφ direktivu ignore_user_abort v php3.ini, odpovφdajφcφ direktivu php3_ignore_user_abort v .conf souboru Apache, Φi funkci ignore_user_abort(). Pokud nedßte PHP pokyn ignorovat odpojenφ u╛ivatele a ten se odpojφ, vß╣ skript se ukonΦφ. V²jimkou je, pokud mßte pomocφ register_shutdown_function() zaregistrovanou funkci pro provedenφ p°i ukonΦenφ skriptu. V tom p°φpad∞, pokud vzdßlen² u╛ivatel zmßΦkne tlaΦφtko STOP, p°i dal╣φm pokusu tohoto skriptu odeslat v²stup PHP detekuje, ╛e spojenφ bylo zru╣eno, a zavolß se funkce zaregistrovanß pro provedenφ p°i ukonΦenφ skriptu. Tato funkce se zavolß takΘ na konci b∞hu skriptu konΦφcφm normßln∞, tak╛e pokud chcete po zru╣enΘm spojenφ ud∞lat n∞co jinΘho, m∙╛ete pou╛φt connection_aborted(). Tato funkce vrßtφ TRUE, pokud bylo spojenφ zru╣eno.
Vß╣ skript m∙╛e takΘ ukonΦit vestav∞n² ΦφtaΦ Φasu. V²chozφ Φasov² limit je 30 sekund. To se dß zm∞nit max_execution_time direktivou v php╣.ini nebo odpovφdajφcφ php3_max_execution_time direktivou v .conf souboru Apahe, Φi volßnφm funkce set_time_limit(). Kdy╛ ΦφtaΦ Φasu dob∞hne, skript se ukonΦφ, a jako ve v²╣e uvedenΘm p°φpad∞ u╛ivatelskΘho odpojenφ, pokud je zaregistrovanß funkce pro provedenφ p°i ukonΦenφ skriptu, tato se zavolß. Uvnit° tΘto funkce m∙╛te zkontrolovat, jestli jejφ zavolßnφ zp∙sobilo dob∞hnutφ ΦφtaΦe Φasu zavolßnφm funkce connection_timeout(). Tato funkce vrßtφ TRUE, pokud volßnφ funkce registrovanΘ pro provedenφ p°i ukonΦenφ skriptu zp∙sobilo dob∞hnutφ ΦφtaΦe Φasu.
SkuteΦnostφ hodnou pov╣imnutφ je, ╛e stavy ABORTED a TIMEOUT mohou b²t aktivnφ souΦasn∞. Mo╛nΘ je to v p°φpad∞, ╛e na°φdφte PHP ignorovat odpojenφ u╛ivatee. PHP i tak bude v∞d∞t, ╛e u╛ivatel p°eru╣il spojenφ, ale skript pob∞╛φ dßl. Pokud potom dosßhne ΦasovΘho limitu, bude ukonΦen, a zavolß se va╣e funkce pro provedenφ p°i ukonΦenφ skriptu, pokud existuje. V tomto okam╛iku zjistφte, ╛e jak connection_timeout(), tak connection_aborted() vracejφ TRUE. Oba stavy m∙╛ete zkontrolovat jedin²m volßnφm funkce connection_status(). Tato funkce vracφ bitovΘ pole aktivnφch stav∙. Tak╛e nap°φklad, pokud jsou aktivnφ oba tyto stavy, vrßtφ 3.
Trvalß spojenφ jsou SQL spojenφ, kterß se nezavφrajφ na konci pr∙b∞hu skriptu. P°i po╛adavku na trvalΘ spojenφ PHP nejd°φve zkontroluje, jestli u╛ neexistuje identickΘ spojenφ (kterΘ z∙stalo otev°eno z d°φv∞j╣ka) - a pokud existuje, pou╛ije ho. Pokud neexistuje, PHP ho otev°e. "IdentickΘ" spojenφ je spojenφ, kterΘ bylo otev°eno se stejn²m serverem, u╛ivatelsk²m jmΘnem a heslem (pokud je zadßte).
Poznßmka: Existujφ i dal╣φ roz╣φ°enφ, kterß vytvß°φ trvalß spojenφ, nap°φklad Roz╣φ°enφ IMAP.
LidΘ, kte°φ nejsou d∙kladn∞ obeznßmeni se zp∙sobem, jak²m web servery fungujφ a distribuujφ zßt∞╛, mohou poklßdat trvalß spojenφ za n∞co Φφm nejsou. Zvlß╣t∞ neumo╛≥ujφ otvφrßnφ "u╛ivatelsk²ch sessions" na stejnΘm SQL spojenφ, neumo╛≥ujφ efektivnφ tvorbu transakcφ, a neumo╛≥ujφ spoustu dal╣φch v∞cφ. Dokonce, aby o tom bylo opravdu a d∙kladn∞ jasno, vßm trvalß spojenφ nedajφ ╛ßdnou funkcionalitu, kterß by nebyla mo╛nß s jejich netrval²mi prot∞j╣ky.
ProΦ?
To je dßno zp∙sobem, jak²m fungujφ webovΘ servery. Jsou t°i zp∙soby, jak²mi vß╣ web server m∙╛e vyu╛φt PHP ke generovßnφ webov²ch strßnek.
Prvnφ metodou je pou╛φt PHP jako CGI "obal". V tomto re╛imu se vytvß°φ a niΦφ jedna instance PHP interpretru pro ka╛d² po╛adavek (na PHP strnßnku) na va╣em web serveru. Proto╛e je zniΦena po obslou╛enφ po╛adavku, v╣echny zdroje, kterΘ zφskß (jako t°eba spojenφ s databßzov²m serverem) jsou p°i jejφm zniΦenφ zav°eny. V tomto p°φpad∞ pokusem o pou╛itφ trval²ch spojenφ nic nezφskßte - prost∞ nevydr╛φ.
Druhou, a nejpopulßrn∞j╣φ, metodou, je provozovat PHP jako modul v multiprocesnφm web serveru, co╛ je mno╛ina, kterß v souΦasnosti obsahuje pouze Apache. Multiprocesnφ web server mß typicky jeden proces (rodiΦe), kter² °φdφ skupinu proces∙ (sv²ch d∞tφ), kterΘ d∞lajφ vlastnφ prßci - servφrujφ strßnky. Ka╛d² po╛adavek, kter² p°ijde od klienta, je obslou╛en jednφm z d∞tφ, kterΘ prßv∞ neobsluhuje jinΘho klienta. To znamenß, ╛e kdy╛ stejn² klient vznese dal╣φ po╛adavek na stejn² server, tento m∙╛e b²t obslou╛en jin²m d∞tsk²m procesem ne╛ ten prvnφ. Trvalß spojenφ zaji╣╗ujφ, aby se ka╛d² d∞tsk² proces musel na vß╣ SQL server p°ihlßsit pouze p°i prvnφm odeslßnφ strßnky, kterß takovΘ spojenφ vyu╛φvß. Kdy╛ spojenφ s SQL serverem vy╛aduje dal╣φ strßnka, m∙╛e pou╛φt spojenφ, kterΘ toto dφt∞ otev°elo u╛ d°φve.
Poslednφ metodou je pou╛φt PHP jako plug-in v multivlßknovΘm web serveru. Aktußln∞ PHP 4 mß tuto podporu pro ISAPI, WSAPI a NSAPI (na Windows), co╛ umo╛nuje pou╛φvat PHP jako plug-in v multivlßknov²ch serverech jako Netscape FastTrack (iPlanet), Microsoft Internet Information Server (IIS), a O'Reilly's WebSite Pro. Chovßnφ je stejnΘ jako u multiprocesnφm modelu popsanΘm d°φve. Podpora pro SAPI nenφ dostupnß v PHP 3.
Pokud trvalß spojenφ neposkytujφ ╛ßdnou p°idanou funkcionalitu, k Φemu jsou dobrß?
Odpov∞∩ na tuto otßzku je velmi jednoduchß - efektivita. Trvalß spojenφ jsou dobrß, pokud mß tvorba spojenφ s va╣φm SQL serverem vysokou re╛ii. Reßlnß v²╣e tΘto re╛ie zßle╛φ na mnoha faktorech. Nap°φklad jak² je to typ databßze, jestli sφdlφ na stejnΘm poΦφtaΦi jako vß╣ webserver, jak zatφ╛en² je stroj, na kterΘm vß╣ SQL server b∞╛φ a tak dßle. Pointa je, ╛e pokud je spojovacφ re╛ie vysokß, trvalß spojenφ vßm znateln∞ pomohou. Umo╛nφ d∞tskΘmu procesu p°ipojit se pouze jednou za cel² jeho ╛ivotnφ cyklus mφsto ka╛dΘho zpracovßnφ strßnky, kterß vy╛aduje spojenφ s SQL serverem. To znamenß, ╛e ka╛dΘ dφt∞, kterΘ otev°elo trvalΘ spojenφ, bude mφt otev°enΘ vlastnφ trvalΘ spojenφ se serverem. Pokud nap°φklad mßte 20 d∞tsk²ch proces∙, kterΘ spustily skript, kter² otev°el trvalΘ spojenφ s va╣φm SQL serverem, mßte 20 nezßvisl²ch spojenφ s SQL serverem, po jednom z ka╛dΘho dφt∞te.
V╣imn∞te si nicmΘn∞, ╛e to m∙╛e mφt nev²hody, pokud pou╛φvate databßzi s omezen²m poΦtem p°ipojenφ, kter² trvalß spojenφ d∞tφ p°ekroΦφ. Pokud mß va╣e databßze limit 16 souΦasn²ch p°ipojenφ, a v ru╣nΘm okam╛iku se pokusφ p°ipojit 17 d∞tsk²ch proces∙, jednomu se to nepoda°φ. Pokud mßte ve sv²ch skriptech chyby, kterΘ brßnφ zavφrßnφ spojenφ (nap°. nekoneΦnΘ smyΦky), databßze s pouh²mi 32 spojenφmi bude brzy zaplavena. Vyhledejte si v dokumentaci va╣φ databßze informace o obsluze opu╣t∞n²ch nebo neΦinn²ch spojenφ.
Varovßnφ |
Zde je n∞kolik dodateΦn²ch nßmitek, kterΘ se usadily v mysli b∞hem pou╛φvßnφ trval²ch spojenφ. Jedna z nich je, kdy╛ pou╛φvßte zamknutΘ tabulky p°i trvalΘm spojenφ a skript z jakΘhokoli d∙vodu nem∙╛e uvolnit zßmek, pak nßsledujφcφ skript, kter² pou╛φvß stejnΘ spojenφ, bude nejspφ╣e na trvalo zablokovßn a mo╛nß bude nutnΘ, abyste poka╛dΘ restartovali http server nebo databßzov² server. Dßle pak v p°φpad∞ pou╛itφ transakcφ se transakΦnφ blok p°enese i do dal╣φho skriptu pou╛φvajφcφho stejnΘ spojenφ, pokud jeho vykonßnφ konΦφ d°φve ne╛ transakΦnφ blok. V ka╛dΘm p°φpad∞ m∙╛ete pou╛φt register_shutdown_function() k registraci a jednoduchΘmu vyΦi╣t∞nφ funkce pro odemknutφ tabulek nebo zru╣enφ b∞╛φcφ transakce (roll back). NejlΘpe se problΘmu vyvarujete ·pln∞ nepou╛φvßnφm trval²ch spojenφ ve skriptech, ve kter²ch se zamykajφ tabulky nebo pou╛φvajφ transakce (m∙╛ete je stßle pou╛φvat na mnoh²ch dal╣φch mφstech). |
D∙le╛it² souhrn. Trvalß spojenφ byla navr╛ena tak, aby odpovφdala jedna k jednΘ normßlnφm spojenφm. To znamenß, ╛e byste v╛dy m∞li b²t schopni nahradit trvalß spojenφ netrval²mi beze zm∞ny fungovßnφ va╣eho skriptu. M∙╛e to (a pravd∞podobn∞ bude) mφt vliv na efektivitu tohoto skriptu, ale ne jeho chovßnφ!
Dßle takΘ: fbsql_pconnect(), ibase_pconnect(), ifx_pconnect(), imap_popen(), ingres_pconnect(), msql_pconnect(), mssql_pconnect(), mysql_pconnect(), OCIPLogon(), odbc_pconnect(), Ora_pLogon(), pfsockopen(), pg_pconnect() a sybase_pconnect().
BezpeΦn² re╛im PHP je pokus o °e╣enφ bezpeΦnosti sdφlen²ch server∙. Je architekturßln∞ nekorektnφ pokou╣et se °e╣it tento problΘm na ·rovni PHP, ale proto╛e °e╣enφ na ·rovni webovskΘho serveru a operaΦnφho systΘmu nejsou p°φli╣ realistickß, mnoho lidφ, zvla╣t∞ ISP, pou╛φvß nynφ bezpeΦn² re╛im.
KonfiguraΦnφ direktivy, kterΘ ovlßdajφ bezpeΦn² re╛im:
safe_mode = Off open_basedir = safe_mode_exec_dir = safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH disable_functions = |
Pokud je safe_mode zapnut², PHP kontroluje, je-li vlastnφk b∞╛φcφho skriptu vlastnφkem souboru, s nφm╛ se mß manipulovat. Nap°φklad:
-rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd |
<?php readfile('/etc/passwd'); ?> |
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2 |
Pokud namφsto safe_mode nastavφte adresß° open_basedir, potom v╣echny operace se soubory budou omezeny pod specifikovan² adresß°. Nap°φklad (p°φklad Apache httpd.conf):
<Directory /docroot> php_admin_value open_basedir /docroot </Directory> |
Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2 |
M∙╛ete takΘ vypnout jednotlivΘ funkce. Pokud p°idßme toto do souboru php.ini:
disable_functions readfile,system |
Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2 |
Toto je pravd∞podobn∞ ne·pln² a mo╛nß nesprßvn² p°ehled funkcφ omezen²ch v bezpeΦnΘm re╛imu.
Tabulka 22-1. Funkce omezenΘ v bezpeΦnΘm re╛imu
Funkce | Omezenφ |
---|---|
dbmopen() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
dbase_open() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
filepro() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
filepro_rowcount() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
filepro_retrieve() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
ifx_*() | sql_safe_mode restrictions, (!= safe mode) |
ingres_*() | sql_safe_mode restrictions, (!= safe mode) |
mysql_*() | sql_safe_mode restrictions, (!= safe mode) |
pg_loimport() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
posix_mkfifo() | Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
putenv() | Obeys the safe_mode_protected_env_vars and safe_mode_allowed_env_vars ini-directives. Viz takΘ dokumentaci putenv() |
move_uploaded_file() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
chdir() | Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
dl() | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. |
backtick operßtor | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. |
shell_exec() (funkΦnφ ekvivalent backticks) | Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny. |
exec() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir. Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru s programem komponenty ... |
system() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir. Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru s programem komponenty ... |
passthru() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir. Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru s programem komponenty ... |
popen() | M∙╛ete spou╣t∞t programy pouze uvnit° adresß°e safe_mode_exec_dir. Z praktick²ch d∙vod∙ nenφ momentßln∞ mo╛nΘ mφt v cest∞ k souboru s programem komponenty ... |
mkdir() | Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
rmdir() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
rename() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
unlink() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
copy() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pro source a target) |
chgrp() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
chown() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. |
chmod() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Navφc nem∙╛ete nastavovat SUID, SGID a sticky bit |
touch() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. |
symlink() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pozn.: testovßn je pouze cφl) |
link() | Kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript. Kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript. (pozn.: testovßn je pouze cφl) |
getallheaders() | V bezpeΦnΘm re╛imu nebudou hlaviΦky zaΦφnajφcφ 'authorization' (bez ohledu na velikost pφsmen) vraceny. Varovßnφ: toto nefunguje s aol-server implementacφ getallheaders()! |
JakΘkoli funkce kterΘ pou╛φvajφ php4/main/fopen_wrappers.c | ?? |
Mo╛nosti PHP p°i spou╣t∞nφ z p°φkazovΘ °ßdky p°inß╣ejφ mnoho u╛itku, pokud chcete ladit nebo testovat va╣e nastavenφ PHP, hodφ se v╣ak i pro p°φpady, kdy byste rßdi pou╛ili PHP pro jinΘ ·Φely ne╛ WWW skriptovßnφ.
Uv∞domte si, ╛e m∙╛ete v╛dy sm∞rovat v²stup programu PHP do vn∞j╣φho souboru pomocφ znaku >, tak╛e php -q test.php > test.html vytiskne v²stup test.php bez HTTP hlaviΦek do test.html ve stejnΘm adresß°i.
Mo╛nosti p°φkazovΘ °ßdky m∙╛ete vyu╛φvat pouze tehdy, mßte-li (spustiteln²) program PHP. Pokud jste zkompilovali pouze modul do serveru a nemßte na poΦφtaΦi ╛ßdnou CGI verzi, nem∙╛ete p°φkazovou °ßdku pou╛φvat. Pro u╛ivatele Windows je v binßrnφm balφΦku jak serverov² modul, tak spustiteln² soubor nazvan² php.exe.
Tento seznem voleb pro p°φkazovou °ßdku je konzistentnφ s PHP 4.0.6. Aktußlnφ seznam vΦetn∞ jedno°ßdkov²ch popis∙ m∙╛ete zφskat pomocφ parametru -h. V²stup php -h by m∞l vypadat p°ibli╛n∞ takto:
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] | {<file> [args...]} -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -f <file> Parse <file>. Implies `-q' -v Version number -C Do not chdir to the script's directory -c <path> Look for php.ini file in this directory -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -z <file> Load Zend extension <file>. -l Syntax check only (lint) -m Show compiled in modules -i PHP information -h This help |
Zde uvßdφme n∞kterΘ z nejd∙le╛it∞j╣φch voleb s detailnφm vysv∞tlenφm.
Tabulka 23-1. Volby pro p°φkazovou °ßdku
Volba | Popis |
---|---|
-q | PotlaΦφ v²stup HTTP hlaviΦek. Normßln∞ PHP tiskne HTTP hlaviΦky pro volajφcφ program (typicky WWW server) k p°edßnφ prohlφ╛eΦi. P°i pou╛itφ pro aplikace spou╣t∞nΘ z p°φkazovΘ °ßdky nemajφ hlaviΦky smysl. |
-s | Zobrazφ barevn∞ vysvφcen² zdrojov² soubor s dan²m nßzvem. Je to totΘ╛, jako kdy╛ se zdroj vytiskne pomocφ funkce highlight_file() v PHP skriptu. |
-f | Parsuje dan² soubor a hledß syntaktickΘ a fatßlnφ chyby. Tato volba implikuje -q. Pou╛ijte pro ladicφ ·Φely (debugging). |
-v | Zavolßnφm PHP s tφmto p°epφnaΦem si m∙╛ete vypsat Φφslo verze, nap°. 4.0.6. |
-C | Za normßlnφch okolnostφ PHP m∞nφ pracovnφ adresß° na ten, kde se nachßzφ spou╣t∞n² skript. To nap°φklad umo╛≥uje otvφrat soubory ve stejnΘm adresß°i urΦenφm pouhΘho nßzvu souboru (bez cesty). Pokud byste toto cht∞li potlaΦit, pou╛ijte tuto volbu. |
-c | Pou╛itφm tohoto argumentu m∙╛ete specifikovat alternativnφ umφst∞nφ souboru php.ini, tak╛e PHP bude hledat konfiguraΦnφ soubor zde namφsto implicitnφho umφst∞nφ. |
-d | Touto volbou m∙╛ete provΘst individußlnφ nastavenφ php.ini b∞hem provßd∞nφ skriptu. |
-l | Otestuje dan² soubor na syntaktickΘ chyby. Tato volba implikuje -q. Pou╛ijte ji pro ·Φely lad∞nφ. Nebudou se hledat fatßlnφ chyby (jako jsou nedefinovanΘ funkce). Pokud chcete hledat i fatßlnφ chyby, pou╛ijte -f. |
-m | Pou╛itφm tΘto volby PHP vypφ╣e zabudovanΘ (a naΦtenΘ) PHP a Zend moduly, Φφsla verzφ PHP a Zend, a takΘ krßtkou informaci o autorsk²ch prßvech k jßdru Zend. |
-i | Tento p°epφnaΦ zavolß funkci phpinfo() a vypφ╣e jejφ v²sledek. Pokud PHP nepracuje sprßvn∞, je dobrΘ spustit php -i a podφvat se, zda se nevypsala n∞jakß chybovß hlß╣enφ p°ed nebo uvnit° informaΦnφch tabulek. |
-h | Touto volbou zφskßte informace o aktußlnφch volbßch p°φkazovΘ °ßdky a jedno°ßdkovΘ popisy o tom, co d∞lajφ. |
Spustitelnß verze PHP m∙╛e b²t pou╛ita pro spou╣t∞nφ skript∙ absolutn∞ nezßvisle na webovskΘm serveru. Pokud jste na unixovΘm systΘmu, m∙╛ete do PHP skriptu p°idat specißlnφ prvnφ °ßdek a ud∞lat z n∞j spustiteln² program - systΘm bude v∞d∞t, jak² program by m∞l skript zpracovßvat. Na Windows m∙╛ete asociovat php.exe -q se souborovou p°φponou .php (pro spou╣t∞nφ dvojklikem), nebo m∙╛ete vytvo°it dßvkov² soubor pro spu╣t∞nφ skriptu p°es PHP. Prvnφ °ßdek skriptu pro prßci v Unixu nebude ve Windows vadit, tak╛e tφmto zp∙sobem m∙╛ete psßt programy pro vφce platforem. Jednoduch² p°φklad psanφ PHP programu pro p°φkazovou °ßdku je uveden nφ╛e.
P°φklad 23-1. Skript urΦen² ke spou╣t∞nφ z p°φkazovΘ °ßdky (script.php)
|
Ve v²╣e uvedenΘm skriptu jsme pou╛ili specißlnφ prvnφ °ßdek k indikaci, ╛e by tento soubor m∞l b²t spou╣t∞n pomocφ PHP a nem∞l by vypisovat HTTP hlaviΦky. Jsou zde dv∞ prom∞nnΘ, kterΘ m∙╛ete pou╛φt p°i psanφ aplikacφ pro PHP spou╣t∞n²ch z p°φkazovΘ °ßdky: $argc a $argv. Prvnφ z nich je poΦet argument∙ + 1 (nßzev b∞╛φcφho skriptu). Druhß je pole obsahujφcφ argumenty, poΦφnaje nßzvem skriptu jako Φφslo 0 ($argv[0]).
V ukßzkovΘm programu se testuje, zda je argument∙ vφce Φi mΘn∞ ne╛ jeden. Pokud by argument byl --help, -help, -h nebo -?, vytiskne se nßpov∞da k programu vΦetn∞ skuteΦnΘho nßzvu skriptu. Pokud by byly p°idßny n∞jakΘ dal╣φ argumenty, vytisknou se na v²stup.
Pokud byste cht∞li spou╣t∞t uveden² skript pod Unixem, musφte ho ud∞lat spustiteln²m (nastavit prßva pro spou╣t∞nφ), a pak jednodu╣e napsat script.php vypis_tohle nebo script.php -h. Na Windows musφte pro tento ·kol vytvo°it dßvkov² soubor:
Za p°edpokladu, ╛e jste v²╣e uveden² program nazvali script.php a soubor php.exe mßte ulo╛en² jako c:\php\php.exe, m∙╛ete tento dßvkov² soubor spou╣t∞t takto: script.bat echothis nebo script.bat -h.
Viz takΘ dokumentaci roz╣φ°enφ Readline, kde najdete vφce funkcφ pro pou╛itφ k aplikacφm PHP spou╣t∞n²ch z p°φkazovΘ °ßdky.
The behaviour of the Apache PHP module is affected by settings in php.ini. Configuration settings from php.ini may be overridden by php_flag settings in the server configuration file or local .htaccess files.
Tabulka 1. Apache configuration options
Name | Default | Changeable | Function |
---|---|---|---|
engine | On | PHP_INI_ALL | turns PHP parsing on or off |
child_terminate | Off | PHP_INI_ALL | specify whether PHP scripts may request child process termination on end of request, see also apache_child_terminate() |
last_modified | Off | PHP_INI_ALL | send PHP scripts modification date as Last-Modified: header for this request |
xbithack | Off | PHP_INI_ALL | parse files with executable bit set as PHP regardless of their file ending |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
This directive is really only useful in the Apache module version of PHP. It is used by sites that would like to turn PHP parsing on and off on a per-directory or per-virtual server basis. By putting engine off in the appropriate places in the httpd.conf file, PHP can be enabled or disabled.
apache_child_terminate() will register the Apache process executing the current PHP request for termination once execution of PHP code it is completed. It may be used to terminate a process after a script with high memory consumption has been run as memory will usually only be freed internally but not given back to the operating system.
Poznßmka: The availability of this feature is controlled by the php.ini directive child_terminate, which is set to off by default.
This feature is also not available on multithreaded versions of apache like the win32 version.
See also exit().
apache_get_version() returns the version of Apache as string, or FALSE on failure.
See also phpinfo().
(PHP 3>= 3.0.4, PHP 4 )
apache_lookup_uri -- Provßdφ ΦßsteΦn² po╛adavek na zadanou URI a vracφ v╣echno info o nφTato funkce provßdφ ΦßsteΦn² po╛adavek na URI. Jde jen tak daleko, aby zφskala v╣echny d∙le╛itΘ informace o danΘm zdroji a vracφ tyto informace ve t°φd∞. Vlastnosti tΘto t°φdy jsou:
status |
the_request |
status_line |
method |
content_type |
handler |
uri |
filename |
path_info |
args |
boundary |
no_cache |
no_local_copy |
allowed |
send_bodyct |
bytes_sent |
byterange |
clength |
unparsed_uri |
mtime |
request_time |
Poznßmka: apache_lookup_uri() pouze, pokud je PHP nainstalovßno jako modul Apache.
apache_note() je funkce specifickß pro Apache, kterß zφskßvß a nastavuje hodnoty v tabulce poznßmek po╛adavku. P°i volßnφ s jednφm argumentem vracφ souΦasnou hodnotu poznßmky note_name. P°i volßnφ se dv∞ma argumenty nastavuje hodnotu poznßmky note_name na note_value, a vracφ p°edchozφ hodnotu poznßmky note_name.
apache_request_headers() returns an associative array of all the HTTP headers in the current request. This is only supported when PHP runs as an Apache module.
Poznßmka: Prior to PHP 4.3.0, apache_request_headers() was called getallheaders(). After PHP 4.3.0, getallheaders() is an alias for apache_request_headers().
Poznßmka: You can also get at the value of the common CGI variables by reading them from the environment, which works whether or not you are using PHP as an Apache module. Use phpinfo() to see a list of all of the available environment variables.
Poznßmka: From PHP 4.3.3 on you can use this function with the NSAPI server module in Netscape/iPlanet/SunONE webservers, too.
See also apache_response_headers().
Returns an array of all Apache response headers. This functionality is only available in PHP version 4.3.0 and greater.
Poznßmka: From PHP 4.3.3 on you can use this function with the NSAPI server module in Netscape/iPlanet/SunONE webservers, too.
See also apache_request_headers(), and headers_sent().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ascii2ebcdic() je funkce specifickß pro Apache dostupnß pouze na operaΦnφch systΘmech zalo╛en²ch na EBCDIC (OS/390, BS2000). P°eklßdß (binßrn∞ bezpeΦn∞) °e╛∞zec v ASCII k≤dovßnφ ascii_str na jeho ekvivalentnφ EBCDIC reprezentaci, a vracφ v²sledek.
Viz takΘ opaΦnou funkci ebcdic2ascii()
ebcdic2ascii() je funkce specifickß pro Apache dostupnß pouze na operaΦnφch systΘmech zalo╛en²ch na EBCDIC (OS/390, BS2000). P°eklßdß (binßrn∞ bezpeΦn∞) °e╛∞zec v k≤dovßnφ EBCDIC ascii_str na jeho ekvivalentnφ ASCII reprezentaci, a vracφ v²sledek.
Viz takΘ opaΦnou funkci ascii2ebcdic()
Tato funkce vracφ asociativnφ pole v╣ech HTTP hlaviΦek v souΦasnΘm po╛adavku.
Poznßmka: Hodnotu b∞╛n²ch CGI prom∞nn²ch m∙╛ete takΘ zφskat tφm, ╛e je p°eΦtete z prost°edφ, co╛ funguje, a╗ pou╛φvßte PHP jako modu Apache nebo ne. Pokud chcete vid∞t seznam v╣ech systΘmov²ch prom∞nn²ch definovan²ch tφmto zp∙sobem, pou╛ijte phpinfo().
Tento p°φklad zobrazφ v╣echny hlaviΦky souΦasnΘho po╛adavku.
Poznßmka: getallheaders() je v souΦasnosti podporovßna jen kdy╛ PHP b∞╛φ jako modul Apache.
virtual() je funkce specifickß pro Apache ekvivalentnφ s <!--#include virtual...--> v mod_include. Provßdφ sub-po╛adavek Apache. Je u╛iteΦnß pro vklßdßnφ CGI skript∙ nebo .shtml soubor∙, nebo Φehokoliv jinΘho, co mß Apache parsovat. CGI skripty musφ generovat platnΘ CGI hlaviΦky. To znamenß, ╛e musφ p°inejmen╣φm generovat Content-type hlaviΦku. Pro PHP soubory musφte pou╛φt include() nebo require(); virtual() se nedß pou╛φt k vlo╛enφ dokumentu, kter² je sßm PHP skriptem.
Tyto funkce vßm umo╛≥ujφ manipulovat a interagovat r∙zn²mi zp∙soby s poli. Pole jsou nezbytnß pro uklßdßnφ a prßci se sadami prom∞nn²ch.
Podporovßna jsou jednoduchß a vφcerozm∞rnß pole; vytvß°et se dajφ u╛ivatelsky i jako v²stup funkce. Existujφ databßzovΘ funkce na pln∞nφ polφ v²sledky databßzov²ch dotaz∙, a n∞kolik dal╣φch funkcφ vracφ pole.
Viz takΘ Φßst manußlu pole pro detailnφ popis toho, jak jsou pole v PHP implementovßny a jak se pou╛φvajφ.
Konstanty z tohoto seznamu jsou v╛dy dostupnΘ jako souΦßst jßdra PHP.
CASE_LOWER is used with array_change_key_case() and is used to convert array keys to lower case. This is also the default case for array_change_key_case().
CASE_UPPER is used with array_change_key_case() and is used to convert array keys to upper case.
Sorting order flags:
SORT_ASC is used with array_multisort() to sort in ascending order.
SORT_DESC is used with array_multisort() to sort in descending order.
Sorting type flags: used by various sort functions
(PHP 4 >= 4.2.0)
array_change_key_case -- Returns an array with all string keys lowercased or uppercasedarray_change_key_case() changes the keys in the input array to be all lowercase or uppercase. The change depends on the last optional case parameter. You can pass two constants there, CASE_UPPER and CASE_LOWER. The default is CASE_LOWER. The function will leave number indices as is.
If an array has indices that will be the same once run through this function (e.g. "keY" and "kEY"), the value that is later in the array will override other indices.
array_chunk() splits the array into several arrays with size values in them. You may also have an array with less values at the end. You get the arrays as members of a multidimensional array indexed with numbers starting from zero.
By setting the optional preserve_keys parameter to TRUE, you can force PHP to preserve the original keys from the input array. If you specify FALSE new number indices will be used in each resulting array with indices starting from zero. The default is FALSE.
P°φklad 1. array_chunk() example
The printout of the above program will be:
|
(PHP 5 CVS only)
array_combine -- Creates an array by using one array for keys and another for its valuesReturns an array by using the values from the keys array as keys and the values from the values array as the corresponding values.
Returns FALSE if the number of elements for each array isn't equal or if the arrays are empty.
See also array_merge(), array_walk(), and array_values().
array_count_values() vracφ pole pou╛φvajφcφ hodnoty z input jako klφΦe a jejich Φetnosti v input jako hodnoty.
array_diff_assoc() returns an array containing all the values from array1 that are not present in any of the other arguments. Note that the keys are used in the comparison unlike array_diff().
In our example above you see the "a" => "green" pair is present in both arrays and thus it is not in the ouput from the function. Unlike this, the pair 0 => "red" is in the ouput because in the second argument "red" has key which is 1.
Two values from key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In other words a strict check takes place so the string representations must be the same.
Poznßmka: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_diff_assoc($array1[0], $array2[0]);.
See also array_diff(), array_intersect(), and array_intersect_assoc().
(no version information, might be only in CVS)
array_diff_uassoc -- Computes the difference of arrays with additional index check which is performed by a user supplied callback function.array_diff_uassoc() returns an array containing all the values from array1 that are not present in any of the other arguments. Note that the keys are used in the comparison unlike array_diff(). This comparison is done by a user supplied callback function. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. This is unlike array_diff_assoc() where an internal function for comparing the indices is used.
P°φklad 1. array_diff_uassoc() example
The result is:
|
In our example above you see the "a" => "green" pair is present in both arrays and thus it is not in the ouput from the function. Unlike this, the pair 0 => "red" is in the ouput because in the second argument "red" has key which is 1.
The equality of 2 indices is checked by the user supplied callback function.
Poznßmka: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_diff_uassoc($array1[0], $array2[0], "key_compare_func");.
See also array_diff(), array_diff_assoc(), array_udiff(), array_udiff_assoc(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() and array_uintersect_uassoc().
array_diff() vracφ pole obsahujφcφ v╣echny hodnoty z array1, kterΘ se nevyskytujφ v ╛ßdnΘm z dal╣φch argument∙. KlφΦe jsou zachovßny.
$result obsahuje array ("blue");
Viz takΘ: array_intersect().
array_fill() fills an array with num entries of the value of the value parameter, keys starting at the start_index parameter. Note that num must be a number greater than zero, or PHP will throw a warning.
See also str_repeat() and range().
array_filter() iterates over each value in the input array passing them to the callback function. If the callback function returns true, the current value from input is returned into the result array. Array keys are preserved.
P°φklad 1. array_filter() example
The printout of the program above will be:
|
Users may not change the array itself from the callback function. e.g. Add/delete an element, unset the array that array_filter() is applied to. If the array is changed, the behavior of this function is undefined.
If the callback function is not supplied, array_filter() will remove all the entries of input that are equal to FALSE. See converting to boolean for more information.
See also array_map(), array_reduce(), and array_walk().
(PHP 4 >= 4.3.0)
array_intersect_assoc -- Computes the intersection of arrays with additional index checkarray_intersect_assoc() returns an array containing all the values of array1 that are present in all the arguments. Note that the keys are used in the comparison unlike in array_intersect().
In our example you see that only the pair "a" => "green" is present in both arrays and thus is returned. The value "red" is not returned because in $array1 it's key is 0 while the key of "red" in $array2 is 1.
The two values from the key => value pairs are considered equal only if (string) $elem1 === (string) $elem2 . In otherwords a strict type check is executed so the string representation must be the same.
See also array_intersect(), array_diff() and array_diff_assoc().
array_intersect() vracφ pole obsahujφcφ v╣echny hodnoty z array1, kterΘ se vyskytujφ ve v╣ech argumentech. KlφΦe jsou zachovßny.
$result obsahuje array ("a" => "green", "red");
Viz takΘ: array_diff().
array_key_exists() returns TRUE if the given key is set in the array. key can be any value possible for an array index.
Poznßmka: The name of this function is key_exists() in PHP version 4.0.6.
See also isset(), array_keys(), and in_array().
array_keys() vracφ klφΦe, numerickΘ i textovΘ, z pole input.
Pokud je p°φtomen voliteln² argument search_value, vracφ pouze klφΦe tΘto hodnoty. Jinak vracφ v╣echny klφΦe z pole input.
P°φklad 1. Ukßzka array_keys()
|
Poznßmka: Tato funkce byla p°idßna v PHP 4, dßle je uvedena implementace pro ty, kte°φ stßle pou╛φvajφ PHP 3.
Viz takΘ: array_values().
array_map() returns an array containing all the elements of arr1 after applying the callback function to each one. The number of parameters that the callback function accepts should match the number of arrays passed to the array_map()
P°φklad 2. array_map() - using more arrays
This results:
|
Usually when using two or more arrays, they should be of equal length because the callback function is applied in parallel to the corresponding elements. If the arrays are of unequal length, the shortest one will be extended with empty elements.
An interesting use of this function is to construct an array of arrays, which can be easily performed by using NULL as the name of the callback function
The printout of the program above will be:
Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) ) |
See also array_filter(), array_reduce(), and array_walk().
array_merge_recursive() slouΦφ prvky dvou nebo vφce polφ tak, ╛e hodnoty pole se p°ipojφ na konec p°edchozφho pole. Vracφ v²slednΘ pole.
Pokud obsahujφ vstupnφ pole stejn² textov² klφΦ, hodnoty t∞chto klφΦ∙ se rekurzivn∞ slouΦφ do pole tak, ╛e pokud je jedna z hodnot sama pole, tato funkce ji takΘ slouΦφ s odpovφdajφcφ polo╛kou z dal╣φho pole. Pokud ale tato pole majφ stejn² Φφseln² klφΦ, pozd∞j╣φ hodnota nep°epφ╣e tu d°φv∞j╣φ, ale p°ipojφ se.
V²slednΘ pole bude array ("color" => array ("favorite" => array ("red", "green"), "blue"), 5, 10).
Viz takΘ: array_merge().
array_merge() slouΦφ prvky dvou nebo vφce polφ dohromady tak, ╛e hodnoty ka╛dΘho pole se p°ipojφ na konec p°edchozφho. Vracφ v²slednΘ pole.
Pokud majφ vstupnφ pole stejn² textov² klφΦ, pozd∞j╣φ hodnota p°epφ╣e d°φv∞j╣φ hodnotu. Pokud ale majφ stejn² Φφseln² klφΦ, pozd∞j╣φ hodnota tu p·vodnφ nep°epφ╣e, ale p°ipojφ se k nφ.
V²slednΘ pole bude array("color" => "green", 2, 4, "a", "b", "shape" => "trapezoid", 4).
Viz takΘ: array_merge_recursive().
array_multisort() se dß vyu╛φt k t°φd∞nφ n∞kolika polφ najednou nebo k t°φd∞nφ vφcerozm∞rnΘho pole XXX according by one of more dimensions. P°i t°φd∞nφ udr╛uje asociace klφΦ∙.
Vstupnφ pole jsou manipulovßna jako sloupce tabulky, kterß se mß t°φdit podle °ßdk∙ - p°ipomφnß to funkcionalitu SQL klauzule ORDER BY. Prvnφ pole je to, podle kterΘho se bude t°φdit. ╪ßdky (hodnoty) v tomto poli that compare the same are sorted by the next input array, and so on.
Struktura argument∙ tΘto funkce je trochu neobvyklß, ale pru╛nß. Prvnφ argument musφ b²t pole. Ka╛d² dal╣φ argument m∙╛e b²t bu∩ pole nebo jeden z p°φznak z nßsledujφcφch seznam∙:
P°φznaky sm∞ru t°φd∞nφ:
SORT_ASC - t°φdit vzestupn∞
SORT_DESC - t°φdit sestupn∞
P°φznaky typu t°φd∞nφ:
SORT_REGULAR - porovnßvat polo╛ky normßln∞
SORT_NUMERIC - porovnßvat polo╛ky Φφseln∞
SORT_STRING - porovnßvat polo╛ky jako °et∞zce
Po ka╛dΘm poli m∙╛ete specifikovat jeden p°φznak ka╛dΘho typu. P°φznaky t°φd∞nφ specifikovanΘ po ka╛dΘm poli platφ pouze pro toto pole - pro dal╣φ pole se resetujφ na defaultnφ SORT_ASC a SORT_REGULAR.
P°i ·sp∞chu vracφ TRUE, p°i selhßnφ FALSE.
V tΘto ukßzce bude po set°φd∞nφ prvnφ pole obsahovat 10, "a", 100, 100. DruhΘ pole bude obsahovat 1, 1, 2, "3". Polo╛ky druhΘho pole odpovφdajφcφ identick²m polo╛kßm v prvnφm poli (100 a 100) byly takΘ set°φd∞ny.
V tΘto ukßzce bude po set°φd∞nφ prvnφ pole obsahovat 10, 100, 100, "a" (bylo t°φd∞no vzestupn∞ jako °et∞zce) a druhΘ pole bude obsahovat 1, 3, "2", 1 (t°φd∞no jako Φφsla, sestupn∞).
array_pad() vracφ kopii pole input dopln∞nou na velikost pad_size hodnotou pad_value. Pokud je pad_size kladnß, pole je dopln∞no zprava, pokud je negativnφ, zleva. Pokud je absolutnφ hodnota pad_size men╣φ nebo rovna velikosti input, k dopln∞nφ nedojde.
array_pop() odstranφ a vrßtφ poslednφ hodnotu pole array, Φφm╛ ho zkrßtφ o jeden prvek.
$stack mß te∩ pouze dva prvky: "orange" a "apple", a $fruit obsahuje "raspberry".
Viz takΘ: array_push(), array_shift() a array_unshift().
array_push() p°ipojuje p°edanΘ prom∞nnΘ na konec array. DΘlka array se zv∞t╣uje o poΦet p°idan²ch prom∞nn²ch. ┌Φinek je stejn² jako:
$array[] = $var; |
Vracφ nov² poΦet prvk∙ v poli.
V²sledkem tΘto ukßzky by byl $stack obsahujφcφ 4 prvky: 1, 2, "+" a 3.
Viz takΘ: array_pop(), array_shift() a array_unshift().
array_rand() je pom∞rn∞ u╛iteΦnß, kdy╛ chcete z pole vybrat nßhodn∞ jednu nebo vφce hodnot. P°ijφmß pole input a voliteln² argument num_req, kter² urΦuje, kolik polo╛ek chcete. Jeho defaultnφ hodnota je 1.
Pokud vybφrßte pouze jednu polo╛ku, array_rand() vracφ klφΦ nßhodnΘ polo╛ky. Jinak vracφ pole klφΦ∙ nßhodn∞ vybran²ch polo╛ek. Takto m∙╛ete vybφrat nßhodn∞ hodnoty i klφΦe.
Nezapome≥te inicializovat generßtor nßhodn²ch Φφsel pomocφ srand().
(PHP 4 >= 4.0.5)
array_reduce -- Iteratively reduce the array to a single value using a callback functionarray_reduce() applies iteratively the function function to the elements of the array input, so as to reduce the array to a single value. If the optional initial is available, it will be used at the beginning of the process, or as a final result in case the array is empty.
This will result in $b containing 15, $c containing 1200 (= 1*2*3*4*5*10), and $d containing 1.
See also array_filter(), array_map(), array_unique(), and array_count_values().
array_reverse() takes input array and returns a new array with the order of the elements reversed, preserving the keys if preserve_keys is TRUE.
$result te∩ obsahuje array (array ("green", "red"), 4.0, "php"). Ale $result2[0] je stßle "php".
Poznßmka: Druh² argument byl p°idßn v PHP 4.0.3.
(PHP 4 >= 4.0.5)
array_search -- Searches the array for a given value and returns the corresponding key if successfulSearches haystack for needle and returns the key if it is found in the array, FALSE otherwise.
Poznßmka: If needle is a string, the comparison is done in a case-sensitive manner.
Poznßmka: Prior to PHP 4.2.0, array_search() returns NULL on failure instead of FALSE.
If the optional third parameter strict is set to TRUE then the array_search() will also check the types of the needle in the haystack.
If needle is found in haystack more than once, the first matching key is returned. To return the keys for all matching values, use array_keys() with the optional search_value parameter instead.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
See also array_keys(), array_values(), array_key_exists(), and in_array().
array_shift() vracφ prvnφ polo╛ku array a odstranφ ji, Φφm╛ zkrßtφ array o jeden prvek a ostatnφ posune dol∙.
$args te∩ mß jeden prvek: "-f" a $opt je "-v".
Viz takΘ: array_unshift(), array_push() a array_pop().
array_slice() vracφ sekvenci prvk∙ array urΦen²ch argumenty offset a length.
Pokud je offset kladn², tato sekvence zaΦne offset polo╛ek od zaΦßtku array. Pokud je offset zßporn², tato sekvence zaΦne tolik polo╛ek od konce array.
Pokud je length kladnß, tato sekvence bude obsahovat tolik prvk∙. Pokud je length zßpornß, tato sekvence skonΦφ tolik prvk∙ od konce array. Pokud length vynechßte, tato sekvence bude obsahovat v╣echny prvky array od offset do konce.
P°φklad 1. Ukßzka array_slice()
|
Viz takΘ: array_splice().
array_splice() odstra≥uje prvky pole input urΦenΘ argumenty offset a length, a p°φpadn∞ je nahrazuje prvky volitelnΘho argumentu (pole) replacement.
Pokud je offset kladn², tato odstran∞nß Φßst zaΦne offset polo╛ek od zaΦßtku array. Pokud je offset zßporn², zaΦne tolik polo╛ek od konce array.
Pokud vynechßte length, array_splice() odstranφ v╣echno od offset do konce pole. Pokud je length kladnß, odstranφ se prßv∞ tolik prvk∙. Pokud je length zßpornß, konec odstran∞nΘ Φßsti bude prßv∞ tolik prvk∙ od konce pole. Tip: k odstran∞nφ v╣ech prvk∙ od offset do konce pole p°i souΦasn∞ urΦenΘm argumentu replacement pou╛ijte jako length count($input).
Pokud zadßte replacement pole, odstran∞nΘ prvky se nahradφ prvky tohoto pole. Pokud argumenty offset a length definovßny tak, ╛e se nic neodstranφ, prvky pole replacement se vlo╛φ na mφsto urΦenΘ argumentem offset. Tip: pokud je replacement jen jedna hodnota, nenφ nutno ji umis╗ovat do array(), leda╛e chcete, aby tato polo╛ka byla opravdu pole.
Nßsledujφcφ volßnφ jsou ekvivalentnφ:
array_push ($input, $x, $y) array_splice ($input, count ($input), 0, array ($x, $y)) array_pop ($input) array_splice ($input, -1) array_shift ($input) array_splice ($input, 0, 1) array_unshift ($input, $x, $y) array_splice ($input, 0, 0, array ($x, $y)) $a[$x] = $y array_splice ($input, $x, 1, $y) |
Vracφ pole odstran∞n²ch prvk∙.
P°φklad 1. Ukßzky array_splice()
|
Viz takΘ: array_slice().
array_sum() returns the sum of values in an array as an integer or float.
Poznßmka: PHP versions prior to 4.2.1 modified the passed array itself and converted strings to numbers (which most of the time converted them to zero, depending on their value).
(no version information, might be only in CVS)
array_udiff_assoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function.array_udiff_assoc() returns an array containing all the values from array1 that are not present in any of the other arguments. Note that the keys are used in the comparison unlike array_diff() and array_udiff(). The comparison of arrays' data is performed by using an user-supplied callback. In this aspect the behaviour is opposite to the behaviour of array_diff_assoc() which uses internal function for comparison.
P°φklad 1. array_udiff_assoc() example
The result is:
|
In our example above you see the "1" => new cr(4) pair is present in both arrays and thus it is not in the ouput from the function.
For comparison is used the user supplied callback function. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
Poznßmka: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");.
See also array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() and array_uintersect_uassoc().
(no version information, might be only in CVS)
array_udiff_uassoc -- Computes the difference of arrays with additional index check. The data is compared by using a callback function. The index check is done by a callback function alsoarray_udiff_uassoc() returns an array containing all the values from array1 that are not present in any of the other arguments. Note that the keys are used in the comparison unlike array_diff() and array_udiff(). The comparison of arrays' data is performed by using an user-supplied callback : data_compare_func. In this aspect the behaviour is opposite to the behaviour of array_diff_assoc() which uses internal function for comparison. The comparison of keys (indices) is done also by the callback function key_compare_func. This behaviour is unlike what array_udiff_assoc() does, since the latter compares the indices by using an internal function.
P°φklad 1. array_udiff_uassoc() example
The result is:
|
In our example above you see the "1" => new cr(4) pair is present in both arrays and thus it is not in the ouput from the function. Keep in mind that you have to supply 2 callback functions.
For comparison is used the user supplied callback function. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
Poznßmka: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");.
See also array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_assoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() and array_uintersect_uassoc().
(no version information, might be only in CVS)
array_udiff -- Computes the difference of arrays by using a callback function for data comparison.array_udiff() returns an array containing all the values of array1 that are not present in any of the other arguments. Note that keys are preserved. For the comparison of the data data_compare_func is used. It must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second. This is unlike array_diff() which uses an internal function for comparing the data.
P°φklad 1. array_udiff() example
The result is:
|
Poznßmka: Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same.
Poznßmka: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_udiff($array1[0], $array2[0], "data_compare_func");.
See also array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff_assoc(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() and array_uintersect_uassoc().
array_unique() p°ijφmß pole array a vracφ novΘ pole bez duplicitnφch hodnot. KlφΦe jsou zachovßny.
$result te∩ obsahuje array ("a" => "green", "red", "blue");.
array_unshift() p°ipojφ p°edanΘ prvky na zaΦßtek array. V╣echny prvky jsou p°idßny jako celek, Φili p°idanΘ prvky si zachovßvajφ po°adφ.
vracφ nov² poΦet prvk∙ v array.
$queue bude mφt 5 prvk∙: "p4", "p5", "p6", "p1" a "p3".
Viz takΘ: array_shift(), array_push() a array_pop().
Aplikuje funkci func na v╣echny prvky pole arr. Funkci func se jako prvnφ argument p°edß hodnota a jako druh² klφΦ. Pokud je p°φtomen argument userdata, bude u╛ivatelskΘ funkci p°edßn jako t°etφ argument.
Pokud func vy╛aduje vφce ne╛ dva nebo t°i argumenty (v zßvislosti na userdata), pro ka╛dΘ volßnφ func z array_walk() se vygeneruje varovßnφ. Tato varovßnφ se dajφ potlaΦit p°idßnφm znaku '@' p°ed volßnφ array_walk() nebo pomocφ error_reporting().
Poznßmka: Pokud func pot°ebuje pracovat p°φmo s dan²m polem, prvnφ argument func se musφ p°edßvat odkazem. V╣echny zm∞ny t∞chto hodnot se pak promφtnou p°φmo v arr.
Poznßmka: Druh² a t°etφ argument func byly p°idßny v PHP 4.0.
V PHP 4 je t°eba volat podle pot°eby reset(), proto╛e array_walk() sama vstupnφ pole neresetuje.
P°φklad 1. Ukßzka array_walk()
|
Vracφ pole argument∙. Argument∙m m∙╛e b²t p°i°azen index pomocφ operßtoru =>.
Poznßmka: array() je jazykov² konstrukt pou╛φvan² k reprezentaci polφ, nikoliv b∞╛nß funkce.
Syntaxe "index => hodnota", s Φßrko jako odd∞lovaΦem, definuje indexy a hodnoty. Index m∙╛e b²t °et∞zec nebo Φφslo. Pokud se index vynechß, automaticky se generuje Φφseln² index zaΦφnajφcφ na 0. Pokud je index integer, dal╣φ generovan² index bude nejvy╣╣φ celoΦφseln² index + 1. Pozn.: pokud jsou definovßny dva identickΘ indexy, prvnφ se p°epφ╣e poslednφm.
Nßsledujφcφ ukßzka demonstruje jak vytvo°it dvourozm∞rnΘ pole, jak urΦit klφΦe v asociativnφch polφch, a jak p°eskakovat ΦφselnΘ indexy v normßlnφch polφch.
Tato ukßzka vytvo°φ pole ΦφslovanΘ od 1.
Viz takΘ: list().
arsort() t°φdφ pole tak, ╛e indexy pole si zachovßvajφ korelace s prvky, se kter²mi jsou asociovßny. Toto je u╛iteΦnΘ hlavn∞ p°i t°φd∞nφ asociativnφch polφ, kde je po°adφ prvk∙ signifikantnφ.
Tato ukßzka zobrazφ:
Ovoce bylo sestupn∞ set°φd∞no podle abecedy, a indexy asociovanΘ s jednotliv²mi prvky byly zachovßny.
Chovßnφ t°φd∞nφ m∙╛ete upravit pomocφ volitelnΘho argumentu sort_flags, detaily viz sort().
asort() t°φdφ pole tak, ╛e si indexy zachovajφ corelace s prvky, se kter²mi jsou spojeny. To je u╛iteΦnΘ hlavn∞ p°i t°φd∞nφ asociativnφch polφ, u kter²ch je po°adφ prvk∙ signifikantnφ.
Tato ukßzka zobrazφ:
Ovoce bylo set°φd∞no podle abecedy a indexy spojenΘ s jednotliv²mi prvky byly zachovßny.
Chovßnφ t°φd∞nφ m∙╛ete upravit pomocφ volitelnΘho argumentu sort_flags, detaily viz sort().
compact() p°ijφmß prom∞nn² poΦet argument∙. Ka╛d² argument m∙╛e b²t bu∩ °et∞zec obsahujφcφ nßzev prom∞nnΘ nebo pole nßzv∙ prom∞nn²ch. Toto pole m∙╛e takΘ obsahovat pole nßzv∙ prom∞nn²ch∙; compact() je rekurzivn∞ zpracuje.
Pro ka╛d² z °et∞zc∙ compact() vyhledß v aktivnφ symbolovΘ tabulce prom∞nnou tohoto jmΘna a p°idß ji do v²slednΘho pole tak, ╛e nßzev tΘto prom∞nnΘ se stane klφΦem a obsah tΘto prom∞nnΘ hodnotou tohoto klφΦe. StruΦn∞ °eΦeno, d∞lß prav² opak toho, co extract(). Vracφ pole obsahujφcφ v╣echny tyto prom∞nnΘ.
╪et∞zce, kterΘ neobsahujφ nßzvy platn²ch prom∞nn²ch se p°eskoΦφ.
Viz takΘ: extract().
Vracφ poΦet prvk∙ v var, kterß je typicky pole (jeliko╛ v╣echno ostatnφ mß jeden prvek).
Vracφ 1, pokud var nenφ pole.
Vracφ 0, pokud var nenφ inicializovßna.
Varovßnφ |
count() vracφ 0 pro prom∞nnΘ, kterΘ nejsou inicializovßny, ale vracφ takΘ 0 pro prom∞nnΘ, kterΘ obsahujφ prßzdnΘ pole. Pokud pot°ebujete zjistit, jestli dotyΦnß prom∞nnß existuje, pou╛ijte isset(). |
Viz takΘ: sizeof(), isset() a is_array().
Ka╛dΘ pole mß vnit°nφ ukazatel na jeho "souΦasny" prvek, kter² se inicializuje na prvnφ prvek vlo╛en² do tohoto pole.
current() vracφ prvek, na kter² tento internφ ukazatel prßv∞ ukazuje. Nijak tento ukazatel nem∞nφ. Pokud teto vnit°nφ ukazatel ukazuje za konec seznamu prvk∙, current() returns FALSE.
Varovßnφ |
Pokud toto pole obsahuje prßzdnΘ prvky (0 nebo "", prßzdn² °et∞zec), tato funkce pro tyto prvky takΘ vrßtφ FALSE. Je proto nemo╛nΘ urΦit pomocφ current(), jestli jste opravdu na konci pole. To properly traverse an array that may contain empty elements, use the each() function. |
Vracφ souΦasn² klφΦ/hodnota pßr z pole array a posune internφ ukazatel pole. Tento pßr se vracφ jako pole Φty° prvk∙ s klφΦi 0, 1, key a value. Prvky 0 a key obsahujφ nßzev klφΦe tohoto prvku pole a 1 a value obsahujφ hodnotu.
Pokud internφ ukazatel pole ukazuje za konec tohoto pole, each() vracφ FALSE.
P°φklad 1. Ukßzky each()
$bar te∩ obsahuje nßsledujφcφ klφΦ/hodnota pßry:
$bar te∩ obsahuje nßsledujφcφ klφΦ/hodnota pßry:
|
each() se v∞t╣inou pou╛φva s list() k pr∙chodu polem, nap°. $HTTP_POST_VARS:
PotΘ, co prob∞hne each(), se internφ ukazatel pole posune na dal╣φ prvek pole nebo z∙stane na poslednφm prvku pole, pokud dojde na konec.
Viz takΘ: key(), list(), current(), reset(), next() a prev().
end() posune vnit°nφ ukazatel pole array na jeho poslednφ prvek a vracφ tento prvek.
Tato funkce se pou╛φvß k importu prom∞nn²ch z pole do aktivnφ symbolovΘ tabulky. P°ijφmß pole var_array; z klφΦ∙ vytvß°φ nßzvy prom∞nn²ch a z hodnot hodnoty t∞chto prom∞nn²ch. Vytvß°φ jednu prom∞nnou z ka╛dΘho klφΦ/hodnota pßru (s ohledem na argumenty extract_type a prefix).
Poznßmka: Od PHP 4.0.5 tato funkce vracφ poΦet extrahovan²ch prom∞nn²ch.
extract() ov∞°uje, jestli v╣echny klφΦe tvo°φ platnΘ nßzvy prom∞nn²ch, a takΘ jestli nekolidujφ s prom∞nn²mi existujφcφmi v aktivnφ symbolovΘ tabulce. Zp∙sob, jak²m se naklßdß s neplatn²mi/numerick²mi klφΦi a kolizemi zßvisφ na extract_type. Ten m∙╛e mφt jednu z nßsledujφcφch hodnot.
Pokud existuje kolize, p°epsat existujφcφ prom∞nnou.
Pokud existuje kolize, nep°epsat existujφcφ prom∞nnou.
Pokud existuje kolize, p°ed°adit p°ed nßzev novΘ prom∞nnΘ prefix.
Opat°it prefixem prefix v╣echny nßzvy prom∞nn²ch. Od PHP 4.0.5 toto zahrnuje i ΦφselnΘ indexy.
Prefixem prefix opat°it pouze neplatnΘ/ΦφselnΘ nßzvy prom∞nn²ch. Tento p°φznak byl p°idßn v PHP 4.0.5.
Defaultnφ extract_type je EXTR_OVERWRITE.
Pozn.: prefix se vy╛aduje pouze pokud je extract_type EXTR_PREFIX_SAME, EXTR_PREFIX_ALL nebo EXTR_PREFIX_INVALID. Pokud v²sledn² nßzev (vΦ. prefixu) nenφ platn² nßzev prom∞nnΘ, nenaimportuje se do symbolovΘ tabulky.
extract() vracφ poΦet prom∞nn²ch ·sp∞╣n∞ naimportovan²ch do symbolovΘ tabulky.
Mo╛nΘ vyu╛itφ extract() je import prom∞nn²ch do symbolovΘ tabulky z asociativnφho pole vrßcenΘho wddx_deserialize().
V²╣e uvedenß ukßzka vytiskne:
blue, large, sphere, medium |
$size se nep°epsala, proto╛e bylo specifikovßno EXTR_PREFIX_SAME, tudφ╛ se vytvo°ila prom∞nnß $wddx_size. Pokud by bylo zadßno EXTR_SKIP, nevytvo°ila by se ani $wddx_size. EXTR_OVERWRITE by zp∙sobilo p°epsßnφ hodnoty $size na "medium", a EXTR_PREFIX_ALL by vytvo°ilo novΘ prom∞nnΘ pojmenovanΘ $wddx_color, $wddx_size a $wddx_shape.
U PHP verzφ ni╛╣φch ne╛ 4.0.5 musφte pou╛φt asociativnφ pole.
Viz takΘ: compact().
Hledß v haystack needle a pokud ji najde, vracφ TRUE, jinak FALSE.
Pokud je t°etφ argument strict TRUE, in_array() takΘ kontroluje typ needle v haystack.
T°φdφ pole sestupn∞ podle klφΦ∙ se zachovßnφ asociacφ index∙. To je u╛iteΦnΘ hlavn∞ p°i prßci s asociativnφmi poli.
Tato ukßzka vytiskne:
Vlastnosti t°φd∞nφ lze upravit pomocφ volitelnΘho argumentu sort_flags, detaily viz sort().
Viz takΘ: asort(), arsort(), ksort(), sort(), natsort() a rsort().
T°φdφ pole podle klφΦ∙ se zachovßnφ asociacφ index∙. To je u╛iteΦnΘ hlavn∞ p°i prßci s asociativnφmi poli.
Tato ukßzka vytiskne:
Vlastnosti t°φd∞nφ lze upravit pomocφ volitelnΘho argumentu sort_flags, detaily viz sort().
Viz takΘ: asort(), arsort(), sort(), natsort() a rsort().
Poznßmka: Druh² argument byl p°idßn v PHP 4.
Stejn∞ jako array(), list() vlastn∞ nenφ funkce, ale jazykov² konstrukt. Pou╛φvß se k p°i°azenφ hodnot vφce prom∞nn²m v jednΘ operaci.
P°φklad 1. Ukßzka list()
|
Tato funkce implementuje srovnßvacφ algoritmus kter² t°φdφ alfanumerickΘ °et∞zce stejn²m zp∙sobem jako Φlov∞k, toto se popisuje jako "p°irozenΘ t°φd∞nφ".
natcasesort() je case-insensitive verze natsort(). Ukßzka rozdφlu mezi tφmto algoritmem a b∞╛n²m poΦφtaΦov²m t°φd∞nφm °et∞zc∙ viz natsort().
Vφce informacφ viz strßnka Martina Poola Natural Order String Comparison.
Viz takΘ: sort(), natsort(), strnatcmp() and strnatcasecmp().
Tato funkce implementuje srovnßvacφ algoritmus kter² t°φdφ alfanumerickΘ °et∞zce stejn²m zp∙sobem jako Φlov∞k, toto se popisuje jako "p°irozenΘ t°φd∞nφ". Ukßzka rozdφlu m∞zi tφmto algoritmem a b∞╛n²mi poΦφtaΦov²mi algoritmy pro °azenφ °et∞zc∙ (nap°. sort()):
V²╣e uveden² k≤d vygeneruje nßsledujφcφ v²stup:
Standardnφ t°φd∞nφ Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) P°irozenΘ t°φd∞nφ Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png ) |
Viz takΘ: natcasesort(), strnatcmp() a strnatcasecmp().
Vracφ dal╣φ prvek pole nebo FALSE, pokud prvky do╣ly.
next() se chovß jako current(), s jednφm rozdφlem: posouvß internφ ukazatel pole o jeden prvek a vracφ prvek, na kter² tento ukazatel ukazuje po posunu. To znamenß, ╛e vracφ dal╣φ prvek pole a posouvß internφ ukazatel o jeden. Pokud by ukazatel po psunu ukazoval mimo pole, next() vracφ FALSE.
Varovßnφ |
Pokud toto pole obsahuje prßzdnΘ prvky, nebo prvky, jejich╛ index je 0, tato funkce vrßtφ FALSE i pro tyto prvky. Ke sprßvnΘmu pr∙chodu polem, kterΘ m∙╛e obsahovat prßzdnΘ prvky nebo prvky s indexem 0 pou╛ijte each(). |
Vracφ prvek pole p°ed tφm prvkem, na kter² ukazuje internφ ukazatel pole, nebo FALSE, pokud prvky do╣ly.
Varovßnφ |
Pokud toto pole obsahuje prßzdnΘ prvky, tato funkce vrßtφ FALSE i pro tyto prvky. Ke sprßvnΘmu pr∙chodu polem, kterΘ m∙╛e obsahovat prßzdnΘ prvky pou╛ijte each(). |
prev() se chovß stejn∞ jako next(), ale posouvß internφ ukazatel pole o jedno mφsto zpßtky mφsto dop°edu.
range() vracφ pole integer∙ od low po high vΦetn∞.
Ukßzka pou╛itφ viz shuffle().
reset() p°etoΦφ internφ ukazatel pole array na jeho prvnφ prvek.
reset() vracφ hodnotu prvnφho prvku pole.
Tato funkce sestupn∞ t°φdφ pole.
Tato ukßzka zobrazφ:
Ovoce bylo set°φd∞no podle abecedy sestupn∞.
Vlastnosti t°φd∞nφ lze upravit pomocφ volitelnΘho argumentu sort_flags, detaily viz sort().
shuffle() zamφchß (nßhodn∞ zm∞nφ po°adφ prvk∙) pole. Musφte inicializovat generßtor nßhodn²ch Φφsel pomocφ srand().
Viz takΘ: arsort(), asort(), ksort(), rsort(), sort() a usort().
sort() t°φdφ pole. Prvky se uspo°ßdajφ od nejmen╣φho k nejv∞t╣φmu.
Tato ukßzka zobrazφ:
Ovoce bylo se°azeno podle abecedy.
Vlastnosti t°φd∞nφ lze upravit pomocφ volitelnΘho argumentu sort_flags, kter² m∙╛e nab²vat t∞chto hodnot:
Typy t°φd∞nφ:
SORT_REGULAR - normßlnφ porovnßvßnφ
SORT_NUMERIC - numerickΘ porovnßvßnφ
SORT_STRING - textovΘ porovnßvßnφ
Viz takΘ: arsort(), asort(), ksort(), natsort(), natcasesort(), rsort(), usort(), array_multisort() a uksort().
Poznßmka: Druh² argument byl p°idßn v PHP 4.
(PHP 3>= 3.0.4, PHP 4 )
uasort -- T°φdit pole pomocφ u╛ivatelsky definovanΘ porovnßvacφ funkce se zachovßnφm klφΦ∙Tato funkce t°φdφ pole tak, ╛e si indexy uchovßvajφ spojenφ s hodnotami. To je u╛iteΦnΘ hlavn∞ p°i t°φd∞nφ asociativnφch polφ, kde je d∙le╛itΘ po°adφ prvk∙. Srovnßvacφ funkce je u╛ivatelsky definovßna.
Viz takΘ: usort(), uksort(), sort(), asort(), arsort(), ksort() a rsort().
(PHP 3>= 3.0.4, PHP 4 )
uksort -- T°φdit pole podle klφΦ∙ pomocφ u╛ivatelsky definovane porovnßvacφ funkceTato funkce t°φdφ pole podle klφΦ∙ pomocφ u╛ivatelsky definovanΘ porovnßvacφ funkce. Pokud pot°ebujete t°φdit pole podle komplikovan∞j╣φch kritΘriφ, m∞li byste pou╛φt tuto funkci.
Tato ukßzka zobrazφ:
Viz takΘ: usort(), uasort(), sort(), asort(), arsort(), ksort(), natsort() a rsort().
(PHP 3>= 3.0.3, PHP 4 )
usort -- T°φdit pole podle hodnot pomocφ u╛ivatelsky definovanΘ porovnßvacφ funkceTato funkce t°φdφ pole podle hodnot pomocφ u╛ivatelsky definovanΘ porovnßvacφ funkce. Pokud pot°ebujete t°φdit pole podle komplikovan∞j╣φch kritΘriφ, m∞li byste pou╛φt tuto funkci.
Porovnßvacφ funkce musφ vrace integer men╣φ ne╛ 0, 0, a v∞t╣φ ne╛ 0, pokud je prvnφ argument men╣φ ne╛, stejn², nebo v∞t╣φ ne╛ druh² argument. Pokud jsou dv∞ porovnßvanΘ hodnoty stejnΘ, jejich po°adφ v t°φd∞nΘm poli je nedefinovßno.
Tato ukßzka zobrazφ:
Poznßmka: V tomto jednoduchΘm p°φpad∞ by pochopiteln∞ bylo vhodn∞j╣φ pou╛φt rsort().
P°φklad 2. Ukßzka usort() s vφcerozm∞rn²m polem
|
P°i t°φd∞nφ vφcerozm∞rnΘho pole $a a $b obsahujφ reference na prvnφ index pole.
Tato ukßzka zobrazφ:
Varovßnφ |
Pou╛itß quicksort funkce v n∞kter²ch C knihovnßch (nap°. na systΘmech Solaris) m∙╛e zp∙sobit zhroucenφ PHP, pokud porovnßvacφ funkce nevracφ konsistentnφ hodnoty. |
Viz takΘ: uasort(), uksort(), sort(), asort(), arsort(), ksort(), natsort() a rsort().
aspell() funkce umo╛≥ujφ ov∞°it hlßskovßnφ slova a nabφdnout mo╛nΘ opravy.
Poznßmka: Toto roz╣φ°enφ bylo z PHP odebrßno a od PHP 4.3.0 nenφ k dispozici. Pokud chcete v PHP pou╛φt kontrolu hlßskovßnφ, pou╛ijte mφsto toho pspell. Vyu╛φvß pspell knihovnu, a pracuje s nov∞j╣φmi verzemi aspellu.
Roz╣φ°enφ aspell funguje pouze s velmi star²mi (do p°ibli╛n∞ .27.*) verzemi aspell knihovny. Tento modul, ani tyto verze aspell knihovny u╛ nejsou podporovßny. Budete pot°ebovat knihovnu aspell dostupnou na: http://aspell.sourceforge.net/.
(PHP 3>= 3.0.7, PHP 4 <= 4.2.3)
aspell_check_raw -- Zkontrolovat slovo beze zm∞ny velikosti pφsmen nebo pokus∙ o o°ezßnφaspell_check_raw() zkontroluje hlßskovßnφ slova beze zm∞n velikosti pφsmen nebo pokus∙ ho jak²mkoliv zp∙sobem o°ezat, a vrßtφ TRUE, pokud je hlßskovßnφ sprßvnΘ, a FALSE, pokud nenφ.
aspell_check() zkontroluje hlßskovßnφ slova a vrßtφ TRUE, pokud je hlßskovßnφ sprßvnΘ, a FALSE, pokud nenφ.
aspell_new() otev°e nov² slovnφk, a vrßtφ identifikßtor spojenφ na tento slovnφk vyu╛iteln² s dal╣φmi aspell funkcemi.
Pro prßci s Φφsly libovolnΘ p°esnosti PHP nabφzφ Binary Calculator, kter² podporuje Φφsla libovoln∞ velkß a s libovolnou p°esnostφ, kterß jsou reprezentovßna jako °et∞zce.
Od PHP 4.0.4 je knihovna libbcmath dodßvßna s PHP. Pro toto roz╣φ°enφ tedy nepot°ebujete ╛ßdnΘ externφ knihovny.
Tyto funkce jsou v PHP 4 dostupnΘ pouze pokud bylo PHP zkonfigurovßno s volbou --enable-bcmath. V PHP 3 jsou dostupnΘ, pokud nebylo zkonfigurovßno s volbou --disable-bcmath.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
P°iΦte left operand k right operand a vrßtφ souΦet v °et∞zci. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcsub().
Porovnß left operand s right operand a vrßtφ v²sledek jako integer. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst pou╛it²ch p°i porovnßnφ. Nßvratovß hodnota je 0, pokud jsou si oba operandy rovnΘ. Pokud je left operand v∞t╣φ ne╛ right operand, nßvratovß hodnota je +1, a pokud je left operand men╣φ ne╛ right operand, nßvratovß hodnota je -1.
Vyd∞lφ argument left operand argumentem right operand a vrßtφ v²sledek. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcmul().
Vrßtφ modulus argumentu left operand s pou╛itφm argumentu modulus.
Viz takΘ bcdiv().
Vynßsobφ argument left operand argumentem right operand a vrßtφ v²sledek. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcdiv().
Umocnφ x na y. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcsqrt().
(PHP 5 CVS only)
bcpowmod -- Raise an arbitrary precision number to another, reduced by a specified modulus.Use the fast-exponentiation method to raise x to the power y with respect to the modulus modulus. The optional scale can be used to set the number of digits after the decimal place in the result.
The following two statements are functionally identical. The bcpowmod() version however, executes in less time and can accept larger parameters.
<?php $a = bcpowmod($x, $y, $mod); $b = bcmod(bcpow($x, $y), $mod); // $a and $b are equal to each other. ?> |
Poznßmka: Because this method uses the modulus operation, non-natural numbers may give unexpected results. A natural number is any positive non-zero integer.
Tato funkce nastavφ v²chozφ ╣kßlu pro v╣echna nßslednß volßnφ bc math funkcφ, ktera neudßvajφ explicitn∞ ╣kßlu p°esnosti.
Vrßtφ druhou odmocninu argumentu operand. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcpow().
OdeΦte argument right operand od argumentu left operand a vrßtφ v²sledek v °et∞zci. Voliteln² argument scale se pou╛φvß k urΦenφ poΦtu desetinn²ch mφst ve v²sledku.
Viz takΘ bcadd().
Funkce bzip2 se pou╛φvajφ k transparentnφmu Φtenφ a zßpisu soubor∙ komprimovan²ch algoritmem bzip2 (.bz2).
Tento modul pou╛φvß funkce z knihovny bzip2 od Juliana Sewarda. Tento modul vy╛aduje bzip2/libbzip2 verze >= 1.0.x.
Podpora bzip2 nenφ v PHP implicitn∞ k dispozici. K aktivaci budete muset p°i kompilaci PHP pou╛φt konfiguraΦnφ volbu --with-bz2[=DIR].
Toto roz╣φ°enφ definuje jeden typ prost°edku: souborov² ukazatel identifikujφcφ soubor bz2, nad kter²m se pracuje.
Tento p°φklad otev°e doΦasn² soubor a zapφ╣e do n∞j testovacφ °etezec; potom vypφ╣e obsah souboru.
P°φklad 1. Mal² p°φklad na bzip2
|
Zav°e soubor bzip2 odkazovan² ukazatelem bz.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Ukazatel na soubor musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ bzopen().
Viz takΘ bzopen().
bzcompress() komprimuje °et∞zec source a vracφ ho ve form∞ dat zφskan²ch pomocφ algoritmu bzip2.
Nepovinn² parametr blocksize specifikuje velikost bloku pou╛itou p°i komprimaci; m∞lo by to b²t Φφslo od 1 do 9, kde 9 znamenß nej·Φinn∞j╣φ kompresi, ale s v∞t╣φmi nßroky na pot°ebnΘ prost°edky. Implicitnφ hodnota blocksize je 4.
Nepovinn² parametr workfactor urΦuje, jak se kompresnφ mechanismus chovß v p°φpad∞ nejhor╣φch, velmi se opakujφcφch, vstupnßch dat. M∙╛e nab²vat hodnot mezi 0 a 250; 0 p°edstavuje specißlnφ p°φpad, 30 je implicitnφ hodnota. Generovan² v²stup je bez ohledu na workfactor v╛dy stejn².
Viz takΘ bzdecompress().
bzdecompress() dekomprimuje °et∞zec source obsahujφcφ data komprimovanß pomocφ algoritmu bzip2, a vracφ je. Pokud mß nepovinn² parametr small hodnotu TRUE, pou╛ije se alternativnφ dekompresnφ algoritmus s ni╛╣φmi nßroky na pam∞╗ (maximßlnφ pam∞tovΘ po╛adavky klesnou na cca 2300 KB), ale zhruba poloviΦnφ rychlostφ. Vφce informacφ najdete v dokumentaci k bzip2.
Viz takΘ bzcompress().
Vracφ chybovΘ Φφslo jakΘkoli chyby bzip2 podle souborovΘho ukazatele bz.
Vuz takΘ bzerror() a bzerrstr().
Vracφ Φφslo chyby a chybov² °et∞zec (popis) v asociativnφm poli pro jakoukoli chybu bzip2 podle souborovΘho ukazatele bz.
Viz takΘ bzerrno() a bzerrstr().
Vracφ chybov² °et∞zec (popis) pro jakoukoli chybu bzip2 podle souborovΘho ukazatele bz.
Vynutφ zßpis v╣ech bufferovan²ch dat pro souborov² ukazatel bz.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Otev°e soubor bzip2 (.bz2) pro Φtenφ nebo zßpis. filename je nßzev otvφranΘho souboru. Parametr mode mß podobn² v²znam jako u funkce fopen() (`r' pro Φtenφ, `w' pro zßpis atd.).
Pokud otvφrßnφ sel╛e, vracφ funkce FALSE, jinak vracφ ukazatel (deskriptor) na nov∞ otev°en² soubor.
Viz takΘ bzclose().
bzread() p°eΦte nejv²╣e length byt∙ z bzip2 souboru odkazovanΘho pomocφ bz. ╚tenφ konΦφ, je-li p°eΦteno length (nekomprimovan²ch) byt∙ nebo se dosßhne konce souboru - podle toho, co nastane d°φv. Nenφ-li specifikovßn nepovinn² parametr length, funkce bzread() p°eΦte najednou 1024 (nekomprimovan²ch) byt∙.
bzwrite() zapφ╣e obsah °et∞zce data do souboru bzip2 odkazovanΘho pomocφ bz. Je-li p°φtomen nepovinn² parametr length, zßpis skonΦφ potΘ, co bude zapsßno length (nekomprimovan²ch) byt∙ nebo bude dosa╛eno konce °et∞zce - podle toho, co nastane d°φv.
Toto roz╣φ°enφ p°edstavuje sadu funkcφ urΦen²ch ke zjednodu╣enφ p°evod∙ mezi r∙zn²mi kalendß°i. Prost°ednφkem nebo standardem, na kterΘm je zalo╛ena, je Julian Day Count. To je poΦet dnφ zaΦφnajφcφ daleko p°ed jak²mkoli datem o kterΘ by se v∞t╣ina lidφ zajφmala (n∞kde kolem 4000 p°. n. l.). Pokud chcete p°evßd∞t mezi kalendß°ov²mi systΘmy, musφte nejd°φv p°evΘst na Julian Day Count, potom na k²╛en² kalendß°. Julian Day Count se velmi li╣φ od JulißnskΘho kaledß°e! Pro vφce informacφ o Julian Day Count viz http://www.hermetic.ch/cal_stud/jdn.htm. Pro vφce informacφ o kalendß°ov²ch systΘmech viz http://www.boogle.com/info/cal-overview.html. Tyto instrukce obsahujφ v²≥atky z tΘto strßnky (v uvozovkßch).
Pro prßci tohoto roz╣φ°enφ musφte PHP zkompilovat s volbou --enable-calendar.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The following constants are available since PHP 4.3.0 :
The following constants are available since PHP 5.0.0 :
(PHP 4 >= 4.1.0)
cal_days_in_month -- Return the number of days in a month for a given year and calendarThis function will return the number of days in the month of year for the specified calendar.
See also jdtounix().
cal_from_jd() converts the Julian day given in jd into a date of the specified calendar. Supported calendar values are CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH and CAL_FRENCH.
P°φklad 1. cal_from_jd() example
This will output :
|
See also cal_to_jd().
cal_info() returns information on the specified calendar or on all supported calendars if no calendar is specified.
Calendar information is returned as an array containing the elements calname, calsymbol, month, abbrevmonth and maxdaysinmonth.
If no calendar is specified information on all supported calendars is returned as an array. This functionality will be available beginning with PHP 5.
cal_to_jd() calculates the Julian day count for a date in the specified calendar. Supported calendars are CAL_GREGORIAN, CAL_JULIAN, CAL_JEWISH and CAL_FRENCH.
See also cal_to_jd().
Vracφ UNIXov² timestamp odpovφdajφcφ VelikonoΦnφ p∙lnoci v danΘm roce. Default year je souΦasn² rok.
Varovßnφ: Tato funkce vygeneruje varovßnφ, pokud je year mimo rozsah UNIXov²ch timestamp∙ (tj. p°ed 1970 nebo po 2037).
Datum Velikonoc bylo definovßno Nicaejsk²m koncilem v r. 325 n. l. jako ned∞le po prvnφm ·pl≥ku kter² p°ipadß na nebo po jarnφ rovnodennosti. Rovnodennost se v╛dy p°edpoklßdß na 21. b°ezna, tak╛e se v²poΦet redukuje na urΦenφ data ·pl≥ku a data nßsledujφcφ ned∞le. Zde pou╛it² algoritmus byl poprvΘ pou╛it kolem roku 532 Dionysiem Exiguem. V JulißnskΘm kalendß°i (pro lΘta p°ed 1753) se na sledovßnφ fßzφ M∞sφce pou╛φval jednoduch² devatenßctilet² cyklus. V GregorißnskΘm kalendß°i (pro lΘta po 1753 - navr╛en Claviem a Liliem a zaveden pape╛em ╪eho°em XIII v °φjnu 1582, v Britßnii a jejφch koloniφch v zß°φ 1752) se p°idßvajφ dva faktory, kterΘ tento cyklus zp°es≥ujφ.
(K≤d je zalo╛en na C programu od Simona Kershawa, <webmaster@ely.anglican.org>)
V²poΦet Velikonoc p°ed rokem 1970 nebo po roce 2037 viz easter_days().
(PHP 3>= 3.0.9, PHP 4 )
easter_days -- Get number of days after March 21 on which Easter falls for a given yearVracφ poΦet dnφ od 21. b°ezna do Velikonoc v danΘm roce. Default year je souΦasn² rok.
Tato funkce je vyu╛itelnß mφsto easter_date() na v²poΦty Velikonoc pro roky kterΘ spadajφ mimo rozsah UNIXov²ch timestamp∙ (tj. p°ed rokem 1970 a po roce 2037).
P°φklad 1. Ukßzka easter_date()
|
Datum Velikonoc bylo definovßno Nicaejsk²m koncilem v r. 325 n. l. jako ned∞le po prvnφm ·pl≥ku kter² p°ipadß na nebo po jarnφ rovnodennosti. Rovnodennost se v╛dy p°edpoklßdß na 21. b°ezna, tak╛e se v²poΦet redukuje na urΦenφ data ·pl≥ku a data nßsledujφcφ ned∞le. Zde pou╛it² algoritmus byl poprvΘ pou╛it kolem roku 532 Dionysiem Exiguem. V JulißnskΘm kalendß°i (pro lΘta p°ed 1753) se na sledovßnφ fßzφ M∞sφce pou╛φval jednoduch² devatenßctilet² cyklus. V GregorißnskΘm kalendß°i (pro lΘta po 1753 - navr╛en Claviem a Liliem a zaveden pape╛em ╪eho°em XIII v °φjnu 1582, v Britßnii a jejφch koloniφch v zß°φ 1752) se p°idßvajφ dva faktory, kterΘ tento cyklus zp°es≥ujφ.
(K≤d je zalo╛en na C programu od Simona Kershawa, <webmaster@ely.anglican.org>)
Viz takΘ: easter_date().
(PHP 3, PHP 4 )
FrenchToJD -- P°evΘst datum z FrancouzskΘho republikßnskΘho kalendß°e na Julian Day CountP°evßdφ datum z FrancouzskΘho republikßnskΘho kalendß°e na Julian Day Count.
Tyto rutiny konvertujφ pouze data v letech 1 a╛ 14 (Gregorißnskß data 22. zß°φ 1792 a╛ 22. zß°φ 1806). To vφce ne╛ dostateΦn∞ pokr²vß obdobφ, po kterΘ se tento kalendß° pou╛φval.
Platn² rozsah GregorißnskΘho kalendß°e je 4714 p°. n. l. a╛ 9999 n. l.
Jakkoli tento software zvlßdß data a╛ do 4714 p°. n. l., takovΘ pou╛itφ asi nemß smysl. Gregorißnsk² kalendß° byl zalo╛en a╛ 15. °φjna 1582 (5. °φjna 1582 podle JulißnskΘho kalendß°e). N∞kterΘ zem∞ ho p°ijaly mnohem pozd∞ji, ╪ecko a╛ v r. 1923. V∞t╣ina evropsk²m stßt∙ p°ed Gregorißnsk²m kalendß°em pou╛φvala Julißnsk².
Vracφ den v t²dnu. V zßvislosti na m≤du vracφ °et∞zec nebo integer.
Vracφ °et∞zec obsahujφcφ nßzev m∞sφce. mode urΦuje, na kter² kalendß° se mß Julian Day Count konvertovat a jak² typ jmΘna se mß vrßtit.
P°evßdφ Julian Day Count na Francouzsk² republikßnsk² kalendß°.
P°evßdφ Julian Day Count na °et∞zec obsahujφcφ GregorißnskΘ datum ve formßtu "m∞sφc/den/rok".
P°evßdφ Julian Day Count na °et∞zec obsahujφcφ JulißnskΘ datum ve formßtu "m∞sφc/den/rok".
jdtounix() vracφ UNIXov² timestamp odpovφdajφcφ Julian Day Countu danΘmu v jday nebo FALSE, pokud je jday mimo UNIXovou epochu (GregorißnskΘ roky mezi 1970 a 2037, nebo-li 2440588 <= jday <= 2465342 )
Viz takΘ: jdtounix().
Poznßmka: Tato funkce byla p°idßna v PHP 4 RC2.
Platn² rozsah Jakkoli tento software zvlßdß data a╛ do roku 1 (3761 p°. n. l.), takovΘ pou╛itφ asi nemß smysl.
idovsk² kalendß° se pou╛φvß n∞kolik tisφc let, ale zpoΦßtku neexistoval vzorec na urΦenφ zaΦßtku m∞sφce. Nov² m∞sφc zaΦφnal, kdy╛ byl poprvΘ spat°en nov² M∞sφc.
Platn² rozsah pro Julißnsk² kalendß° je 4713 p°. n. l. a╛ 9999 n. l.
Jakkoli tento software zvlßdß data a╛ do 4713 p°. n. l., takovΘ pou╛itφ asi nemß smysl. Tento kalendß° byl vytvo°en v roce 46 p°. n. l., ale detaily se nestabilizovaly nejmΘn∞ do 8 n. l., a mo╛nß a╛ do konce 4. stoletφ. Navφc zaΦßtek roku se li╣il od kultury ke kultu°e - ne v╣echny p°ijφmaly leden jako prvnφ m∞sφc roku.
Vracφ Julian Day Count pro UNIXov² timestamp (sekundy od 1.1.1970), nebo pro aktußlnφ den, pokud nenφ dßn timestamp.
Viz takΘ: jdtounix().
Poznßmka: Tato funkce byla p°idßna v PHP 4 RC2.
Tyto funkce p°edstavujφ interface k CCVS API, a umo╛nujφ tak p°φmo pracovat s CCVS z va╣ich PHP skript∙. CCVS je RedHatφ °e╣enφ "zprost°edkovatele" ve zpracovßnφ kreditnφch karet. Umo╛%nuje vßm oslovovat p°φmo zpracovatele kreditnφch karet p°es vß╣ *nix systΘm a modem. Pomocφ CCVS modulu pro PHP m∙╛ete zpracovßvat kreditnφ karty p°es CCVS ve va╣ich PHP skriptech. Nßsledujφcφ reference tento proces p°iblφ╛φ.
Poznßmka: CCVS bylo firmou RedHat pozastaveno a nemß v plßnu vydßvat dal╣φ klφΦe nebo podporovat kontrakty. Pokud hledßte nßhradu, zva╛te MCVE firmy Main Street Softworks jako mo╛nou nßhradu. Mß podobn² design a dokumentovanou podporu PHP!
Toto roz╣φ°enφ bylo z PHP odstran∞no a od verze 4.3.0 nenφ k dispozici. Pokud chcete pou╛φvat funkce pro zpracovßnφ kreditnφch karet, m∙╛ete mφsto toho pou╛φt roz╣φ°enφ MCVE.
Pokud chcete zapnout CCVS podporu v PHP, zjist∞te si nejd°φve instalaΦnφ adresß° CCVS. Potom budete muset PHP zkonfigurovat s --with-ccvs. Pokud toto pou╛ijete be udßnφ cesty k va╣φ instalaci CCVS, PHP se pokusφ podφvat do defaultnφ instalaΦnφ lokace CCVS (/usr/local/ccvs). Pokud je CCVS na nestandardnφm mφst∞, spust∞te configure s: --with-ccvs=$ccvs_path, kde $ccvs_path je cesta k va╣φ instalaci CVS. Pozn.: Podpora CCVS vy╛aduje existenci $ccvs_path/lib a $ccvs_path/include, a p°φtomnost cv_api.h v adresß°i include a libccvs.a v adresß°i lib.
Dßle je pot°eba, aby b∞╛el proces ccvsd. Navφc, PHP processy musφ b∞╛et pod stejn²m u╛ivatelem, pod kter²m b∞hß CCVS (nap°. pokud jste instalovali ccvs jako 'ccvs', va╣e PHP procesy musφ takΘ b∞╛et jako 'ccvs').
RedHat p°eru╣il podporu CCVS, p°esto je mφrn∞ zastaralß dokumentace k dispozici na http://redhat.com/docs/manuals/ccvs/.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.0.2 - 4.2.3 only)
ccvs_command -- Performs a command which is peculiar to a single protocol, and thus is not available in the general CCVS API
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.0.2 - 4.2.3 only)
ccvs_count -- Find out how many transactions of a given type are stored in the system
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
COM je technologie, kterß umo╛≥uje znovupou╛φt k≤d napsan² v jakΘmkoliv jazyce za pou╛itφ standardnφho volßnφ a schovßnφm implementaΦnφch detail∙ - jako na kterΘm poΦφtaΦi je komponenta ulo╛ena a kter² spustiteln² soubor ji uchovßvß - za API. Lze si to p°edstavit jako roz╣φ°en² mechanismus vzdßlenΘho volßnφ procedur (RPC) se zßklady objekt∙. COM odd∞luje implementaci od rozhranφ.
COM podporuje verzovßnφ, odd∞lenφ implementace od rozhranφ a skrytφ implementaΦnφch detail∙ jako je umφst∞nφ spustitelnΘho souboru a jazyku, kter² byl pou╛it.
K pou╛φvßnφ t∞chto funkcφ nenφ t°eba ╛ßdnß instalace, jsou souΦßstφ jßdra PHP.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Com configuration options
Name | Default | Changeable |
---|---|---|
com.allow_dcom | "0" | PHP_INI_SYSTEM |
com.autoregister_typelib | "0" | PHP_INI_SYSTEM |
com.autoregister_verbose | "0" | PHP_INI_SYSTEM |
com.autoregister_casesensitive | "1" | PHP_INI_SYSTEM |
com.typelib_file | "" | PHP_INI_SYSTEM |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Vφce informacφ o COM naleznete ve specifikaci COM nebo se t°eba podφvejte na Yet Another COM Library (YACL) Dona Boxe.
The COM class provides a framework to integrate (D)COM components into your PHP scripts.
COM class constructor. Parameters:
name or class-id of the requested component.
name of the DCOM server from which the component should be fetched. If NULL, localhost is assumed. To allow DCOM com.allow_dcom has to be set to TRUE in php.ini.
specifies the codepage that is used to convert php-strings to unicode-strings and vice versa. Possible values are CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 and CP_UTF8.
P°φklad 1. COM example (1)
|
P°φklad 2. COM example (2)
|
VARIANT class constructor. Parameters:
initial value. if omitted an VT_EMPTY object is created.
specifies the content type of the VARIANT object. Possible values are VT_UI1, VT_UI2, VT_UI4, VT_I1, VT_I2, VT_I4, VT_R4, VT_R8, VT_INT, VT_UINT, VT_BOOL, VT_ERROR, VT_CY, VT_DATE, VT_BSTR, VT_DECIMAL, VT_UNKNOWN, VT_DISPATCH and VT_VARIANT. These values are mutual exclusive, but they can be combined with VT_BYREF to specify being a value. If omitted, the type of value is used. Consult the MSDN library for additional information.
specifies the codepage that is used to convert php-strings to unicode-strings and vice versa. Possible values are CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 and CP_UTF8.
Vracφ hodnotu property COM komponenty odkazovanΘ com_object. P°i chyb∞ vracφ FALSE.
com_invoke() volß metodu COM komponenty odkazovanΘ com_object. Pokud dojde k chyb∞, vracφ FALSE, p°i ·sp∞chu vracφ nßvratovou hodnotu metody function_name.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
com_load() vytvß°φ novou COM komponentu a vracφ odkaz na ni. P°i ne·sp∞chu vracφ FALSE.
Tato funkce je alias ke com_set().
Tato funkce je alias ke com_set().
Tyto funkce vßm umo╛≥ujφ zφskßvat informace o t°φdßch a instancφch. M∙╛ete zjistit nßzev t°φdy do kterΘ objekt pat°φ nebo jeho prom∞nnΘ a metody. Pomocφ t∞chto funkcφ m∙╛ete zjistit nejen p°φslu╣nost objektu k t°φd∞, ale i jeho p°edka (tj. kterou t°φdu t°φda tohoto objektu roz╣i°uje).
V tΘto ukßzce nejd°φve definujeme zßkladnφ t°φdu a roz╣φ°enφ tΘto t°φdy. Zßkladnφ t°φda popisuje obecnou zeleninu, a╗ u╛ je jedlß nebo ne a bez ohledu na jejφ barvu. Podt°φda Spenat p°idßvß metodu na uva°enφ tΘto zeleniny a dal╣φ, kterß zjistφ, jestli je va°enß.
P°φklad 1. classes.inc
|
Potom z t∞chto t°φd vytvo°φme 2 objekty a vytiskneme informace o nich, vΦ. rodiΦovsk²ch t°φd. TakΘ definujeme n∞kterΘ pomocnΘ funkce, p°edev╣φm kv∙li pohodlnΘmu tisku informacφ.
P°φklad 2. test_script.php
Je t°eba poznamenat, ╛e ve v²╣e uvedenΘ ukßzce je objekt $listnaty instancφ t°φdy Spenat, kterß je podt°φdou t°φdy Zelenina, a poslednφ Φßst v²╣e uvedenΘho skriptu tudφ╛ vytiskne:
|
(PHP 4 >= 4.0.5)
call_user_method_array -- Call a user method given with an array of parameters [deprecated]Varovßnφ |
The call_user_method_array() function is deprecated as of PHP 4.1.0, use the call_user_func_array() variety with the array(&$obj, "method_name") syntax instead. |
Calls the method referred by method_name from the user defined obj object, using the parameters in paramarr.
See also: call_user_func_array(), and call_user_func().
Zavolß metodu method_name objektu obj. Ukßzka vyu╛itφ je nφ╛e, kde definujeme t°φdu, vytvo°φme objekt a pou╛ijeme call_user_method() k nep°φmΘmu volßnφ jejφ print_info metody.
<?php class Country { var $NAME; var $TLD; function Country($name, $tld) { $this->NAME = $name; $this->TLD = $tld; } function print_info($prestr="") { echo $prestr."Country: ".$this->NAME."\n"; echo $prestr."Top Level Domain: ".$this->TLD."\n"; } } $cntry = new Country("Peru","pe"); echo "* Calling the object method directly\n"; $cntry->print_info(); echo "\n* Calling the same method indirectly\n"; call_user_method ("print_info", $cntry, "\t"); ?> |
Viz takΘ call_user_func().
Tato funkce vrßtφ TRUE, pokud je t°φda class_name definovßna, jinak FALSE.
Tato funkce vracφ pole nßzv∙ metod definovan²ch pro t°φdu specifikovanou argumentem class_name.
Viz takΘ get_class_vars(), get_object_vars()
Tato funkce vracφ pole defaultnφch vlastnostφ t°φdy class_name.
Viz takΘ get_class_methods(), get_object_vars()
Tato funkce vracφ nßzev t°φdy jφ╛ je objekt obj instancφ.
Viz takΘ get_parent_class(), is_subclass_of()
Tato funkce vracφ pole nßzv∙ t°φd definovan²ch v souΦasnΘm skriptu.
Poznßmka: V PHP 4.0.1pl2 jsou na zaΦßtku pole vrßceny je╣t∞ t°i dal╣φ t°φdy: stdClass (definovanß v Zend/zend.c), OverloadedTestClass (definovanß v ext/standard/basic_functions.c) a Directory (definovanß v ext/standard/dir.c).
Tato funkce vracφ asociativnφ pole definovan²ch vlastnostφ objektu obj. Prom∞nn²m deklarovan²m v t°φd∞ jφ╛ je obj instancφ, kter²m nebyla p°i°azena hodnota, nejsou ve vrßcenΘm poli obsa╛eny.
P°φklad 1. Pou╛itφ get_object_vars()
|
Viz takΘ get_class_methods(), get_class_vars()
Tato funkce vracφ nßzev rodiΦovskΘ t°φdy objektu obj.
Viz takΘ get_class(), is_subclass_of()
(PHP 4 >= 4.2.0)
is_a -- Returns TRUE if the object is of this class or has this class as one of its parentsThis function returns TRUE if the object is of this class or has this class as one of its parents, FALSE otherwise.
See also get_class(), get_parent_class(), and is_subclass_of().
Tato funkce vracφ TRUE, pokud je objekt obj instancφ t°φdy, kterß je podt°φdou superclass, jinak FALSE.
Viz takΘ get_class(), get_parent_class()
ClibPDF lets you create PDF documents with PHP. ClibPDF functionality and API are similar to PDFlib. This documentation should be read alongside the ClibPDF manual since it explains the library in much greater detail.
Many functions in the native ClibPDF and the PHP module, as well as in PDFlib, have the same name. All functions except for cpdf_open() take the handle for the document as their first parameter.
Currently this handle is not used internally since ClibPDF does not support the creation of several PDF documents at the same time. Actually, you should not even try it, the results are unpredictable. I can't oversee what the consequences in a multi threaded environment are. According to the author of ClibPDF this will change in one of the next releases (current version when this was written is 1.10). If you need this functionality use the pdflib module.
A nice feature of ClibPDF (and PDFlib) is the ability to create the pdf document completely in memory without using temporary files. It also provides the ability to pass coordinates in a predefined unit length. (This feature can also be simulated by pdf_translate() when using the PDFlib functions.)
Another nice feature of ClibPDF is the fact that any page can be modified at any time even if a new page has been already opened. The function cpdf_set_current_page() allows to leave the current page and presume modifying an other page.
Most of the functions are fairly easy to use. The most difficult part is probably creating a very simple PDF document at all. The following example should help you to get started. It creates a document with one page. The page contains the text "Times-Roman" in an outlined 30pt font. The text is underlined.
Poznßmka: If you're interested in alternative free PDF generators that do not utilize external PDF libraries, see this related FAQ.
In order to use the ClibPDF functions you need to install the ClibPDF package. It is available for download from FastIO, but requires that you purchase a license for commercial use. PHP requires that you use cpdflib >= 2.
To get these functions to work, you have to compile PHP with --with-cpdflib[=DIR]. DIR is the cpdflib install directory, defaults to /usr. In addition you can specify the jpeg library and the tiff library for ClibPDF to use. To do so add to your configure line the options --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR].
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
P°φklad 1. Simple ClibPDF Example
|
The pdflib distribution contains a more complex example which creates a series of pages with an analog clock. Here is that example converted into PHP using the ClibPDF extension:
P°φklad 2. pdfclock example from pdflib 2.0 distribution
|
The cpdf_add_annotation() adds a note with the lower left corner at (llx, lly) and the upper right corner at (urx, ury). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
The cpdf_add_outline() function adds a bookmark with text text that points to the current page.
The cpdf_arc() function draws an arc with center at point (x-coor, y-coor) and radius radius, starting at angle start and ending at angle end. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_circle().
The cpdf_begin_text() function starts a text section. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The created text section must be ended with cpdf_end_text().
See also cpdf_end_text().
The cpdf_circle() function draws a circle with center at point (x-coor, y-coor) and radius radius. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_arc().
The cpdf_clip() function clips all drawing to the current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_close() function closes the pdf document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. This should be the last function even after cpdf_finalize(), cpdf_output_buffer() and cpdf_save_to_file().
See also cpdf_open().
The cpdf_closepath_fill_stroke() function closes, fills the interior of the current path with the current fill color and draws current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_closepath(), cpdf_stroke(), cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray(), cpdf_setrgbcolor_fill() and cpdf_setrgbcolor().
The cpdf_closepath_stroke() function is a combination of cpdf_closepath() and cpdf_stroke(). Then clears the path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_closepath() and cpdf_stroke().
The cpdf_closepath() function closes the current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_continue_text() function outputs the string in text in the next line. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_show_xy(), cpdf_text(), cpdf_set_leading() and cpdf_set_text_pos().
The cpdf_curveto() function draws a Bezier curve from the current point to the point (x3, y3) using (x1, y1) and (x2, y2) as control points. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_moveto(), cpdf_rmoveto(), cpdf_rlineto() and cpdf_lineto().
The cpdf_end_text() function ends a text section which was started with cpdf_begin_text(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_begin_text().
The cpdf_fill_stroke() function fills the interior of the current path with the current fill color and draws current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_closepath(), cpdf_stroke(), cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray(), cpdf_setrgbcolor_fill() and cpdf_setrgbcolor().
The cpdf_fill() function fills the interior of the current path with the current fill color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_closepath(), cpdf_stroke(), cpdf_setgray_fill(), cpdf_setgray(), cpdf_setrgbcolor_fill() and cpdf_setrgbcolor().
The cpdf_finalize_page() function ends the page with page number page_number. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function is only for saving memory. A finalized page takes less memory but cannot be modified anymore.
See also cpdf_page_init().
The cpdf_finalize() function ends the document. You still have to call cpdf_close(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_close().
The cpdf_global_set_document_limits() function sets several document limits. This function has to be called before cpdf_open() to take effect. It sets the limits for any document open afterwards. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_open().
The cpdf_import_jpeg() function opens an image stored in the file with the name file name. The format of the image has to be jpeg. The image is placed on the current page at position (x-coor, y-coor). The image is rotated by angle degrees. gsave should be non-zero to allow this function to operate correctly.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_place_inline_image().
The cpdf_lineto() function draws a line from the current point to the point with coordinates (x-coor, y-coor). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_moveto(), cpdf_rmoveto() and cpdf_curveto().
The cpdf_moveto() function set the current point to the coordinates x-coor and y-coor. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
The cpdf_newpath() starts a new path on the document given by the pdf_document parameter. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_open() function opens a new pdf document. The first parameter turns document compression on if it is unequal to 0. The second optional parameter sets the file in which the document is written. If it is omitted the document is created in memory and can either be written into a file with the cpdf_save_to_file() or written to standard output with cpdf_output_buffer().
Poznßmka: The return value will be needed in further versions of ClibPDF as the first parameter in all other functions which are writing to the pdf document.
The ClibPDF library takes the filename "-" as a synonym for stdout. If PHP is compiled as an apache module this will not work because the way ClibPDF outputs to stdout does not work with apache. You can solve this problem by skipping the filename and using cpdf_output_buffer() to output the pdf document.
See also cpdf_close() and cpdf_output_buffer().
The cpdf_output_buffer() function outputs the pdf document to stdout. The document has to be created in memory which is the case if cpdf_open() has been called with no filename parameter. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_open().
The cpdf_page_init() function starts a new page with height height and width width. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The page has number page_number and orientation orientation. orientation can be 0 for portrait and 1 for landscape. The last optional parameter unit sets the unit for the coordinate system. The value should be the number of postscript points per unit. Since one inch is equal to 72 points, a value of 72 would set the unit to one inch. The default is also 72.
See also cpdf_set_current_page().
The cpdf_place_inline_image() function places an image created with the PHP image functions on the page at position (x-coor, y-coor). The image can be scaled at the same time. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_import_jpeg().
The cpdf_rect() function draws a rectangle with its lower left corner at point (x-coor, y-coor). This width is set to width. This height is set to height. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
P°φklad 1. Drawing a rectangle
|
The cpdf_restore() function restores the environment saved with cpdf_save(). It works like the postscript command grestore. Very useful if you want to translate or rotate an object without effecting other objects. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_save().
The cpdf_rlineto() function draws a line from the current point to the relative point with coordinates (x-coor, y-coor). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_moveto(), cpdf_rmoveto() and cpdf_curveto().
The cpdf_rmoveto() function set the current point relative to the coordinates x-coor and y-coor. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_moveto().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The cpdf_rotate() function set the rotation in degrees to angle. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_save_to_file() function outputs the pdf document into a file if it has been created in memory. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function is not needed if the pdf document has been open by specifying a filename as a parameter of cpdf_open().
See also cpdf_output_buffer() and cpdf_open().
The cpdf_save() function saves the current environment. It works like the postscript command gsave. Very useful if you want to translate or rotate an object without effecting other objects. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_restore().
The cpdf_scale() function set the scaling factor in both directions. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The cpdf_set_char_spacing() function sets the spacing between characters. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_word_spacing() and cpdf_set_leading().
The cpdf_set_creator() function sets the creator of a pdf document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_subject(), cpdf_set_title() and cpdf_set_keywords().
The cpdf_set_current_page() function set the page on which all operations are performed. One can switch between pages until a page is finished with cpdf_finalize_page(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_finalize_page().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.0.6)
cpdf_set_font_map_file -- Sets fontname to filename translation map when using external fonts
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The cpdf_set_font() function sets the current font face, font size and encoding. Currently only the standard postscript fonts are supported. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The last parameter encoding can take the following values: "MacRomanEncoding", "MacExpertEncoding", "WinAnsiEncoding", and "NULL". "NULL" stands for the font's built-in encoding.
See the ClibPDF Manual for more information, especially how to support Asian fonts.
The cpdf_set_horiz_scaling() function sets the horizontal scaling to scale percent. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_set_keywords() function sets the keywords of a pdf document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_title(), cpdf_set_creator() and cpdf_set_subject().
The cpdf_set_leading() function sets the distance between text lines. This will be used if text is output by cpdf_continue_text(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_continue_text().
The cpdf_set_page_animation() function set the transition between following pages. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The value of transition can be
0 for none, |
1 for two lines sweeping across the screen reveal the page, |
2 for multiple lines sweeping across the screen reveal the page, |
3 for a box reveals the page, |
4 for a single line sweeping across the screen reveals the page, |
5 for the old page dissolves to reveal the page, |
6 for the dissolve effect moves from one screen edge to another, |
7 for the old page is simply replaced by the new page (default) |
The value of duration is the number of seconds between page flipping.
The cpdf_set_subject() function sets the subject of a pdf document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_title(), cpdf_set_creator() and cpdf_set_keywords().
The cpdf_set_text_matrix() function sets a matrix which describes a transformation applied on the current text font. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_set_text_pos() function sets the position of text for the next cpdf_show() function call. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
See also cpdf_show() and cpdf_text().
The cpdf_set_text_rendering() function determines how text is rendered. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The possible values for rendermode are 0=fill text, 1=stroke text, 2=fill and stroke text, 3=invisible, 4=fill text and add it to clipping path, 5=stroke text and add it to clipping path, 6=fill and stroke text and add it to clipping path, 7=add it to clipping path.
The cpdf_set_text_rise() function sets the text rising to value units. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_set_title() function sets the title of a pdf document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_subject(), cpdf_set_creator() and cpdf_set_keywords().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The cpdf_set_word_spacing() function sets the spacing between words. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_set_char_spacing() and cpdf_set_leading().
The cpdf_setdash() function set the dash pattern white white units and black black units. If both are 0 a solid line is set. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setflat() function set the flatness to a value between 0 and 100. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setgray_fill() function sets the current gray value to fill a path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_setrgbcolor_fill().
The cpdf_setgray_stroke() function sets the current drawing color to the given gray value. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_setrgbcolor_stroke().
The cpdf_setgray() function sets the current drawing and filling color to the given gray value. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_setrgbcolor_stroke() and cpdf_setrgbcolor_fill().
The cpdf_setlinecap() function set the linecap parameter between a value of 0 and 2. 0 = butt end, 1 = round, 2 = projecting square. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setlinejoin() function set the linejoin parameter between a value of 0 and 2. 0 = miter, 1 = round, 2 = bevel. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setlinewidth() function set the line width to width. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setmiterlimit() function set the miter limit to a value greater or equal than 1. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The cpdf_setrgbcolor_fill() function sets the current rgb color value to fill a path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The values are expected to be floating point values between 0.0 and 1.0. (i.e black is (0.0, 0.0, 0.0) and white is (1.0, 1.0, 1.0)).
See also cpdf_setrgbcolor_stroke() and cpdf_setrgbcolor().
The cpdf_setrgbcolor_stroke() function sets the current drawing color to the given rgb color value. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The values are expected to be floating point values between 0.0 and 1.0. (i.e black is (0.0, 0.0, 0.0) and white is (1.0, 1.0, 1.0)).
See also cpdf_setrgbcolor_fill() and cpdf_setrgbcolor().
The cpdf_setrgbcolor() function sets the current drawing and filling color to the given rgb color value. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The values are expected to be floating point values between 0.0 and 1.0. (i.e black is (0.0, 0.0, 0.0) and white is (1.0, 1.0, 1.0)).
See also cpdf_setrgbcolor_stroke() and cpdf_setrgbcolor_fill().
The cpdf_show_xy() function outputs the string text at position with coordinates (x-coor, y-coor). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
Poznßmka: The function cpdf_show_xy() is identical to cpdf_text() without the optional parameters.
See also cpdf_text().
The cpdf_show() function outputs the string in text at the current position. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_text(), cpdf_begin_text() and cpdf_end_text().
The cpdf_stringwidth() function returns the width of the string in text. It requires a font to be set before.
See also cpdf_set_font().
The cpdf_stroke() function draws a line along current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also cpdf_closepath() and cpdf_closepath_stroke().
The cpdf_text() function outputs the string text at position with coordinates (x-coor, y-coor). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
The optional parameter orientation is the rotation of the text in degree.
The optional parameter alignmode determines how the text is aligned.
See the ClibPDF documentation for possible values.
See also cpdf_show_xy().
The cpdf_translate() function set the origin of coordinate system to the point (x-coor, y-coor). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Nepovinn² parametr mode urΦuje dΘlku jednotky. Kdy╛ je nastaven na 0 nebo nenφ uveden, je pou╛ita v²chozφ jednotka strßnky. Jinak jsou sou°adnice m∞°eny v bodech PostScript bez ohledu na aktußlnφ jednotku.
These functions allow you to use the CrackLib library to test the 'strength' of a password. The 'strength' of a password is tested by that checks length, use of upper and lower case and checked against the specified CrackLib dictionary. CrackLib will also give helpful diagnostic messages that will help 'strengthen' the password.
More information regarding CrackLib along with the library can be found at http://www.crypticide.org/users/alecm/.
In order to use these functions, you must compile PHP with Crack support by using the --with-crack[=DIR] option.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Crack configuration options
Name | Default | Changeable |
---|---|---|
crack.default_dictionary | NULL | PHP_INI_SYSTEM |
This example shows how to open a CrackLib dictionary, test a given password, retrieve any diagnostic messages, and close the dictionary.
P°φklad 1. CrackLib example
|
Poznßmka: If crack_check() returns TRUE, crack_getlastmessage() will return 'strong password'.
Returns TRUE if password is strong, or FALSE otherwise.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
crack_check() performs an obscure check with the given password on the specified dictionary . If dictionary is not specified, the last opened dictionary is used.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
crack_closedict() closes the specified dictionary identifier. If dictionary is not specified, the current dictionary is closed.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
crack_getlastmessage() returns the message from the last obscure check.
Returns a dictionary resource identifier on success, or FALSE on failure.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
crack_opendict() opens the specified CrackLib dictionary for use with crack_check().
Poznßmka: Only one dictionary may be open at a time.
See also: crack_check(), and crack_closedict().
PHP podporuje libcurl, knihovnu vytvo°enou Danielem Stenbergem, kterß umo╛≥uje spojenφ a komunikaci s mnoha r∙zn²mi typy server∙ v mnoha r∙zn²ch typech protokol∙. libcurl v souΦasnΘ dob∞ podporuje http, https, ftp, gopher, telnet, dict, file a ldap protokoly. libcurl takΘ podporuje HTTPS certifikßty, HTTP POST, HTTP PUT, FTP uploady (toto umo╛≥uje i ftp extenze PHP), HTTP formulß°ovΘ uploady, proxy, cookies a user+password autentikaci.
Tyto funkce byly p°idßny v PHP 4.0.2.
Pokud chcete pou╛φvat CURL funkce, musφte nainstalovat CURL. PHP vy╛aduje pou╛itφ CURL 7.0.2-beta nebo vy╣╣φ. S verzemi CURL star╣φmi ne╛ 7.0.2-beta PHP nebude pracovat. V PHP 4.2.3 budete pot°ebovat CURL 7.9.0 nebo vy╣╣φ. Od PHP 4.3.0 budete pot°ebovat CURL 7.9.8 nebo vy╣╣φ. PHP 5.0.0 bude nejspφ╣ pot°ebovat CURL verze v∞t╣φ ne╛ 7.10.5
Dßle musφte PHP zkompilovat s volbou --with-curl[=DIR], kde DIR je umφst∞nφ adresß°e obsahujφcφho lib a include adresß°e. V "include" adresß°i by m∞l b²t adresß° pojmenovan² "curl", kter² by m∞l obsahovat soubory easy.h and curl.h. V adresß°i "lib" by m∞l b²t soubor pojmenovan² "libcurl.a". PoΦφnaje PHP 4.3.0 m∙╛ete PHP nakonfigurovat tak, aby po╛φvalo CURL pro url-streamy pomocφ direktivy --with-curlwrappers.
Poznßmka pro Win32 u╛ivatele: Pro zaji╣t∞nφ funkce tohoto roz╣φ°enφ ve Windows musφte zkopφrovat knihovny libeay32.dll a ssleay32.dll z adresß°e DLL distribuce PHP/Win32 do adresß°e SYSTEM. (Nap°.: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM)
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Pokud mßte PHP zkompilovanΘ s podporou CURL, m∙╛ete zaΦφt pou╛φvat CURL funkce. Zßkladnφ principem t∞chto funkcφ je, ╛e pomocφ curl_init() inicializujete CURL session, potom pomocφ curl_exec() nastavφte hodnoty p°enosu a nakonec session zav°ete pomocφ curl_close(). Nßsleduje ukßzka, kterß vyu╛φva CURL funkce ke sta╛enφ homepage PHP do souboru:
Tato funkce zav°e CURL session a uvolnφ v╣echny zdroje. CURL handle, ch, se takΘ sma╛e.
Returns the error number for the last cURL operation on the resource ch, or 0 (zero) if no error occurred.
See also curl_error().
Returns a clear text error message for the last cURL operation on the resource ch, or '' (the empty string) if no error occurred.
See also curl_errno().
Tuto funkci byste m∞li zavolat po inicializaci CURL session a nastavenφ v╣ech jejφch parametr∙. Jejφm ·Φelem je provΘst p°eddefinovanou CURL session (urΦenou argumentem ch).
Returns information about the last transfer, opt may be one of the following:
"CURLINFO_EFFECTIVE_URL" - Last effective URL
"CURLINFO_HTTP_CODE" - Last received HTTP code
"CURLINFO_FILETIME" - Remote time of the retrieved document, if -1 is returned the time of the document is unknown
"CURLINFO_TOTAL_TIME" - Total transaction time in seconds for last transfer
"CURLINFO_NAMELOOKUP_TIME" - Time in seconds until name resolving was complete
"CURLINFO_CONNECT_TIME" - Time in seconds it took to establish the connection
"CURLINFO_PRETRANSFER_TIME" - Time in seconds from start until just before file transfer begins
"CURLINFO_STARTTRANSFER_TIME" - Time in seconds until the first byte is about to be transferred
"CURLINFO_REDIRECT_TIME" - Time in seconds of all redirection steps before final transaction was started
"CURLINFO_SIZE_UPLOAD" - Total number of bytes uploaded
"CURLINFO_SIZE_DOWNLOAD" - Total number of bytes downloaded
"CURLINFO_SPEED_DOWNLOAD" - Average download speed
"CURLINFO_SPEED_UPLOAD" - Average upload speed
"CURLINFO_HEADER_SIZE" - Total size of all headers received
"CURLINFO_REQUEST_SIZE" - Total size of issued requests, currently only for HTTP requests
"CURLINFO_SSL_VERIFYRESULT" - Result of SSL certification verification requested by setting CURLOPT_SSL_VERIFYPEER
"CURLINFO_CONTENT_LENGTH_DOWNLOAD" - content-length of download, read from Content-Length: field
"CURLINFO_CONTENT_LENGTH_UPLOAD" - Specified size of upload
"CURLINFO_CONTENT_TYPE" - Content-type of downloaded object, NULL indicates server did not send valid Content-Type: header
If called without the optional parameter opt an associative array is returned with the following array elements which correspond to opt options:
"url"
"content_type"
"http_encode"
"header_size"
"request_size"
"filetime"
"ssl_verify_result"
"redirect_count"
"total_time"
"namelookup_time"
"connect_time"
"pretransfer_time"
"size_upload"
"size_download"
"speed_download"
"speed_upload"
"download_content_length"
"upload_content_length"
"starttransfer_time"
"redirect_time"
curl_init() inicializuje novou session a vracφ CURL handle pro pou╛itφ s funkcemi curl_setopt(), curl_exec() a curl_close(). Pokud je p°φtomen voliteln² argument url, CURLOPT_URL se nastavφ na hodnotu tohoto argumentu. M∙╛ete to ud∞lat i ruΦn∞, pomocφ funkce curl_setopt().
Viz takΘ: curl_close(), curl_setopt()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init(), curl_init(), and curl_multi_remove_handle().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init() and curl_close().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init() and curl_exec().
(PHP 5 CVS only)
curl_multi_getcontent -- Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is setVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_init() and curl_multi_close().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init(), curl_init(), and curl_multi_add_handle().
(PHP 5 CVS only)
curl_multi_select -- Get all the sockets associated with the cURL extension, which can then be "selected"Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also curl_multi_init().
curl_setopt() nastavuje parametry CURL session ch. option je parametr, kter² chcete nastavit a value je hodnota, na kterou se mß option nastavit.
Argument value by m∞l u nßsledujφcφch hodnot argumentu option obsahovat integer:
CURLOPT_INFILESIZE: Tento parametr by m∞l u upload∙ obsahovat velikost uploadovanΘho souboru.
CURLOPT_VERBOSE: Pokud chcete, aby CURL podßvala zprßvy o v╣em co se d∞je, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_HEADER: Pokud chcete, aby v²stup obsahoval hlaviΦky, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_NOPROGRESS: Pokud PHP nemß zobrazit m∞°idlo postupu CURL transferu, nastavte tento parametr na nenulovou hodnotu.
Poznßmka: PHP tento parametr automaticky nastavuje na nenulovou hodnotu, zm∞na je vhodnß pouze pro ·Φely lad∞nφ.
CURLOPT_NOBODY: Pokud nechete, aby bylo ve v²stupu zahrnuto t∞lo v²stupu, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_FAILONERROR: Pokud mß PHP ti╣e ukonΦit transfer po p°ijetφ HTTP server k≤du v∞t╣φho ne╛ 300, nastavte tento parametr na nenulovou hodnotu. Defaultnφ chovßnφ je ignorovat nßvratov² k≤d a normßln∞ vrßtit strßnku.
CURLOPT_UPLOAD: Pokud chcete PHP p°ipravit na upload, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_POST: Pokud chcete, aby PHP provedl b∞╛n² HTTP POST po°adavek, nastavte tento parametr na nenulovou hodnotu. Jednß se o b∞╛n² application/x-www-from-urlencoded POST po╛adavek, kter² se v∞t╣inou pou╛φvß u HTML formulß°∙.
CURLOPT_FTPLISTONLY: Pokud chcete, aby PHP vypsalo nßzvy soubor∙ v FTP adresß°i, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_FTPAPPEND: Pokud chcete, aby PHP mφsto p°epsßnφ vzdßlenΘho souboru p°ipojilo upload k jeho obsahu, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_NETRC: Pokud mß PHP ve va╣em ~./netrc souboru hledat va╣e u╛ivatelskΘ jmΘno a heslo pro server ke kterΘmu se p°ipojujete.
CURLOPT_FOLLOWLOCATION: Pokud mß PHP provßd∞t p°esm∞rovßnφ u p°φpadn²ch "Location: " hlaviΦek vrßcen²ch serverem. (Pozn.: rekurzivnφ, PHP provede p°esm∞rovßnφ pro v╣echny "Location: " hlaviΦky, kterΘ p°ijme.)
CURLOPT_PUT: Pokud chcete uploadovat soubor pomocφ HTTP metody PUT, nastavte tento parametr na nenulovou hodnotu. Uploadovan² soubor musφ b²t urΦen parametry CURLOPT_INFILE a CURLOPT_INFILESIZE.
CURLOPT_MUTE: Pokud mß b²t PHP naprosto tichΘ ohledn∞ CURL funkcφ, nastavte tento parametr na nenulovou hodnotu.
CURLOPT_TIMEOUT: Integer urΦujφcφ maximßlnφ Φas ve vte°inßch, kter² mohou CURL funkce zabrat.
CURLOPT_LOW_SPEED_LIMIT: Integer urΦujφcφ minimßlnφ rychlost p°enosu v bytech za sekundu. Pokud rychlost p°enosu klesne pod tento limit po dobu CURLOPT_LOW_SPEED_TIME sekund, PHP ukonΦφ transfer.
CURLOPT_LOW_SPEED_TIME: Integer urΦujφcφ Φas ve vte°inßch. Pokud rychlost p°enosu klesne na tuto dobu pod CURLOPT_LOW_SPEED_LIMIT, PHP zru╣φ transfer.
CURLOPT_RESUME_FROM: Integer urΦujφcφ offset v bytech, na kterΘm mß transfer zaΦφt.
CURLOPT_SSLVERSION: Integer urΦujφcφ, jakß verze SSL (2 nebo 3) se mß pou╛φt. Defaultn∞ se PHP pokusφ urΦit verzi samo, ale v n∞kter²ch p°φpadech je nutno verzi urΦit manußln∞.
CURLOPT_TIMECONDITION: Definujφcφ chovßnφ CURLOPT_TIMEVALUE. Tento parametr m∙╛e nab²t bu∩ hodnoty TIMECOND_IFMODSINCE nebo TIMECOND_ISUNMODSINCE. Funguje pouze u HTTP p°enos∙.
CURLOPT_TIMEVALUE: Integer urΦujφcφ poΦet vte°in od 1. ledna 1970. Tento Φas se pou╛ije podle intervalu CURLOPT_TIMEVALUE, default je pou╛itφ TIMECOND_IFMODSINCE.
Argument value by m∞l u nßsledujφcφch hodnot argumentu option obsahovat °et∞zec:
CURLOPT_URL: Toto je URL, kterou mß PHP stßhnout. Tento parametr m∙╛ete takΘ nastavit p°i inicializaci CURL session pomocφ funkce curl_init().
CURLOPT_USERPWD: ╪et∞zec ve tvaru [username]:[password] pro pou╛itφ p°i spojenφ.
CURLOPT_PROXYUSERPWD: ╪et∞zec ve tvaru [username]:[password] pro pou╛itφ p°i spojenφ s HTTP proxy.
CURLOPT_RANGE: Pass the specified range you want. It should be in the "X-Y" format, where X or Y may be left out. The HTTP transfers also support several intervals, seperated with commas as in X-Y,N-M.
CURLOPT_POSTFIELDS: ╪et∞zec obsahujφcφ kompletnφ data, kterß se majφ odeslat v HTTP POST po╛adavku.
CURLOPT_REFERER: ╪et∞zec obsahujφcφ "referer" hlaviΦku pro pou╛itφ v HTTP po╛adavku.
CURLOPT_USERAGENT: ╪et∞zec obsahujφcφ "user-agent" hlaviΦku pro pou╛itφ v HTTP po╛adavku.
CURLOPT_FTPPORT: ╪et∞zec, na jeho╛ zßklad∞ se zφskß IP adresa pro FTP "POST" instrukci. POST instrukce °φkß serveru, aby se p°ipojil na danou IP adresu. Tento °et∞zec m∙╛e obsahovat IP adresu, hostname, a network interface name (under UNIX) nebo '-' (pou╛ije se defaultnφ IP adresa systΘmu).
CURLOPT_COOKIE: ╪et∞zec obsahujφcφ cookie, kter² se mß poslat v HTTP hlaviΦce tohoto p°enosu.
CURLOPT_SSLCERT: ╪et∞zec obsahujφcφ nßzev souboru PEM certifikßtu.
CURLOPT_SSLCERTPASSWD: ╪et∞zec obsahujφcφ heslo vy╛adovanΘ pro pou╛itφ CURLOPT_SSLCERT certifikßtu.
CURLOPT_COOKIEFILE: ╪et∞zec obsahujφcφ nßzev souboru obsahujφcφho cookie data. Cookie soubor m∙╛e b²t bu∩ v Netscape formßtu nebo obsahovat HTTP hlaviΦky.
CURLOPT_CUSTOMREQUEST: ╪et∞zec, kter² se mß v HTTP po╛adavku pou╛φt mφsto GET nebo HEAD. Toto je u╛iteΦnΘ p°i DELETE Φi jin²ch, obskurn∞j╣φch HTTP po╛adavcφch.
Poznßmka: Pou╛φvejte pouze v p°φpad∞, ╛e vß╣ server tento p°φkaz podporuje.
Nßsledujφcφ parametry oΦekßvajφ deskriptor vrßcen² funkcφ fopen():
CURLOPT_FILE: Soubor, do kterΘho se mß umφstit v²stup CURL transferu. Default je STDOUT.
CURLOPT_INFILE: Soubor, kter² obsahuje vstup CURL transferu.
CURLOPT_WRITEHEADER: Soubor, do kterΘho se majφ zapsat hlaviΦky v²stupu.
CURLOPT_STDERR: Soubor, do kterΘho se majφ zapisovat chyby mφsto na STDERR.
Tyto funkce jsou dostupnΘ pouze pokud bylo PHP zkompilovßno s volbou --with-cybercash=[DIR].
Tyto funkce byly v PHP 4.3.0 p°esunuty do depozitφ°e PECL.
Pokud mßte dotazy k poslednφmu stavu knihovny CyberCash, pom∙╛e vßm odkaz CyberCash Faq. Ve zkratce lze °φci, ╛e CyberCash byl uveden firmou VeriSign a i kdy╛ slu╛by CyberCash nadßle existujφ, VeriSign doporuΦuje u╛ivatel∙m p°echod. Pro bli╛╣φ informace viz FAQ a odkaz na PECL.
Tato funkce vracφ asociativnφ pole s elementem "errcode", a pokud je "errcode" FALSE, "outbuff" (string), tak "outLth" (long) a "macbuff" (string).
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
To enable Cyrus IMAP support and to use these functions you have to compile PHP with the --with-cyrus option.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The functions provided by this extension check whether a character or string falls into a certain character class according to the current locale (see also setlocale()).
When called with an integer argument these functions behave exactly like their C counterparts from ctype.h.
When called with a string argument they will check every character in the string and will only return TRUE if every character in the string matches the requested criteria. When called with an empty string the result will always be TRUE.
Passing anything else but a string or integer will return FALSE immediately.
Beginning with PHP 4.2.0 these functions are enabled by default. For older versions you have to configure and compile PHP with --enable-ctype. You can disable ctype support with --disable-ctype.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Poznßmka: Builtin support for ctype is available with PHP 4.3.0.
Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. In the standard C locale letters are just [A-Za-z] and the function is equivalent to preg_match('/^[a-z0-9]*$/i', $text).
See also ctype_alpha(), ctype_digit(), and setlocale().
Returns TRUE if every character in text is a letter from the current locale, FALSE otherwise. In the standard C locale letters are just [A-Za-z] and ctype_alpha() is equivalent to (ctype_upper($text) || ctype_lower($text)) if $text is just a single character, but other languages have letters that are considered neither upper nor lower case.
See also ctype_upper(), ctype_lower(), and setlocale().
Returns TRUE if every character in text has a special control function, FALSE otherwise. Control characters are e.g. line feed, tab, esc.
Returns TRUE if every character in text is a decimal digit, FALSE otherwise.
See also ctype_alnum() and ctype_xdigit().
Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
See also ctype_alnum(), ctype_print(), and ctype_punct().
Returns TRUE if every character in text is a lowercase letter in the current locale.
See also ctype_alpha() and ctype_upper().
Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
See also ctype_cntrl(), ctype_graph(), and ctype_punct().
(PHP 4 >= 4.0.4)
ctype_punct -- Check for any printable character which is not whitespace or an alphanumeric characterReturns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
See also ctype_cntrl(), ctype_graph(), and ctype_punct().
Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
Returns TRUE if every character in text is an uppercase letter in the current locale.
See also ctype_alpha() and ctype_lower().
Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
See also ctype_digit().
These functions build the foundation for accessing Berkeley DB style databases.
This is a general abstraction layer for several file-based databases. As such, functionality is limited to a common subset of features supported by modern databases such as Sleepycat Software's DB2. (This is not to be confused with IBM's DB2 software, which is supported through the ODBC functions.)
The behaviour of various aspects depends on the implementation of the underlying database. Functions such as dba_optimize() and dba_sync() will do what they promise for one database and will do nothing for others. You have to download and install supported dba-Handlers.
Tabulka 1. List of DBA handlers
Handler | Notes |
---|---|
dbm | Dbm is the oldest (original) type of Berkeley DB style databases. You should avoid it, if possible. We do not support the compatibility functions built into DB2 and gdbm, because they are only compatible on the source code level, but cannot handle the original dbm format. |
ndbm | Ndbm is a newer type and more flexible than dbm. It still has most of the arbitrary limits of dbm (therefore it is deprecated). |
gdbm | Gdbm is the GNU database manager. |
db2 | DB2 is Sleepycat Software's DB2. It is described as "a programmatic toolkit that provides high-performance built-in database support for both standalone and client/server applications. |
db3 | DB3 is Sleepycat Software's DB3. |
db4 | DB4 is Sleepycat Software's DB4. This is available since PHP 5.0.0. |
cdb | Cdb is "a fast, reliable, lightweight package for creating and reading constant databases." It is from the author of qmail and can be found at http://cr.yp.to/cdb.html. Since it is constant, we support only reading operations. And since PHP 4.3.0 we support writing (not updating) through the internal cdb library. |
cdb_make | Since PHP 4.3.0 we support creation (not updating) of cdb files when the bundled cdb library is used. |
flatfile | This is available since PHP 4.3.0 for compatibility with the deprecated dbm extension only and should be avoided. However you may use this where files were created in this format. That happens when configure could not find any external library. |
inifile | This is available since PHP 4.3.3 to be able to modify php.ini files from within PHP scripts. When working with ini files you can pass arrays of the form array(0=>group,1=>value_name) or strings of the form "[group]value_name" where group is optional. As the functions dba_firstkey() and dba_nextkey() return string representations of the key there is a new function dba_key_split() available since PHP 5 which allows to convert the string keys into array keys without loosing FALSE. |
qdbm | This is available since PHP 5.0.0. The qdbm library can be loaded from http://qdbm.sourceforge.net. |
When invoking the dba_open() or dba_popen() functions, one of the handler names must be supplied as an argument. The actually available list of handlers is displayed by invoking phpinfo() or dba_handlers().
By using the --enable-dba=shared configuration option you can build a dynamic loadable module to enable PHP for basic support of dbm-style databases. You also have to add support for at least one of the following handlers by specifying the --with-XXXX configure switch to your PHP configure line.
Tabulka 2. Supported DBA handlers
Handler | Configure Switch |
---|---|
dbm |
To enable support for dbm add
--with-dbm[=DIR].
|
ndbm |
To enable support for ndbm add
--with-ndbm[=DIR].
|
gdbm | To enable support for gdbm add --with-gdbm[=DIR]. |
db2 |
To enable support for db2 add
--with-db2[=DIR].
|
db3 |
To enable support for db3 add
--with-db3[=DIR].
|
db4 |
To enable support for db4 add
--with-db4[=DIR].
|
cdb |
To enable support for cdb add
--with-cdb[=DIR].
|
flatfile |
To enable support for flatfile add
--with-flatfile.
|
inifile |
To enable support for inifile add
--with-inifile.
|
qdbm |
To enable support for qdbm add
--with-qdbm[=DIR].
|
Poznßmka: Up to PHP 4.3.0 you are able to add both db2 and db3 handler but only one of them can be used internally. That means that you cannot have both file formats. Starting with PHP 5.0.0 there is a configuration check avoid such missconfigurations.
The functions dba_open() and dba_popen() return a handle to the specified database file to access which is used by all other dba-function calls.
DBA is binary safe and does not have any arbitrary limits. However, it inherits all limits set by the underlying database implementation.
All file-based databases must provide a way of setting the file mode of a new created database, if that is possible at all. The file mode is commonly passed as the fourth argument to dba_open() or dba_popen().
You can access all entries of a database in a linear way by using the dba_firstkey() and dba_nextkey() functions. You may not change the database while traversing it.
P°φklad 2. Traversing a database
|
dba_close() closes the established database and frees all resources specified by handle.
handle is a database handle returned by dba_open().
dba_close() does not return any value.
See also: dba_open() and dba_popen()
dba_delete() deletes the entry specified by key from the database specified with handle.
key is the key of the entry which is deleted.
handle is a database handle returned by dba_open().
dba_delete() returns TRUE or FALSE, if the entry is deleted or not deleted, respectively.
See also: dba_exists(), dba_fetch(), dba_insert(), and dba_replace().
dba_exists() checks whether the specified key exists in the database specified by handle.
Key is the key the check is performed for.
Handle is a database handle returned by dba_open().
dba_exists() returns TRUE or FALSE, if the key is found or not found, respectively.
See also: dba_fetch(), dba_delete(), dba_insert(), and dba_replace().
dba_fetch() fetches the data specified by key from the database specified with handle.
Key is the key the data is specified by.
Skip is the number of key-value pairs to ignore when using cdb databases. This value is ignored for all other databases which do not support multiple keys with the same name.
Handle is a database handle returned by dba_open().
dba_fetch() returns the associated string or FALSE, if the key/data pair is found or not found, respectively.
See also: dba_exists(), dba_delete(), dba_insert(), dba_replace() and dba_key_split().
Poznßmka: The skip parameter is available since PHP 4.3 to support cdb's capability of multiple keys having the same name.
Poznßmka: When working with inifiles this function accepts arrays as keys where index 0 is the group and index 1 is the value name. See: dba_key_split().
dba_firstkey() returns the first key of the database specified by handle and resets the internal key pointer. This permits a linear search through the whole database.
Handle is a database handle returned by dba_open().
dba_firstkey() returns the key or FALSE depending on whether it succeeds or fails, respectively.
See also: dba_firstkey(), dba_key_split() and example 2 in the DBA examples
dba_handlers() returns an array with all handlers supported by this extension.
When the internal cdb library is used you will see 'cdb' and 'cdb_make'.
dba_insert() inserts the entry described with key and value into the database specified by handle. It fails, if an entry with the same key already exists.
key is the key of the entry to be inserted.
value is the value to be inserted.
handle is a database handle returned by dba_open().
dba_insert() returns TRUE or FALSE, depending on whether it succeeds of fails, respectively.
See also: dba_exists() dba_delete() dba_fetch() dba_replace()
(no version information, might be only in CVS)
dba_key_split -- Splits a key in string representation into array representationdba_key_split() returns an array of the form array(0=>group,1=>value_name). This function will return FALSE if key is NULL or FALSE.
key is the key in string representation.
See also dba_firstkey(), dba_nextkey() and dba_fetch().
dba_list() returns an associative array with all open database files. This array is in the form: resourceid=>filename.
dba_nextkey() returns the next key of the database specified by handle and advances the internal key pointer.
handle is a database handle returned by dba_open().
dba_nextkey() returns the key or FALSE depending on whether it succeeds or fails, respectively.
See also: dba_firstkey(), dba_key_split() and example 2 in the DBA examples
dba_open() establishes a database instance for path with mode using handler.
path is commonly a regular path in your filesystem.
mode is "r" for read access, "w" for read/write access to an already existing database, "c" for read/write access and database creation if it doesn't currently exist, and "n" for create, truncate and read/write access. Additional you can set the database lock method with the next char. Use "l" to lock the database with an .lck file or "d" to lock the databasefile itself. It is important that all of your applications do this consistently. If you want to test the access and do not want to wait for the lock you can add "t" as third character. When you are absolutely sure that you do not require database locking you can do so by using "-" instead of "l" or "d". When none of "d", "l" or "-" is used dba will lock on the database file as it would with "d".
handler is the name of the handler which shall be used for accessing path. It is passed all optional parameters given to dba_open() and can act on behalf of them.
dba_open() returns a positive handle or FALSE, in the case the database was opened successfull or fails, respectively.
Poznßmka: There can only be one writer for one database file. When you use dba on a webserver and more than one request requires write operations they can only be done one after another. Also read during write is not allowed. The dba extension uses locks to prevent this. See the following table:
Tabulka 1. DBA locking
already open mode = "rl" mode = "rlt" mode = "wl" mode = "wlt" mode = "rd" mode = "rdt" mode = "wd" mode = "wdt" not open ok ok ok ok ok ok ok ok mode = "rl" ok ok wait false illegal illegal illegal illegal mode = "wl" wait false wait false illegal illegal illegal illegal mode = "rd" illegal illegal illegal illegal ok ok wait false mode = "wd" illegal illegal illegal illegal wait false wait false
ok: the second call will be successfull. wait: the second call waits until dba_close() is called for the first. false: the second call returns false. illegal: you must not mix "l" and "d" modifiers for mode parameter.
Poznßmka: Since PHP 4.3.0 it is possible to open database files over network connection. However in cases a socket connection will be used (as with http or ftp) the connection will be locked instead of the resource itself. This is important to know since in such cases locking is simply ignored on the resource and other solutions have to be found.
Poznßmka: Locking and the mode modifiers "l", "d", "-" and "t" were added in PHP 4.3.0. In PHP versions before PHP 4.3.0 you must use semaphores to guard against simultaneous database access for any database handler with the exception of GDBM. See System V semaphore support.
Poznßmka: Up to PHP 4.3.5 open mode 'c' is broken for several internal handlers and truncates the database instead of appending data to an existant database. Also dbm and ndbm fail on mode 'c' in typical configurations (this cannot be fixed).
See also: dba_popen() dba_close()
dba_optimize() optimizes the underlying database specified by handle.
handle is a database handle returned by dba_open().
dba_optimize() returns TRUE or FALSE, if the optimization succeeds or fails, respectively.
See also: dba_sync()
dba_popen() establishes a persistent database instance for path with mode using handler.
path is commonly a regular path in your filesystem.
mode is "r" for read access, "w" for read/write access to an already existing database, "c" for read/write access and database creation if it doesn't currently exist, and "n" for create, truncate and read/write access.
handler is the name of the handler which shall be used for accessing path. It is passed all optional parameters given to dba_popen() and can act on behalf of them.
dba_popen() returns a positive handle or FALSE, in the case the open is successful or fails, respectively.
See also: dba_open() dba_close()
dba_replace() replaces or inserts the entry described with key and value into the database specified by handle.
key is the key of the entry to be inserted.
value is the value to be inserted.
handle is a database handle returned by dba_open().
dba_replace() returns TRUE or FALSE, depending on whether it succeeds of fails, respectively.
See also: dba_exists(), dba_delete(), dba_fetch(), and dba_insert().
dba_sync() synchronizes the database specified by handle. This will probably trigger a physical write to disk, if supported.
handle is a database handle returned by dba_open().
dba_sync() returns TRUE or FALSE, if the synchronization succeeds or fails, respectively.
See also: dba_optimize()
Tyto funkce vßm umo╛≥ujφ zφskat datum a Φas ze serveru, na kterΘm b∞╛φ PHP skripty. Lze je pou╛φt k formßtovßnφ zßpisu Φasu a data mnoha r∙zn²mi zp∙soby.
Poznßmka: Uv∞domte si prosφm, ╛e tyto funkce zßvisφ na nßrodnφm nastavenφ va╣eho serveru. Zvlß╣tnφ pozornost v∞nujte letnφmu Φasu a p°estupn²m rok∙m!
Vracφ TRUE, je-li danΘ datum platnΘ; v ostatnφch p°φpadech FALSE. Platnost se ov∞°uje u data slo╛enΘho z hodnot v argumentech. Datum je ohodnoceno jako platnΘ, pokud:
rok je mezi 1 a 32767 vΦetn∞
m∞sφc je mezi 1 a 12 vΦetn∞
Den day je v mezφch povolenΘho poΦtu dn∙ pro dan² m∞sφc month. P°estupnΘ roky jsou brßny v ·vahu.
Viz takΘ mktime() a strtotime().
Vracφ °et∞zec formßtovan² podle danΘho formßtovacφho °et∞zce s pou╛itφm danΘho celoΦφselnΘho ΦasovΘho razφtka timestamp nebo aktußlnφho mφstnφho Φasu (nenφ-li ΦasovΘ razφtko zadßno). Jin²mi slovy, parametr timestamp je nepovinn² a jeho v²chozφ hodnota je v²sledek funkce time().
Poznßmka: Platn² rozsah pro ΦasovΘ razφtko je typicky od pßtku 13.12.1901 20:45:54 GMT do ·ter² 19.1.2038 03:14:07 GMT. (Tyto hodnoty odpovφdajφ minimßlnφ a maximßlnφ hodnot∞ 32-bitovΘho celΘho Φφsla se znamΘnkem). Na Windows je tento rozsah omezen na obdobφ 1.1.1970 a╛ 19.1.2038.
K vygenerovßnφ ΦasovΘho razφtka z °et∞zce reprezentujφcφho datum lze pou╛φt funkci strtotime(). Navφc n∞kterΘ databßze majφ funkce, kterΘ konvertujφ jejich datovΘ formßty na Φasovß razφtka (nap°. funce UNIX_TIMESTAMP v MySQL).
Tabulka 1. Ve formßtovacφm °et∞zci lze pou╛φvat tyto znaky:
znak parametru format | Popis | Ukßzka vracen²ch hodnot |
---|---|---|
a | P°φznak dopoledne/odpoledne mal²mi pφsmeny | am nebo pm |
A | P°φznak dopoledne/odpoledne velk²mi pφsmeny | AM nebo PM |
B | Internetov² Φas Swatch | 000 a╛ 999 |
d | Den m∞sφce, dv∞ Φφslice s ·vodnφmi nulami | 01 a╛ 31 |
D | Textovß reprezentace dne, t°i znaky | Mon a╛ Sun |
F | Plnß textovß reprezentace m∞sφce typu January nebo March | January a╛ December |
g | 12-hodinov² formßt hodiny bez ·vodnφch nul | 1 a╛ 12 |
G | 24-hodinov² formßt hodiny bez ·vodnφch nul | 0 a╛ 23 |
h | 12-hodinov² formßt hodiny s ·vodnφmi nulami | 01 a╛ 12 |
H | 24-hodinov² formßt hodiny s ·vodnφmi nulami | 00 a╛ 23 |
i | Minuty s ·vodnφmi nulami | 00 a╛ 59 |
I (velkΘ i) | Zji╣t∞nφ, zda je letnφ Φas | 1 pokud je letnφ Φas, 0 jinak. |
j | Den m∞sφce bez ·vodnφch nul | 1 a╛ 31 |
l (malΘ 'L') | Plnß textovß reprezentace dne v t²dnu | Sunday a╛ Saturday |
L | Zji╣t∞nφ, zda je rok p°estupn² | 1 pokud je p°estupn² rok, 0 jinak. |
m | ╚φselnß reprezentace m∞sφce s ·vodnφmi nulami | 01 a╛ 12 |
M | Krßtkß textovß reprezentace m∞sφce, t°i znaky | Jan a╛ Dec |
n | ╚φselnß reprezentace m∞sφce bez ·vodnφch nul | 1 a╛ 12 |
O | Odchylka od GreenwichskΘho Φasu (GMT) v hodinßch | P°φklad: +0200 |
r | Datum formßtovanΘ podle RFC 822 | P°φklad: Thu, 21 Dec 2000 16:01:07 +0200 |
s | Sekundy s ·vodnφmi nulami | 00 a╛ 59 |
S | Anglickß po°adovß p°φpona dne v m∞sφci, 2 znaky | st, nd, rd nebo th. Dob°e funguje s j |
t | PoΦet dnφ v danΘm m∞sφci | 28 a╛ 31 |
T | Nastavenφ ΦasovΘho pßsma na tomto poΦφtaΦi | P°φklady: EST, MDT ... |
U | Sekundy od poΦßtku Θry Unix (1. ledna 1970 00:00:00 GMT) | Viz takΘ time() |
w | ╚φselnß reprezentace dne v t²dnu | 0 (pro ned∞li) a╛ 6 (pro sobotu) |
W | ╚φslo t²dne podle ISO-8601, t²dny zaΦφnajφ v pond∞lφ (dopln∞no v PHP 4.1.0) | P°φklad: 42 (42. t²den v roce) |
Y | Plnß Φφselnß reprezentace roku, 4 Φφslice | P°φklady: 1999 nebo 2003 |
y | Dvoucifernß reprezentace roku | P°φklady: 99 nebo 03 |
z | Den v roce | 0 a╛ 366 |
Z | Posun ΦasovΘho pßsma v sekundßch. Posun Φasov²ch pßsem zßpadn∞ od UTC je v╛dy zßporn², v²chodn∞ od UTC je v╛dy kladn². | -43200 a╛ 43200 |
NerozpoznanΘ znaky ve formßtovacφm °et∞zci se vytiskou tak, jak jsou. P°i pou╛itφ gmdate() mß formßt Z v╛dy hodnotu 0.
RozpoznßvanΘ znaky ve formßtovacφm °et∞zci m∙╛ete ochrßnit p°ed zpracovßnφm tak, ╛e jim p°ed°adφte obrßcenΘ lomφtko. Pokud u╛ mß znak s obrßcen²m lomφtkem specißlnφ v²znam, je t°eba p°ed n∞j p°idat je╣t∞ jedno obrßcenΘ lomφtko.
Je mo╛nΘ pou╛φt spoleΦn∞ date() a mktime() k nalezenφ dat v budoucnosti Φi v minulosti.
P°φklad 3. P°φklad - date() a mktime()
|
Poznßmka: Toto m∙╛e b²t spolehliv∞j╣φ ne╛ prostΘ p°iΦφtßnφ nebo odΦφtßnφ sekund ve dni nebo m∞sφci (kv∙li letnφmu Φasu).
N∞kolik p°φklad∙ formßtovßnφ pomocφ date(). Nezapome≥te, ╛e byste m∞li p°ed°adit obrßcenΘ lomφtko v╣em ostatnφm znak∙m, proto╛e ty, kterΘ majφ nynφ specißlnφ v²znam, budou zp∙sobovat neoΦekßvanΘ v²sledky, a ostatnφm m∙╛e b²t p°i°azen v²znam v budoucφch verzφch PHP. Ve v╣ech takov²ch p°φpadech takΘ musφte pou╛φvat apostrofy (k ohraniΦenφ °et∞zce), abyste zabrßnili znak∙m jako \n v od°ßdkovßnφ.
P°φklad 4. Formßtovßnφ pomocφ date()
|
Pro formßtovßnφ dat v jin²ch jazycφch je t°eba pou╛φt funkce setlocale() a strftime().
Viz takΘ getlastmod(), gmdate(), mktime(), strftime() a time().
Vracφ asociativnφ pole obsahujφcφ informaci o datu (Φase) v argumentu timestamp nebo aktußlnφ mφstnφ Φas (pokud nenφ argument p°φtomen), jako tyto elementy:
Tabulka 1. KlφΦe vrßcenΘho asociativnφho pole
KlφΦ | Popis | Ukßzka vracen²ch hodnot |
---|---|---|
"seconds" | ╚φselnß reprezentace sekund | 0 a╛ 59 |
"minutes" | ╚φselnß reprezentace minut | 0 a╛ 59 |
"hours" | ╚φselnß reprezentace hodin | 0 a╛ 23 |
"mday" | ╚φselnß reprezentace dne v m∞sφci | 1 a╛ 31 |
"wday" | ╚φselnß reprezentace dne v t²dnu | 0 (pro ned∞li) a╛ 6 (pro sobotu) |
"mon" | ╚φselnß reprezentace m∞sφce | 1 a╛ 12 |
"year" | Plnß Φφselnß reprezentace roku, 4 Φφslice | P°φklady: 1999 nebo 2003 |
"yday" | ╚φselnß reprezentace dne v roce | 0 a╛ 366 |
"weekday" | Plnß textovß reprezentace dne v t²dnu | Sunday a╛ Saturday |
"month" | Plnß textovß reprezentace m∞sφce | January a╛ December |
0 | Sekundy Θry Unixu, obdobn∞ jako hodnoty vracenΘ funkcφ time() a pou╛φvanΘ funkcφ date(). | ZßvislΘ na systΘmu, typicky -2147483648 a╛ 2147483647. |
Viz takΘ date(), time() a setlocale().
Toto je rozhranφ k volßnφ gettimeofday(2). Vracφ asociativnφ pole obsahujφcφ data vrßcenß tφmto systΘmov²m volßnφm.
"sec" - sekundy
"usec" - mikrosekundy
"minuteswest" - minuty zßpadn∞ od Greenwiche
"dsttime" - typ korekce letnφho Φasu
IdentickΘ k funkci date() krom∞ toho, ╛e vrßcen² Φas je Greenwich Mean Time (GMT). Nap°φklad p°i spu╣t∞nφ ve Finsku (GMT +0200) vypφ╣e prvnφ nφ╛e uveden² °ßdek "Jan 01 1998 00:00:00", zatφmco druh² "Dec 31 1997 22:00:00".
Poznßmka: V operaΦnφm systΘmu Microsoft Windows jsou systΘmovΘ knihovny implementujφcφ tuto funkci po╣kozenΘ, tak╛e funkce gmdate() nepodporuje negativnφ hodnoty parametru timestamp. Blφ╛e viz bug-reporty: #22620, #22457 a #14391.
K tomuto problΘmu nedochßzφ v operaΦnφch systΘmech Unix/Linux, kde se systΘmovΘ knihovny chovajφ podle oΦekßvßnφ.
PHP nemß moc opravit po╣kozenΘ systΘmovΘ knihovny. Kontaktujte prodejce svΘho OS, aby tento a podobnΘ problΘmy opravil.
Viz takΘ date(), mktime(), gmmktime() a strftime().
IdentickΘ k mktime(), krom∞ toho, ╛e parametry reprezentujφ datum/Φas v GMT.
Podobn∞ jako u funkce mktime() mohou b²t parametry vynechßny v po°adφ zprava doleva. NeuvedenΘ parametry budou nastaveny na odpovφdajφcφ hodnotu souΦasnΘho GMT.
Chovß se stejn∞ jako strftime(), av╣ak vrßcen² Φas je v Greenwich Mean Time (GMT). Nap°φklad p°i spu╣t∞nφ v Φase EST (v²chodnφ standardnφ Φas, GMT -0500) vypφ╣e prvnφ nφ╛e uveden² °ßdek "Dec 31 1998 20:00:00", zatφmco druh² "Jan 01 1999 01:00:00".
Viz takΘ strftime().
Funkce localtime() vracφ pole strukturßln∞ identickΘ k nßvratovΘ hodnot∞ volßnφ v C. Prvnφ argument funkce localtime() je ΦasovΘ razφtko; nenφ-li dßno, pou╛ije se aktußlnφ Φas, kter² vrßtφ funkce time(). Druh² argument localtime() je is_associative, kter² (nastavenφm na nulu) signalizuje, ╛e vracenΘ pole je obyΦejnΘ, Φφseln∞ indexovanΘ pole. Je-li argument nastaven na 1, potom localtime() vracφ asociativnφ pole obsahujφcφ v╣echny elementy struktury vrßcenΘ p°φslu╣n²m funkΦnφm volßnφm v C. Nßzvy klφΦ∙ tohoto pole jsou nßsledujφcφ:
"tm_sec" - sekunda
"tm_min" - minuta
"tm_hour" - hodina
"tm_mday" - den v m∞sφci
"tm_mon" - m∞sφc v roce, poΦφnaje 0 (leden)
"tm_year" - roky od 1900
"tm_wday" - den v t²dnu
"tm_yday" - den v roce
"tm_isdst" - platφ letnφ Φas
Vracφ °et∞zec "msec sec", kde sec je aktußlnφ Φas m∞°en² poΦtem sekund od Unix Epoch (0:00:00 January 1, 1970 GMT) a msec je mikrosekundovß Φßst. Tato funkce je dostupnß pouze na operaΦnφch systΘmech, kterΘ podporujφ systΘmovΘ volßnφ gettimeofday().
Ob∞ Φßsti °et∞zce jsou vrßceny v jednotkßch sekund.
P°φklad 1. P°φklad - microtime()
|
Viz takΘ time().
Varovßnφ: M∞jte na pam∞ti podivnΘ po°adφ argument∙, kterΘ se li╣φ od po°adφ argument∙ v b∞╛nΘm UNIXovΘm volßnφ mktime() a kterΘ se p°φli╣ nehodφ k vynechßvßnφ parametr∙ zprava doleva (viz nφ╛e). Je Φastou chybou mφchat ve skriptu tyto hodnoty.
Vracφ UNIXovΘ ΦasovΘ razφtko odpovφdajφcφ dan²m argument∙m. Toto ΦasovΘ razφtko je typu "long integer" a odpovφdß poΦtu sekund mezi Unix Epoch (1.1.1970) a specifikovan²m Φasem.
Argumenty mohou b²t vynechßvßny zprava doleva; ka╛d² vynechan² argument bude nastaven na aktußlnφ hodnotu podle mφstnφho data a Φasu.
is_dst m∙╛e b²t 1, pat°φ-li dan² Φas do doby platnosti letnφho Φasu, 0, pokud nepat°φ, anebo -1 (implicitnφ hodnota), nelze-li zjistit, zda dan² Φas pat°φ do obdobφ letnφho Φasu (v tomto p°φpad∞ se PHP pokusφ tuto hodnotu dosadit; to m∙╛e zp∙sobit neoΦekßvanΘ - ale nikoli chybnΘ - v²sledky).
Poznßmka: Parametr is_dst byl p°idßn v PHP 3.0.10.
Funkce mktime() je u╛iteΦnß pro aritmetiku a validaci Φasov²ch ·daj∙, nebo╗ automaticky vypoΦφtß sprßvnou hodnotu pro vstupnφ data mimo povolen² rozsah. Nap°φklad ka╛d² z nßsledujφcφch °ßdk∙ vypφ╣e "Jan-01-1998".
Windows: ZßpornΘ ΦasovΘ znaΦky nejsou podporovßny v ╛ßdnΘ znßmΘ verzi Windows. PlatnΘ rozmezφ rok∙ je proto pouze 1970 a╛ 2038.
Poslednφ den danΘho m∞sφce m∙╛e b²t vyjßd°en jako den "0" m∞sφce p°φ╣tφho, nikoliv den -1. Oba nßsledujφcφ p°φklady vypφ╣φ °et∞zec "The last day in Feb 2000 is: 29".
Datum s rokem, m∞sφcem, a dnem rovn²mi nule je pova╛ovßno za neplatnΘ (odpovφdalo by 30.11.1999, co╛ je pon∞kud podivnΘ chovßnφ).
Vracφ °et∞zec formßtovan² podle danΘho formßtovacφho °et∞zce, s pou╛itφm danΘho ΦasovΘho razφtka timestamp, nebo aktußlnφho mφstnφho Φasu, nenφ-li razφtko dßno. Nßzev m∞sφce, dne v t²dnu a dal╣φ jazykov∞ zßvislΘ °et∞zce respektujφ nßrodnφ specifika nastavenß pomocφ setlocale().
Ve formßtovacφm °et∞zci se rozli╣ujφ tyto konverznφ specifikßtory:
%a - zkrßcen² nßzev dne v t²dnu (podle nßrodnφho nastavenφ)
%A - ·pln² nßzev dne v t²dnu (podle nßrodnφho nastavenφ)
%b - zkrßcen² nßzev m∞sφce (podle nßrodnφho nastavenφ)
%B - ·pln² nßzev m∞sφce (podle nßrodnφho nastavenφ)
%c - reprezentace Φasu a data preferovanß aktußlnφm nßrodnφm nastavenφm
%C - Φφslo stoletφ (rok d∞len² 100 a zkrßcen² na celΘ Φφslo, od 00 do 99)
%d - den v m∞sφci jako desφtkovΘ Φφslo (01 a╛ 31)
%D - totΘ╛ jako %m/%d/%y
%e - den v m∞sφci jako desφtkovΘ Φφslo, jednΘ samotnΘ Φφslici (Φφsla 1 a╛ 9) p°edchßzφ mezera (' 1' a╛ '31')
%g - jako %G, ale bez stoletφ
%G - Φty°Φφslicov∞ reprezentovan² rok odpovφdajφcφ t²dnu podle ISO (viz %V). Mß tent²╛ formßt a hodnotu jako %Y, krom∞ toho, ╛e pokud Φφslo t²dne podle ISO pat°φ p°edchozφmu nebo nßsledujφcφmu roku, bude tento odli╣n² rok pou╛it.
%h - totΘ╛ jako %b
%H - hodina jako desφtkovΘ Φφslo ve 24-hodinovΘm formßtu (00 a╛ 23)
%I - hodina jako desφtkovΘ Φφslo ve 12-hodinovΘm formßtu (01 a╛ 12)
%j - den v roce jako desφtkovΘ Φφslo (001 a╛ 366)
%m - m∞sφc jako desφtkovΘ Φφslo (01 a╛ 12)
%M - minuta jako desφtkovΘ Φφslo
%n - znak od°ßdkovßnφ
%p - `am' nebo `pm' v zßvislosti na hodnot∞ Φasu, resp. odpovφdajφcφ °et∞zec podle nßrodnφho nastavenφ
%r - Φas v notaci a.m. a p.m. (12-hodinovΘ)
%R - Φas ve 24-hodinovΘ notaci
%S - sekunda jako desφtkovΘ Φφslo
%t - znak tabulßtoru
%T - aktußlnφ Φas, totΘ╛ jako %H:%M:%S
%u - den v t²dnu jako desφtkovΘ Φφslo [1,7], 1 reprezentuje pond∞lφ
Varovßnφ |
Na poΦφtaΦφch Sun Solaris se vyskytuje ned∞le jako prvnφ den v t²dnu, p°esto╛e ISO 9889:1999 (aktußlnφ C standard) jasn∞ specifikuje, ╛e by to m∞lo b²t pond∞lφ. |
%U - t²den v aktußlnφm roce jako desφtkovΘ Φφslo, poΦφnaje prvnφ ned∞lφ jako prvnφm dnem prvnφho t²dne
%V - t²den v aktußlnφm roce podle ISO 8601:1988 jako desφtkovΘ Φφslo, v rozsahu od 01 do 53, kde 1 je prvnφ t²den s alespo≥ 4 dny v tomto roce, a s pond∞lkem jako prvnφm dnem v t²dnu. (Odpovφdajφcφ rok lze zφskat pomocφ %G nebo %g.)
%W - t²den v aktußlnφm roce jako desφtkovΘ Φφslo, poΦφnaje prvnφm pond∞lkem jako prvnφm dnem prvnφho t²dne
%w - den v t²dnu jako desφtkovΘ Φφslo, ned∞le odpovφdß 0
%x - preferovanß reprezentace data (bez Φasu) pro aktußlnφ nßrodnφ nastavenφ
%X - preferovanß reprezentace Φasu (bez data) pro aktußlnφ nßrodnφ nastavenφ
%y - rok jako desφtkovΘ Φφslo bez stoletφ (00 a╛ 99)
%Y - rok jako desφtkovΘ Φφslo vΦetn∞ stoletφ
%Z - Φasovß z≤na, jejφ nßzev nebo zkratka
%% - znak `%' (procento)
Poznßmka: V╣echny konverznφ specifikßtory nemusφ b²t podporovßny va╣φ C knihovnou, potom nebudou podporovßny ani funkcφ strftime() v PHP. Krom∞ toho takΘ ne v╣echny platformy podporujφ prßci s negativnφmi Φasov²mi znaΦkami, tak╛e rozsah mo╛n²ch datum∙ m∙╛e b²t omezen zaΦßtkem Θry Unixu. To znamenß, ╛e nap°. %e, %T, %R a %D (a p°φpadn∞ i dal╣φ) a datumy p°edchßzejφcφ 1.1.1970 nebudou fungovat pod Windows, n∞kter²mi distribucemi Linuxu a n∞kolika dal╣φmi operaΦnφmi systΘmy. Pro Windows lze kompletnφ p°ehled podporovan²ch konverznφch specifikßtor∙ najφt na webov²ch strßnkßch MSDN.
Poznßmka: %G a %V, kterΘ jsou zalo╛eny na norm∞ ISO 8601:1988, mohou vrßtit neoΦekßvanΘ (a p°esto sprßvnΘ) v²sledky, pokud nemßte v Φφslovacφm systΘmu zcela jasno. Viz %V v²╣e a p°φklad nφ╛e.
P°φklad 2. P°φklad Φφsel t²dn∙ podle ISO 8601:1988
|
Viz takΘ setlocale(), mktime() a specifikaci Open Group strftime().
(PHP 3>= 3.0.12, PHP 4 )
strtotime -- Parse about any English textual datetime description into a Unix timestampThe function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp relative to the timestamp given in now, or the current time if none is supplied. Upon failure, -1 is returned.
Because strtotime() behaves according to GNU date syntax, have a look at the GNU manual page titled Date Input Formats. Described there is valid syntax for the time parameter.
P°φklad 1. strtotime() examples
|
Poznßmka: The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.) Additionally, not all platforms support negative timestamps, therefore your date range may be limited to no earlier than the Unix epoch. This means that e.g. dates prior to Jan 1, 1970 will not work on Windows, some Linux distributions, and a few other operating systems.
Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).
See also date() and microtime().
These functions allow you to access records stored in dBase-format (dbf) databases.
There is no support for indexes or memo fields. There is no support for locking, too. Two concurrent webserver processes modifying the same dBase file will very likely ruin your database.
dBase files are simple sequential files of fixed length records. Records are appended to the end of the file and delete records are kept until you call dbase_pack().
We recommend that you do not use dBase files as your production database. Choose any real SQL server instead; MySQL or Postgres are common choices with PHP. dBase support is here to allow you to import and export data to and from your web database, because the file format is commonly understood by Windows spreadsheets and organizers.
Adds the data in the record to the database. If the number of items in the supplied record isn't equal to the number of fields in the database, the operation will fail and FALSE will be returned.
Closes the database associated with dbase_identifier.
dbase_create() creates a dBase database in the file filename, with the fields fields.
The fields parameter is an array of arrays, each array describing the format of one field in the database. Each field consists of a name, a character indicating the field type, a length, and a precision.
The types of fields available are:
Boolean. These do not have a length or precision.
Memo. (Note that these aren't supported by PHP.) These do not have a length or precision.
Date (stored as YYYYMMDD). These do not have a length or precision.
Number. These have both a length and a precision (the number of digits after the decimal point).
String.
If the database is successfully created, a dbase_identifier is returned, otherwise FALSE is returned.
P°φklad 1. Creating a dBase database file
|
Marks record to be deleted from the database. To actually remove the record from the database, you must also call dbase_pack().
(no version information, might be only in CVS)
dbase_get_header_info -- Get the header info of a dBase databaseReturns information on the column structure of the database referenced by dbase_identifier. For each column in the database, there is an entry in a numerically-indexed array. The array index starts at 0. Each array element contains an associative array of column information. If the database header information cannot be read, FALSE is returned.
The array elements are:
The name of the column
The human-readable name for the dbase type of the column (i.e. date, boolean, etc)
The number of bytes this column can hold
The number of digits of decimal precision for the column
A suggested printf() format specifier for the column
The byte offset of the column from the start of the row
P°φklad 1. Showing header information for a dBase database file
|
(PHP 3>= 3.0.4, PHP 4 )
dbase_get_record_with_names -- Gets a record from a dBase database as an associative arrayReturns the data from record in an associative array. The array also includes an associative member named 'deleted' which is set to 1 if the record has been marked for deletion (see dbase_delete_record()).
Each field is converted to the appropriate PHP type, except:
Dates are left as strings
Integers that would have caused an overflow (> 32 bits) are returned as strings
Returns the data from record in an array. The array is indexed starting at 0, and includes an associative member named 'deleted' which is set to 1 if the record has been marked for deletion (see dbase_delete_record().
Each field is converted to the appropriate PHP type, except:
Dates are left as strings
Integers that would have caused an overflow (> 32 bits) are returned as strings
Returns the number of fields (columns) in the specified database. Field numbers are between 0 and dbase_numfields($db)-1, while record numbers are between 1 and dbase_numrecords($db).
Returns the number of records (rows) in the specified database. Record numbers are between 1 and dbase_numrecords($db), while field numbers are between 0 and dbase_numfields($db)-1.
Returns a dbase_identifier for the opened database, or FALSE if the database couldn't be opened.
Parameter flags correspond to those for the open() system call (Typically 0 means read-only, 1 means write-only, and 2 means read and write).
Poznßmka: Pokud je zapnut bezpeΦn² re╛im (safe-mode), PHP kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript.
Packs the specified database (permanently deleting all records marked for deletion using dbase_delete_record()).
Replaces the data associated with the record record_number with the data in the record in the database. If the number of items in the supplied record is not equal to the number of fields in the database, the operation will fail and FALSE will be returned.
dbase_record_number is an integer which spans from 1 to the number of records in the database (as returned by dbase_numrecords()).
Tyto funkce vßm umo╛≥ujφ uklßdat zßznamy do databßzφ typu dbm. Tento typ databßzφ (podporovan² Berkeley DB, GDBM, n∞kter²mi systΘmov²mi knihovnami, a takΘ vestav∞nou flatfile knihovnou) uklßdß klφΦ/hodnota pßry (oproti plnohodnotn²m relaΦnφm databßzφm).
Poznßmka: Podpora dbm je nicmΘn∞ zavr╛ena a doporuΦujeme vßm pou╛φt mφsto toho funkce databßzovΘ abstrakΦnφ vrstvy (dbm-styl)
K pou╛itφ tohoto roz╣φ°enφ musφte PHP zkompilovat s podporou pou╛itΘ databßze. Viz seznam podporovan²ch databßzφ.
In order to use these functions, you must compile PHP with dbm support by using the --with-db option. In addition you must ensure support for an underlying database or you can use some system libraries.
Vyma╛e z databßze hodnotu s klφΦem key.
Pokud tento klφΦ v databßzi neexistuje, vracφ FALSE.
Vracφ TRUE, pokud existuje hodnota spojenß s key.
Vracφ prvnφ klφΦ v databßzi. Pozn.: Nenφ zaruΦeno ╛ßdnΘ po°adφ, proto╛e databßze m∙╛e b²t vytvo°ena pomocφ hash tabulky, co╛ nezaruΦuje ╛ßdnΘ °azenφ.
P°idß do databßze hodnotu s urΦen²m klφΦem.
Vracφ -1, pokud byla databßze otev°ena pouze pro Φtenφ, 0, pokud bylo vlo╛enφ ·sp∞╣nΘ, a 1, pokud u╛ urΦen² klφΦ existuje. (K nahra╛enφ hodnoty pou╛ijte dbmreplace().)
Vracφ klφΦ nßs∙edujφcφ po key. Zavolßnφm dbmfirstkey() nßsledovan²m postupn²m volßnφm dbmnextkey() se dajφ zφskat v╣echny key/value pßry v DBM databßzi. Nap°φklad:
Prvnφ argument je nßzev DBM souboru (plnß cesta), kter² se mß otev°φt, druh² argument je jedno z "r" (pouze pro Φtenφ), "n" (nov², implikuje Φtenφ/zßpis, a nejspφ╣ sma╛e existujφcφ databßzi stejnΘho jmΘna), "c" (vytvo°it, implikuje Φtenφ/zßpis, a nesma╛e existujφcφ databßzi stejnΘho jmΘna) nebo "w" (Φtenφ/zßpis).
P°i ·sp∞chu vracφ identifikßtor, kter² se p°edßvß dal╣φm DBM funkcφm success, jinak FALSE.
Pokud pou╛φvßte NDBM, NDBM ve skuteΦnosti vytvß°φ soubory soubor.dir a soubor.pag. GDBM pou╛φvß pouze jeden soubr, stejn∞ jako internφ flatfile podpora, a Berkeley DB vytvß°φ soubor filename.db. Pozn.: Vedle p°φpadnΘho zamykßnφ soubor∙ vlastnφ DBM knihovnou provßdφ PHP svoje vlastnφ zamykßnφ soubor∙. PHP nema╛e .lck soubory, kterΘ vytvß°φ. Pou╛φvß tyto soubory jako pevnΘ inodes, na kter²ch provßdφ zamykßnφ soubor∙. Vφce informacφ o DBM souborech viz va╣e UnixovΘ man strßnky, nebo si stßhn∞te GNU GDBM.
The dbx module is a database abstraction layer (db 'X', where 'X' is a supported database). The dbx functions allow you to access all supported databases using a single calling convention. The dbx-functions themselves do not interface directly to the databases, but interface to the modules that are used to support these databases.
To be able to use a database with the dbx-module, the module must be either linked or loaded into PHP, and the database module must be supported by the dbx-module. Currently, the following databases are supported, but others will follow:
FrontBase (available from PHP 4.1.0).
Sybase-CT (available from PHP 4.2.0).
Oracle (oci8) (available from PHP 4.3.0).
SQLite (CVS only).
Documentation for adding additional database support to dbx can be found at http://www.guidance.nl/php/dbx/doc/.
In order to have these functions available, you must compile PHP with dbx support by using the --enable-dbx option and all options for the databases that will be used, e.g. for MySQL you must also specify --with-mysql=[DIR]. To get other supported databases to work with the dbx-module refer to their specific documentation.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
For further details and definition of the PHP_INI_* constants see ini_set().
Poznßmka: This ini-option is available available from PHP 4.3.0.
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Columns names can be returned "unchanged" or converted to "uppercase" or "lowercase". This directive can be overridden with a flag to dbx_query().
There are two resource types used in the dbx module. The first one is the link-object for a database connection, the second a result-object which holds the result of a query.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: Always refer to the module-specific documentation as well.
See also dbx_connect().
dbx_compare() returns 0 if the row_a[$column_key] is equal to row_b[$column_key], and 1 or -1 if the former is greater or is smaller than the latter one, respectively, or vice versa if the flag is set to DBX_CMP_DESC. dbx_compare() is a helper function for dbx_sort() to ease the make and use of the custom sorting function.
The flags can be set to specify comparison direction:
DBX_CMP_ASC - ascending order
DBX_CMP_DESC - descending order
DBX_CMP_NATIVE - no type conversion
DBX_CMP_TEXT - compare items as strings
DBX_CMP_NUMBER - compare items numerically
P°φklad 1. dbx_compare() example
|
See also dbx_sort().
dbx_connect() returns an object on success, FALSE on error. If a connection has been made but the database could not be selected, the connection is closed and FALSE is returned. The persistent parameter can be set to DBX_PERSISTENT, if so, a persistent connection will be created.
The module parameter can be either a string or a constant, though the latter form is preferred. The possible values are given below, but keep in mind that they only work if the module is actually loaded.
DBX_MYSQL or "mysql"
DBX_ODBC or "odbc"
DBX_PGSQL or "pgsql"
DBX_MSSQL or "mssql"
DBX_FBSQL or "fbsql" (available from PHP 4.1.0)
DBX_SYBASECT or "sybase_ct" (available from PHP 4.2.0)
DBX_OCI8 or "oci8" (available from PHP 4.3.0)
DBX_SQLITE or "sqlite" (CVS only)
The host, database, username and password parameters are expected, but not always used depending on the connect functions for the abstracted module.
The returned object has three properties:
It is the name of the currently selected database.
It is a valid handle for the connected database, and as such it can be used in module-specific functions (if required).
It is used internally by dbx only, and is actually the module number mentioned above.
Poznßmka: Always refer to the module-specific documentation as well.
See also dbx_close().
(PHP 4 >= 4.0.6)
dbx_error -- Report the error message of the latest function call in the module (not just in the connection)dbx_error() returns a string containing the error message from the last function call of the abstracted module (e.g. mysql module). If there are multiple connections in the same module, just the last error is given. If there are connections on different modules, the latest error is returned for the module specified by the link_identifier parameter.
Poznßmka: Always refer to the module-specific documentation as well.
The error message for Microsoft SQL Server is actually the result of the mssql_get_last_message() function.
The error message for Oracle (oci8) is not implemented (yet).
dbx_escape_string() returns the text, escaped where necessary (such as quotes, backslashes etc). It returns NULL on error.
P°φklad 1. dbx_escape_string() example
|
See also dbx_query().
(no version information, might be only in CVS)
dbx_fetch_row -- Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag setdbx_fetch_row() returns a row on success, and 0 on failure (e.g. when no more rows are available). When the DBX_RESULT_UNBUFFERED is not set in the query, dbx_fetch_row() will fail as all rows have already been fetched into the results data property.
As a side effect, the rows property of the query-result object is incremented for each successful call to dbx_fetch_row().
P°φklad 1. How to handle the returned value
|
The result_identifier parameter is the result object returned by a call to dbx_query().
The returned array contains the same information as any row would have in the dbx_query result data property, including columns accessible by index or fieldname when the flags for dbx_guery were set that way.
See also dbx_query().
dbx_query() returns an object or 1 on success, and 0 on failure. The result object is returned only if the query given in sql_statement produces a result set (i.e. a SELECT query, even if the result set is empty).
P°φklad 1. How to handle the returned value
|
The flags parameter is used to control the amount of information that is returned. It may be any combination of the following constants with the bitwise OR operator (|). The DBX_COLNAMES_* flags override the dbx.colnames_case setting from php.ini.
It is always set, that is, the returned object has a data property which is a 2 dimensional array indexed numerically. For example, in the expression data[2][3] 2 stands for the row (or record) number and 3 stands for the column (or field) number. The first row and column are indexed at 0.
If DBX_RESULT_ASSOC is also specified, the returning object contains the information related to DBX_RESULT_INFO too, even if it was not specified.
It provides info about columns, such as field names and field types.
It effects that the field values can be accessed with the respective column names used as keys to the returned object's data property.
Associated results are actually references to the numerically indexed data, so modifying data[0][0] causes that data[0]['field_name_for_first_column'] is modified as well.
This flag will not create the data property, and the rows property will initially be 0. Use this flag for large datasets, and use dbx_fetch_row() to retrieve the results row by row.
The dbx_fetch_row() function will return rows that are conformant to the flags set with this query. Incidentally, it will also update the rows each time it is called.
The case of the returned column names will not be changed.
The case of the returned column names will be changed to uppercase.
The case of the returned column names will be changed to lowercase.
DBX_RESULT_INDEX
DBX_RESULT_INDEX | DBX_RESULT_INFO
DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - this is the default, if flags is not specified.
The returned object has four or five properties depending on flags:
It is a valid handle for the connected database, and as such it can be used in module specific functions (if required).
These contain the number of columns (or fields) and rows (or records) respectively.
It is returned only if either DBX_RESULT_INFO or DBX_RESULT_ASSOC is specified in the flags parameter. It is a 2 dimensional array, that has two named rows (name and type) to retrieve column information.
This property contains the actual resulting data, possibly associated with column names as well depending on flags. If DBX_RESULT_ASSOC is set, it is possible to use $result->data[2]["field_name"].
P°φklad 3. outputs the content of data property into HTML table
|
P°φklad 4. How to handle UNBUFFERED queries
|
Poznßmka: Always refer to the module-specific documentation as well.
Column names for queries on an Oracle database are returned in lowercase.
See also dbx_escape_string(), dbx_fetch_row() and dbx_connect().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: It is always better to use ORDER BY SQL clause instead of dbx_sort(), if possible.
P°φklad 1. dbx_sort() example
|
See also dbx_compare().
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
db++, made by the German company Concept asa, is a relational database system with high performance and low memory and disk usage in mind. While providing SQL as an additional language interface, it is not really a SQL database in the first place but provides its own AQL query language which is much more influenced by the relational algebra then SQL is.
Concept asa always had an interest in supporting open source languages, db++ has had Perl and Tcl call interfaces for years now and uses Tcl as its internal stored procedure language.
This extension relies on external client libraries so you have to have a db++ client installed on the system you want to use this extension on.
Concept asa provides db++ Demo versions and documentation for Linux, some other Unix versions. There is also a Windows version of db++, but this extension doesn't support it (yet).
In order to build this extension yourself you need the db++ client libraries and header files to be installed on your system (these are included in the db++ installation archives by default). You have to run configure with option --with-dbplus to build this extension.
configure looks for the client libraries and header files under the default paths /usr/dbplus, /usr/local/dbplus and /opt/dblus. If you have installed db++ in a different place you have add the installation path to the configure option like this: --with-dbplus=/your/installation/path.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Tabulka 1. DB++ Error Codes
PHP Constant | db++ constant | meaning |
---|---|---|
DBPLUS_ERR_NOERR (integer) | ERR_NOERR | Null error condition |
DBPLUS_ERR_DUPLICATE (integer) | ERR_DUPLICATE | Tried to insert a duplicate tuple |
DBPLUS_ERR_EOSCAN (integer) | ERR_EOSCAN | End of scan from rget() |
DBPLUS_ERR_EMPTY (integer) | ERR_EMPTY | Relation is empty (server) |
DBPLUS_ERR_CLOSE (integer) | ERR_CLOSE | The server can't close |
DBPLUS_ERR_WLOCKED (integer) | ERR_WLOCKED | The record is write locked |
DBPLUS_ERR_LOCKED (integer) | ERR_LOCKED | Relation was already locked |
DBPLUS_ERR_NOLOCK (integer) | ERR_NOLOCK | Relation cannot be locked |
DBPLUS_ERR_READ (integer) | ERR_READ | Read error on relation |
DBPLUS_ERR_WRITE (integer) | ERR_WRITE | Write error on relation |
DBPLUS_ERR_CREATE (integer) | ERR_CREATE | Create() system call failed |
DBPLUS_ERR_LSEEK (integer) | ERR_LSEEK | Lseek() system call failed |
DBPLUS_ERR_LENGTH (integer) | ERR_LENGTH | Tuple exceeds maximum length |
DBPLUS_ERR_OPEN (integer) | ERR_OPEN | Open() system call failed |
DBPLUS_ERR_WOPEN (integer) | ERR_WOPEN | Relation already opened for writing |
DBPLUS_ERR_MAGIC (integer) | ERR_MAGIC | File is not a relation |
DBPLUS_ERR_VERSION (integer) | ERR_VERSION | File is a very old relation |
DBPLUS_ERR_PGSIZE (integer) | ERR_PGSIZE | Relation uses a different page size |
DBPLUS_ERR_CRC (integer) | ERR_CRC | Invalid crc in the superpage |
DBPLUS_ERR_PIPE (integer) | ERR_PIPE | Piped relation requires lseek() |
DBPLUS_ERR_NIDX (integer) | ERR_NIDX | Too many secondary indices |
DBPLUS_ERR_MALLOC (integer) | ERR_MALLOC | Malloc() call failed |
DBPLUS_ERR_NUSERS (integer) | ERR_NUSERS | Error use of max users |
DBPLUS_ERR_PREEXIT (integer) | ERR_PREEXIT | Caused by invalid usage |
DBPLUS_ERR_ONTRAP (integer) | ERR_ONTRAP | Caused by a signal |
DBPLUS_ERR_PREPROC (integer) | ERR_PREPROC | Error in the preprocessor |
DBPLUS_ERR_DBPARSE (integer) | ERR_DBPARSE | Error in the parser |
DBPLUS_ERR_DBRUNERR (integer) | ERR_DBRUNERR | Run error in db |
DBPLUS_ERR_DBPREEXIT (integer) | ERR_DBPREEXIT | Exit condition caused by prexit() * procedure |
DBPLUS_ERR_WAIT (integer) | ERR_WAIT | Wait a little (Simple only) |
DBPLUS_ERR_CORRUPT_TUPLE (integer) | ERR_CORRUPT_TUPLE | A client sent a corrupt tuple |
DBPLUS_ERR_WARNING0 (integer) | ERR_WARNING0 | The Simple routines encountered a non fatal error which was corrected |
DBPLUS_ERR_PANIC (integer) | ERR_PANIC | The server should not really die but after a disaster send ERR_PANIC to all its clients |
DBPLUS_ERR_FIFO (integer) | ERR_FIFO | Can't create a fifo |
DBPLUS_ERR_PERM (integer) | ERR_PERM | Permission denied |
DBPLUS_ERR_TCL (integer) | ERR_TCL | TCL_error |
DBPLUS_ERR_RESTRICTED (integer) | ERR_RESTRICTED | Only two users |
DBPLUS_ERR_USER (integer) | ERR_USER | An error in the use of the library by an application programmer |
DBPLUS_ERR_UNKNOWN (integer) | ERR_UNKNOWN |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function will add a tuple to a relation. The tuple data is an array of attribute/value pairs to be inserted into the given relation. After successful execution the tuple array will contain the complete data of the newly created tuple, including all implicitly set domain fields like sequences.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_aql() will execute an AQL query on the given server and dbpath.
On success it will return a relation handle. The result data may be fetched from this relation by calling dbplus_next() and dbplus_current(). Other relation access functions will not work on a result relation.
Further information on the AQL A... Query Language is provided in the original db++ manual.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_chdir() will change the virtual current directory where relation files will be looked for by dbplus_open(). dbplus_chdir() will return the absolute path of the current directory. Calling dbplus_chdir() without giving any newdir may be used to query the current working directory.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Calling dbplus_close() will close a relation previously opened by dbplus_open().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_curr() will read the data for the current tuple for the given relation and will pass it back as an associative array in tuple.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
See also dbplus_first(), dbplus_prev(), dbplus_next(), and dbplus_last().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_errcode() returns a cleartext error string for the error code passed as errno of for the result code of the last db++ operation if no parameter is given.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_errno() will return the error code returned by the last db++ operation.
See also dbplus_errcode().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_find() will place a constraint on the given relation. Further calls to functions like dbplus_curr() or dbplus_next() will only return tuples matching the given constraints.
Constraints are triplets of strings containing of a domain name, a comparison operator and a comparison value. The constraints parameter array may consist of a collection of string arrays, each of which contains a domain, an operator and a value, or of a single string array containing a multiple of three elements.
The comparison operator may be one of the following strings: '==', '>', '>=', '<', '<=', '!=', '~' for a regular expression match and 'BAND' or 'BOR' for bitwise operations.
See also dbplus_unselect().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_curr() will read the data for the first tuple for the given relation, make it the current tuple and pass it back as an associative array in tuple.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
See also dbplus_curr(), dbplus_prev(), dbplus_next(), and dbplus_last().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_flush() will write all changes applied to relation since the last flush to disk.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_freealllocks() will free all tuple locks held by this client.
See also dbplus_getlock(), dbplus_freelock(), and dbplus_freerlocks().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_freelock() will release a write lock on the given tuple previously obtained by dbplus_getlock().
See also dbplus_getlock(), dbplus_freerlocks(), and dbplus_freealllocks().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_freerlocks() will free all tuple locks held on the given relation.
See also dbplus_getlock(), dbplus_freelock(), and dbplus_freealllocks().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_getlock() will request a write lock on the specified tuple. It will return zero on success or a non-zero error code, especially DBPLUS_ERR_WLOCKED, on failure.
See also dbplus_freelock(), dbplus_freerlocks(), and dbplus_freealllocks().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_getunique() will obtain a number guaranteed to be unique for the given relation and will pass it back in the variable given as uniqueid.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_curr() will read the data for the last tuple for the given relation, make it the current tuple and pass it back as an associative array in tuple.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
See also dbplus_first(), dbplus_curr(), dbplus_prev(), and dbplus_next().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_lockrel() will request a write lock on the given relation. Other clients may still query the relation, but can't alter it while it is locked.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_curr() will read the data for the next tuple for the given relation, will make it the current tuple and will pass it back as an associative array in tuple.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
See also dbplus_first(), dbplus_curr(), dbplus_prev(), and dbplus_last().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The relation file name will be opened. name can be either a file name or a relative or absolute path name. This will be mapped in any case to an absolute relation file path on a specific host machine and server.
On success a relation file resource (cursor) is returned which must be used in any subsequent commands referencing the relation. Failure leads to a zero return value, the actual error code may be asked for by calling dbplus_errno().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_curr() will read the data for the next tuple for the given relation, will make it the current tuple and will pass it back as an associative array in tuple.
The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure. See dbplus_errcode() or the introduction to this chapter for more information on db++ error codes.
See also dbplus_first(), dbplus_curr(), dbplus_next(), and dbplus_last().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rchperm() will change access permissions as specified by mask, user and group. The values for these are operating system specific.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rcreate() will create a new relation named name. An existing relation by the same name will only be overwritten if the relation is currently not in use and overwrite is set to TRUE.
domlist should contain the domain specification for the new relation within an array of domain description strings. ( dbplus_rcreate() will also accept a string with space delimited domain description strings, but it is recommended to use an array). A domain description string consists of a domain name unique to this relation, a slash and a type specification character. See the db++ documentation, especially the dbcreate(1) manpage, for a description of available type specifiers and their meanings.
(4.1.0 - 4.2.3 only)
dbplus_rcrtexact -- Creates an exact but empty copy of a relation including indicesVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rcrtexact() will create an exact but empty copy of the given relation under a new name. An existing relation by the same name will only be overwritten if overwrite is TRUE and no other process is currently using the relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rcrtexact() will create an empty copy of the given relation under a new name, but with default indices. An existing relation by the same name will only be overwritten if overwrite is TRUE and no other process is currently using the relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_resolve() will try to resolve the given relation_name and find out internal server id, real hostname and the database path on this host. The function will return an array containing these values under the keys 'sid', 'host' and 'host_path' or FALSE on error.
See also dbplus_tcl().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rkeys() will replace the current primary key for relation with the combination of domains specified by domlist.
domlist may be passed as a single domain name string or as an array of domain names.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_ropen() will open the relation file locally for quick access without any client/server overhead. Access is read only and only dbplus_current() and dbplus_next() may be applied to the returned relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rquery() performs a local (raw) AQL query using an AQL interpreter embedded into the db++ client library. dbplus_rquery() is faster than dbplus_aql() but will work on local data only.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rrename() will change the name of relation to name.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rsecindex() will create a new secondary index for relation with consists of the domains specified by domlist and is of type type
domlist may be passed as a single domain name string or as an array of domain names.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_unlink() will close and remove the relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_rzap() will remove all tuples from relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
A db++ server will prepare a TCL interpreter for each client connection. This interpreter will enable the server to execute TCL code provided by the client as a sort of stored procedures to improve the performance of database operations by avoiding client/server data transfers and context switches.
dbplus_tcl() needs to pass the client connection id the TCL script code should be executed by. dbplus_resolve() will provide this connection id. The function will return whatever the TCL code returns or a TCL error message if the TCL code fails.
See also dbplus_resolve().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_tremove() removes tuple from relation if it perfectly matches a tuple within the relation. current, if given, will contain the data of the new current tuple after calling dbplus_tremove().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Not implemented yet.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_unlockrel() will release a write lock previously obtained by dbplus_lockrel().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Calling dbplus_unselect() will remove a constraint previously set by dbplus_find() on relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_update() replaces the tuple given by old with the data from new if and only if old completely matches a tuple within relation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_xlockrel() will request an exclusive lock on relation preventing even read access from other clients.
See also dbplus_xunlockrel().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
dbplus_xunlockrel() will release an exclusive lock on relation previously obtained by dbplus_xlockrel().
PHP supports the direct io functions as described in the Posix Standard (Section 6) for performing I/O functions at a lower level than the C-Language stream I/O functions (fopen(), fread(),..). The use of the DIO functions should be considered only when direct control of a device is needed. In all other cases, the standard filesystem functions are more than adequate.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
One resource type is defined by this extension: a file descriptor returned by dio_open().
The dio_fcntl() function performs the operation specified by cmd on the file descriptor fd. Some commands require additional arguments args to be supplied.
arg is an associative array, when cmd is F_SETLK or F_SETLLW, with the following keys:
"start" - offset where lock begins
"length" - size of locked area. zero means to end of file
"wenth" - Where l_start is relative to: can be SEEK_SET, SEEK_END and SEEK_CUR
"type" - type of lock: can be F_RDLCK (read lock), F_WRLCK (write lock) or F_UNLCK (unlock)
cmd can be one of the following operations:
F_SETLK - Lock is set or cleared. If the lock is held by someone else dio_fcntl() returns -1.
F_SETLKW - like F_SETLK, but in case the lock is held by someone else, dio_fcntl() waits until the lock is released.
F_GETLK - dio_fcntl() returns an associative array (as described above) if someone else prevents lock. If there is no obstruction key "type" will set to F_UNLCK.
F_DUPFD - finds the lowest numbered available file descriptor greater or equal than arg and returns them.
F_SETFL - Sets the file descriptors flags to the value specified by arg, which can be O_APPEND,O_NONBLOCK or O_ASYNC. To use O_ASYNC you will need to use the PCNTL extension.
(PHP 4 >= 4.2.0)
dio_open -- Opens a new filename with specified permissions of flags and creation permissions of modedio_open() opens a file and returns a new file descriptor for it, or FALSE if any error occurred. If flags is O_CREAT, the optional third parameter mode will set the mode of the file (creation permissions). The flags parameter can be one of the following options:
O_RDONLY - opens the file for read access.
O_WRONLY - opens the file for write access.
O_RDWR - opens the file for both reading and writing.
O_CREAT - creates the file, if it doesn't already exist.
O_EXCL - if both, O_CREAT and O_EXCL are set, dio_open() fails, if the file already exists.
O_TRUNC - if the file exists, and its opened for write access, the file will be truncated to zero length.
O_APPEND - write operations write data at the end of the file.
O_NONBLOCK - sets non blocking mode.
(PHP 4 >= 4.2.0)
dio_read -- Reads n bytes from fd and returns them, if n is not specified, reads 1k blockThe function dio_read() reads and returns n bytes from file with descriptor fd. If n is not specified, dio_read() reads 1K sized block and returns them.
The function dio_seek() is used to change the file position of the file with descriptor fd. The parameter whence specifies how the position pos should be interpreted:
SEEK_SET - specifies that pos is specified from the beginning of the file.
SEEK_CUR - Specifies that pos is a count of characters from the current file position. This count may be positive or negative.
SEEK_END - Specifies that pos is a count of characters from the end of the file. A negative count specifies a position within the current extent of the file; a positive count specifies a position past the current end. If you set the position past the current end, and actually write data, you will extend the file with zeros up to that position.
Function dio_stat() returns information about the file with file descriptor fd. dio_stat() returns an associative array with the following keys:
"device" - device
"inode" - inode
"mode" - mode
"nlink" - number of hard links
"uid" - user id
"gid" - group id
"device_type" - device type (if inode device)
"size" - total size in bytes
"blocksize" - blocksize
"blocks" - number of blocks allocated
"atime" - time of last access
"mtime" - time of last modification
"ctime" - time of last change
The function dio_tcsetattr() sets the terminal attributes and baud rate of the open resource. The currently available options are
'baud' - baud rate of the port - can be 38400,19200,9600,4800,2400,1800, 1200,600,300,200,150,134,110,75 or 50, default value is 9600.
'bits' - data bits - can be 8,7,6 or 5. Default value is 8.
'stop' - stop bits - can be 1 or 2. Default value is 1.
'parity' - can be 0,1 or 2. Default value is 0.
P°φklad 1. Setting the baud rate on a serial port
|
Function dio_truncate() causes the file referenced by fd to be truncated to at most offset bytes in size. If the file previously was larger than this size, the extra data is lost. If the file previously was shorter, it is unspecified whether the file is left unchanged or is extended. In the latter case the extended part reads as zero bytes. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ..
M∞nφ aktußlnφ adresß° PHP na directory. Pokud se nepoda°ilo zm∞nφt adresß°, vracφ FALSE, jinak TRUE.
Changes the root directory of the current process to directory. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function is only available if your system supports it and you're using the CLI, CGI or Embed SAPI.
Poznßmka: chroot() requires root privileges.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Pseudo-objektov∞ orientovan² mechanismus pro Φtenφ adresß°e. Otev°e zadan² directory. Po otev°enφ adresß°e jsou p°φstupnΘ dv∞ vlastnosti. Vlastnost handle je pou╛itelnß s jin²mi adresß°ov²mi funkcemi jako readdir(), rewinddir() a closedir(). Hodnotou vlastnosti path je cesta k otev°enΘmu adresß°i. Dßle jsou p°φstupnΘ t°i metody: read, rewind a close.
Zavφrß proud z adresß°e specifikovan² v dir_handle. Proud musφ pochßzet z funkce opendir().
Vracφ deskriptor adresß°e pou╛iteln² v nßsledn²ch volßnφch closedir(), readdir(), a rewinddir().
Vracφ nßzev dal╣φho souboru v adresß°i. Nßzvy soubor∙ nejsou nijak t°φd∞ny.
V╣imn∞te si, ╛e readdir() vracφ takΘ . a .. polo╛ky (odkaz na sebe sama a na nad°azen² adresß°. Pokud je nechcete, m∙╛ete je snadno vynechat:
Vracφ adresß°ov² proud odkazovan² deskriptorem dir_handle na zaΦßtek adresß°e.
Returns an array of files and directories from the directory. If directory is not a directory, then boolean FALSE is returned, and an error of level E_WARNING is generated.
By default, the sorted order is alphabetical in ascending order. If the optional sorting_order is used (set to 1), then sort order is alphabetical in descending order.
P°φklad 1. A simple scandir() example
Outputs something like:
|
P°φklad 2. PHP 4 alternatives to scandir()
Outputs something like:
|
See also opendir(), readdir(), glob(), is_dir(), and sort().
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
The DOM XML extension has been overhauled in PHP 4.3.0 to better comply with the DOM standard. The extension still contains many old functions, but they should no longer be used. In particular, functions that are not object-oriented should be avoided.
The extension allows you to operate on an XML document with the DOM API. It also provides a function domxml_xmltree() to turn the complete XML document into a tree of PHP objects. Currently, this tree should be considered read-only — you can modify it, but this would not make any sense since DomDocument_dump_mem() cannot be applied to it. Therefore, if you want to read an XML file and write a modified version, use DomDocument_create_element(), DomDocument_create_text_node(), set_attribute(), etc. and finally the DomDocument_dump_mem() function.
This extension makes use of the GNOME XML library. Download and install this library. You will need at least libxml-2.4.14. To use DOM XSLT features you can use the libxslt library and EXSLT enhancements from http://www.exslt.org/. Download and install these libraries if you plan to use (enhanced) XSLT features. You will need at least libxslt-1.0.18.
This extension is only available if PHP was configured with --with-dom[=DIR]. Add --with-dom-xslt[=DIR] to include DOM XSLT support. DIR is the libxslt install directory. Add --with-dom-exslt[=DIR] to include DOM EXSLT support, where DIR is the libexslt install directory.
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy one additional file from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your Windows machine (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). For PHP <= 4.2.0 copy libxml2.dll, for PHP >= 4.3.0 copy iconv.dll from the DLL folder to your SYSTEM32 folder.
There are quite a few functions that do not fit into the DOM standard and should no longer be used. These functions are listed in the following table. The function DomNode_append_child() has changed its behaviour. It now adds a child and not a sibling. If this breaks your application, use the non-DOM function DomNode_append_sibling().
Tabulka 1. Deprecated functions and their replacements
Old function | New function |
---|---|
xmldoc | domxml_open_mem() |
xmldocfile | domxml_open_file() |
domxml_new_xmldoc | domxml_new_doc() |
domxml_dump_mem | DomDocument_dump_mem() |
domxml_dump_mem_file | DomDocument_dump_file() |
DomDocument_dump_mem_file | DomDocument_dump_file() |
DomDocument_add_root | DomDocument_create_element() followed by DomNode_append_child() |
DomDocument_dtd | DomDocument_doctype() |
DomDocument_root | DomDocument_document_element() |
DomDocument_children | DomNode_child_nodes() |
DomDocument_imported_node | No replacement. |
DomNode_add_child | Create a new node with e.g. DomDocument_create_element() and add it with DomNode_append_child(). |
DomNode_children | DomNode_child_nodes() |
DomNode_parent | DomNode_parent_node() |
DomNode_new_child | Create a new node with e.g. DomDocument_create_element() and add it with DomNode_append_child(). |
DomNode_set_content | Create a new node with e.g. DomDocument_create_text_node() and add it with DomNode_append_child(). |
DomNode_get_content | Content is just a text node and can be accessed with DomNode_child_nodes(). |
DomNode_set_content | Content is just a text node and can be added with DomNode_append_child(). |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Tabulka 2. XML konstanty
Konstanta | Hodnota | Popis |
---|---|---|
XML_ELEMENT_NODE (integer) | 1 | Uzel je element |
XML_ATTRIBUTE_NODE (integer) | 2 | Uzel je atribut |
XML_TEXT_NODE (integer) | 3 | Uzel je kus textu |
XML_CDATA_SECTION_NODE (integer) | 4 | |
XML_ENTITY_REF_NODE (integer) | 5 | |
XML_ENTITY_NODE (integer) | 6 | Uzel je entita jako |
XML_PI_NODE (integer) | 7 | Uzel je instrukce zpracovßnφ |
XML_COMMENT_NODE (integer) | 8 | Uzel je komentß° |
XML_DOCUMENT_NODE (integer) | 9 | Uzel je dokument |
XML_DOCUMENT_TYPE_NODE (integer) | 10 | |
XML_DOCUMENT_FRAG_NODE (integer) | 11 | |
XML_NOTATION_NODE (integer) | 12 | |
XML_GLOBAL_NAMESPACE (integer) | 1 | |
XML_LOCAL_NAMESPACE (integer) | 2 | |
XML_HTML_DOCUMENT_NODE (integer) | ||
XML_DTD_NODE (integer) | ||
XML_ELEMENT_DECL_NODE (integer) | ||
XML_ATTRIBUTE_DECL_NODE (integer) | ||
XML_ENTITY_DECL_NODE (integer) | ||
XML_NAMESPACE_DECL_NODE (integer) | ||
XML_ATTRIBUTE_CDATA (integer) | ||
XML_ATTRIBUTE_ID (integer) | ||
XML_ATTRIBUTE_IDREF (integer) | ||
XML_ATTRIBUTE_IDREFS (integer) | ||
XML_ATTRIBUTE_ENTITY (integer) | ||
XML_ATTRIBUTE_NMTOKEN (integer) | ||
XML_ATTRIBUTE_NMTOKENS (integer) | ||
XML_ATTRIBUTE_ENUMERATION (integer) | ||
XML_ATTRIBUTE_NOTATION (integer) | ||
XPATH_UNDEFINED (integer) | ||
XPATH_NODESET (integer) | ||
XPATH_BOOLEAN (integer) | ||
XPATH_NUMBER (integer) | ||
XPATH_STRING (integer) | ||
XPATH_POINT (integer) | ||
XPATH_RANGE (integer) | ||
XPATH_LOCATIONSET (integer) | ||
XPATH_USERS (integer) | ||
XPATH_NUMBER (integer) |
The API of the module follows the DOM Level 2 standard as closely as possible. Consequently, the API is fully object-oriented. It is a good idea to have the DOM standard available when using this module. Though the API is object-oriented, there are many functions which can be called in a non-object-oriented way by passing the object to operate on as the first argument. These functions are mainly to retain compatibility to older versions of the extension, and should not be used when creating new scripts.
This API differs from the official DOM API in two ways. First, all class attributes are implemented as functions with the same name. Secondly, the function names follow the PHP naming convention. This means that a DOM function lastChild() will be written as last_child().
This module defines a number of classes, which are listed — including their method — in the following tables. Classes with an equivalent in the DOM standard are named DOMxxx.
Tabulka 3. List of classes
Class name | Parent classes |
---|---|
DomAttribute | DomNode |
DomCData | DomNode |
DomComment | DomCData : DomNode |
DomDocument | DomNode |
DomDocumentType | DomNode |
DomElement | DomNode |
DomEntity | DomNode |
DomEntityReference | DomNode |
DomProcessingInstruction | DomNode |
DomText | DomCData : DomNode |
Parser | Currently still called DomParser |
XPathContext |
Tabulka 4. DomDocument class (DomDocument : DomNode)
Method name | Function name | Remark |
---|---|---|
doctype | DomDocument_doctype() | |
document_element | DomDocument_document_element() | |
create_element | DomDocument_create_element() | |
create_text_node | DomDocument_create_text_node() | |
create_comment | DomDocument_create_comment() | |
create_cdata_section | DomDocument_create_cdata_section() | |
create_processing_instruction | DomDocument_create_processing_instruction() | |
create_attribute | DomDocument_create_attribute() | |
create_entity_reference | DomDocument_create_entity_reference() | |
get_elements_by_tagname | DomDocument_get_elements_by_tagname() | |
get_element_by_id | DomDocument_get_element_by_id() | |
dump_mem | DomDocument_dump_mem() | not DOM standard |
dump_file | DomDocument_dump_file() | not DOM standard |
html_dump_mem | DomDocument_html_dump_mem() | not DOM standard |
xpath_init | xpath_init | not DOM standard |
xpath_new_context | xpath_new_context | not DOM standard |
xptr_new_context | xptr_new_context | not DOM standard |
Tabulka 5. DomElement class (DomElement : DomNode)
Method name | Function name | Remark |
---|---|---|
tagname | DomElement_tagname() | |
get_attribute | DomElement_get_attribute() | |
set_attribute | DomElement_set_attribute() | |
remove_attribute | DomElement_remove_attribute() | |
get_attribute_node | DomElement_get_attribute_node() | |
get_elements_by_tagname | DomElement_get_elements_by_tagname() | |
has_attribute | DomElement_has_attribute() |
Tabulka 6. DomNode class
Method name | Remark |
---|---|
DomNode_node_name() | |
DomNode_node_value() | |
DomNode_node_type() | |
DomNode_last_child() | |
DomNode_first_child() | |
DomNode_child_nodes() | |
DomNode_previous_sibling() | |
DomNode_next_sibling() | |
DomNode_parent_node() | |
DomNode_owner_document() | |
DomNode_insert_before() | |
DomNode_append_child() | |
DomNode_append_sibling() | Not in DOM standard. This function emulates the former behaviour of DomNode_append_child(). |
DomNode_remove_child() | |
DomNode_has_child_nodes() | |
DomNode_has_attributes() | |
DomNode_clone_node() | |
DomNode_attributes() | |
DomNode_unlink_node() | Not in DOM standard |
DomNode_replace_node() | Not in DOM standard |
DomNode_set_content() | Not in DOM standard, deprecated |
DomNode_get_content() | Not in DOM standard, deprecated |
DomNode_dump_node() | Not in DOM standard |
DomNode_is_blank_node() | Not in DOM standard |
Tabulka 7. DomAttribute class (DomAttribute : DomNode)
Method name | Remark | |
---|---|---|
name | DomAttribute_name() | |
value | DomAttribute_value() | |
specified | DomAttribute_specified() |
Tabulka 8. DomProcessingInstruction class (DomProcessingInstruction : DomNode)
Method name | Function name | Remark |
---|---|---|
target | DomProcessingInstruction_target() | |
data | DomProcessingInstruction_data() |
Tabulka 10. XPathContext class
Method name | Function name | Remark |
---|---|---|
eval | XPathContext_eval() | |
eval_expression | XPathContext_eval_expression() | |
register_ns | XPathContext_register_ns() |
Tabulka 11. DomDocumentType class (DomDocumentType : DomNode)
Method name | Function name | Remark |
---|---|---|
name | DomDocumentType_name() | |
entities | DomDocumentType_entities() | |
notations | DomDocumentType_notations() | |
public_id | DomDocumentType_public_id() | |
system_id | DomDocumentType_system_id() | |
internal_subset | DomDocumentType_internal_subset() |
The classes DomDtd is derived from DomNode. DomComment is derived from DomCData.
Many examples in this reference require an XML string. Instead of repeating this string in every example, it will be put into a file which will be included by each example. This include file is shown in the following example section. Alternatively, you could create an XML document and read it with DomDocument_open_file().
P°φklad 1. Include file example.inc with XML string
|
This function returns the name of the attribute.
See also domattribute_value().
(no version information, might be only in CVS)
DomAttribute->specified -- Checks if attribute is specifiedThis function returns the value of the attribute.
See also domattribute_name().
(no version information, might be only in CVS)
DomDocument->add_root [deprecated] -- Adds a root nodeVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Adds a root element node to a dom document and returns the new node. The element name is given in the passed parameter.
This function returns a new instance of class DomAttribute. The name of the attribute is the value of the first parameter. The value of the attribute is the value of the second parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_text(), domdocument_create_cdata_section(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().
(no version information, might be only in CVS)
DomDocument->create_cdata_section -- Create new cdata nodeThis function returns a new instance of class DomCData. The content of the cdata is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_text(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().
(no version information, might be only in CVS)
DomDocument->create_comment -- Create new comment nodeThis function returns a new instance of class DomComment. The content of the comment is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_text(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference() and domnode_insert_before().
(no version information, might be only in CVS)
DomDocument->create_element_ns -- Create new element node with an associated namespaceThis function returns a new instance of class DomElement. The tag name of the element is the value of the passed parameter name. The URI of the namespace is the value of the passed parameter uri. If there is already a namespace declaration with the same uri in the root-node of the document, the prefix of this is taken, otherwise it will take the one provided in the optional parameter prefix or generate a random one. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domdocument_create_element_ns(), domnode_add_namespace(), domnode_set_namespace(), domnode_append_child(), domdocument_create_text(), domdocument_create_comment(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().
(no version information, might be only in CVS)
DomDocument->create_element -- Create new element nodeThis function returns a new instance of class DomElement. The tag name of the element is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domdocument_create_element_ns(), domnode_append_child(), domdocument_create_text(), domdocument_create_comment(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().
This function returns a new instance of class DomEntityReference. The content of the entity reference is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_text(), domdocument_create_cdata_section(), domdocument_create_processing_instruction(), domdocument_create_attribute(), and domnode_insert_before().
(no version information, might be only in CVS)
DomDocument->create_processing_instruction -- Creates new PI nodeThis function returns a new instance of class DomCData. The content of the pi is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_text(), domdocument_create_cdata_section(), domdocument_create_attribute(), domdocument_create_entity_reference(), and domnode_insert_before().
This function returns a new instance of class DomText. The content of the text is the value of the passed parameter. This node will not show up in the document unless it is inserted with e.g. domnode_append_child().
The return value is FALSE if an error occurred.
See also domnode_append_child(), domdocument_create_element(), domdocument_create_comment(), domdocument_create_text(), domdocument_create_attribute(), domdocument_create_processing_instruction(), domdocument_create_entity_reference(), and domnode_insert_before().
This function returns an object of class DomDocumentType. In versions of PHP before 4.3 this has been the class Dtd, but the DOM Standard does not know such a class.
See also the methods of class DomDocumentType.
(no version information, might be only in CVS)
DomDocument->document_element -- Returns root element nodeThis function returns the root element node of a document.
The following example returns just the element with name CHAPTER and prints it. The other node -- the comment -- is not returned.
(no version information, might be only in CVS)
DomDocument->dump_file -- Dumps the internal XML tree back into a fileCreates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not. The first parameter specifies the name of the filename and the second parameter, whether it should be compressed or not.
P°φklad 1. Creating a simple HTML document header
|
See also domdocument_dump_mem() domdocument_html_dump_mem().
(no version information, might be only in CVS)
DomDocument->dump_mem -- Dumps the internal XML tree back into a stringVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Creates an XML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below. The format specifies whether the output should be neatly formatted, or not.
P°φklad 1. Creating a simple HTML document header
|
Poznßmka: The first parameter was added in PHP 4.3.0.
See also domdocument_dump_file(), domdocument_html_dump_mem().
(no version information, might be only in CVS)
DomDocument->get_element_by_id -- Searches for an element with a certain idThis function is similar to domdocument_get_elements_by_tagname() but searches for an element with a given id. According to the DOM standard this requires a DTD which defines the attribute ID to be of type ID, though the current implementation simply does an xpath search for "//*[@ID = '%s']". This does not comply to the DOM standard which requires to return null if it is not known which attribute is of type id. This behaviour is likely to be fixed, so do not rely on the current behaviour.
See also domdocument_get_elements_by_tagname()
See also domdocument_add_root()
(no version information, might be only in CVS)
DomDocument->html_dump_mem -- Dumps the internal XML tree back into a string as HTMLCreates an HTML document from the dom representation. This function usually is called after building a new dom document from scratch as in the example below.
P°φklad 1. Creating a simple HTML document header
|
See also domdocument_dump_file(), domdocument_html_dump_mem().
(no version information, might be only in CVS)
DomDocument->xinclude -- Substitutes XIncludes in a DomDocument Object.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomDocumentType->internal_subset -- Returns internal subset
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomDocumentType->name -- Returns name of document typeThis function returns the name of the document type.
(no version information, might be only in CVS)
DomDocumentType->notations -- Returns list of notations
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomDocumentType->public_id -- Returns public id of document typeThis function returns the public id of the document type.
The following example echos nothing.
(no version information, might be only in CVS)
DomDocumentType->system_id -- Returns system id of document typeReturns the system id of the document type.
The following example echos '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'.
(no version information, might be only in CVS)
DomElement->get_attribute_node -- Returns value of attribute
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomElement->get_attribute -- Returns value of attributeReturns the attribute with name name of the current node.
(PHP >= 4.3 only) If no attribute with given name is found, an empty string is returned.
See also domelement_set_attribute()
(no version information, might be only in CVS)
DomElement->get_elements_by_tagname -- Gets elements by tagnameThis function returns an array with all the elements which has name as his tagname. Every element of the array is an DomElement.
P°φklad 1. Getting a content
|
(no version information, might be only in CVS)
DomElement->has_attribute -- Checks to see if attribute exists
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Sets an attribute with name name to the given value. If the attribute does not exist, it will be created.
See also domelement_get_attribute()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomNode->add_namespace -- Adds a namespace declaration to a node.
See also domdocument_create_element_ns(), domnode_set_namespace()
(no version information, might be only in CVS)
DomNode->append_child -- Adds new child at the end of the childrenThis functions appends a child to an existing list of children or creates a new list of children. The child can be created with e.g. domdocument_create_element(), domdocument_create_text() etc. or simply by using any other node.
(PHP < 4.3) Before a new child is appended it is first duplicated. Therefore the new child is a completely new copy which can be modified without changing the node which was passed to this function. If the node passed has children itself, they will be duplicated as well, which makes it quite easy to duplicate large parts of an XML document. The return value is the appended child. If you plan to do further modifications on the appended child you must use the returned node.
(PHP 4.3.0/4.3.1) The new child newnode is first unlinked from its existing context, if it's already a child of DomNode. Therefore the node is moved and not copies anymore.
(PHP >= 4.3.2) The new child newnode is first unlinked from its existing context, if it's already in the tree. Therefore the node is moved and not copied. This is the behaviour according to the W3C specifications. If you want to duplicate large parts of an XML document, use DomNode->clone_node() before appending.
The following example will add a new element node to a fresh document and sets the attribute "align" to "left".
P°φklad 3. Adding a child
|
See also domnode_insert_before(), domnode_clone_node().
This functions appends a sibling to an existing node. The child can be created with e.g. domdocument_create_element(), domdocument_create_text() etc. or simply by using any other node.
Before a new sibling is added it is first duplicated. Therefore the new child is a completely new copy which can be modified without changing the node which was passed to this function. If the node passed has children itself, they will be duplicated as well, which makes it quite easy to duplicate large parts of an XML document. The return value is the added sibling. If you plan to do further modifications on the added sibling you must use the returned node.
This function has been added to provide the behaviour of domnode_append_child() as it works till PHP 4.2.
See also domnode_append_before().
This function only returns an array of attributes if the node is of type XML_ELEMENT_NODE.
(PHP >= 4.3 only) If no attributes are found, NULL is returned.
Returns all children of the node.
See also domnode_next_sibling(), domnode_previous_sibling().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also domdocument_dump_mem().
Returns the first child of the node.
(PHP >= 4.3 only) If no first child is found, NULL is returned.
See also domnode_last_child(), domnode_next_sibling(), domnode_previous_sibling().
This function returns the content of the actual node.
P°φklad 1. Getting a content
|
(no version information, might be only in CVS)
DomNode->has_attributes -- Checks if node has attributesThis function checks if the node has attributes.
See also domnode_has_child_nodes().
(no version information, might be only in CVS)
DomNode->has_child_nodes -- Checks if node has childrenThis function checks if the node has children.
See also domnode_child_nodes().
This function inserts the new node newnode right before the node refnode. The return value is the inserted node. If you plan to do further modifications on the appended child you must use the returned node.
(PHP >= 4.3 only) If newnode already is part of a document, it will be first unlinked from its existing context. If refnode is NULL, then newnode will be inserted at the end of the list of children.
domnode_insert_before() is very similar to domnode_append_child() as the following example shows which does the same as the example at domnode_append_child().
P°φklad 1. Adding a child
|
See also domnode_append_child().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns the last child of the node.
(PHP >= 4.3 only) If no last child is found, NULL is returned.
See also domnode_first_child(), domnode_next_sibling(), domnode_previous_sibling().
(no version information, might be only in CVS)
DomNode->next_sibling -- Returns the next sibling of nodeThis function returns the next sibling of the current node. If there is no next sibling it returns FALSE (< 4.3) or null (>= 4.3). You can use this function to iterate over all children of a node as shown in the example.
P°φklad 1. Iterate over children
|
See also domnode_previous_sibling().
Returns name of the node. The name has different meanings for the different types of nodes as illustrated in the following table.
Tabulka 1. Meaning of value
Type | Meaning |
---|---|
DomAttribute | value of attribute |
DomAttribute | |
DomCDataSection | #cdata-section |
DomComment | #comment |
DomDocument | #document |
DomDocumentType | document type name |
DomElement | tag name |
DomEntity | name of entity |
DomEntityReference | name of entity reference |
DomNotation | notation name |
DomProcessingInstruction | target |
DomText | #text |
Returns the type of the node. All possible types are listed in the table in the introduction.
Returns value of the node. The value has different meanings for the different types of nodes as illustrated in the following table.
Tabulka 1. Meaning of value
Type | Meaning |
---|---|
DomAttribute | value of attribute |
DomAttribute | |
DomCDataSection | content |
DomComment | content of comment |
DomDocument | null |
DomDocumentType | null |
DomElement | null |
DomEntity | null |
DomEntityReference | null |
DomNotation | null |
DomProcessingInstruction | entire content without target |
DomText | content of text |
(no version information, might be only in CVS)
DomNode->owner_document -- Returns the document this node belongs toThis function returns the document the current node belongs to.
The following example will create two identical lists of children.
See also domnode_insert_before().
(no version information, might be only in CVS)
DomNode->parent_node -- Returns the parent of the nodeThis function returns the parent node.
(PHP >= 4.3 only) If no parent is found, NULL is returned.
The following example will show two identical lists of children.
(no version information, might be only in CVS)
DomNode->previous_sibling -- Returns the previous sibling of nodeThis function returns the previous sibling of the current node. If there is no previous sibling it returns FALSE (< 4.3) or NULL (>= 4.3). You can use this function to iterate over all children of a node as shown in the example.
See also domnode_next_sibling().
(no version information, might be only in CVS)
DomNode->remove_child -- Removes child from list of childrenThis functions removes a child from a list of children. If child cannot be removed or is not a child the function will return FALSE. If the child could be removed the functions returns the old child.
P°φklad 1. Removing a child
|
See also domnode_append_child().
(PHP 4.2) This function replaces the child oldnode with the passed new node. If the new node is already a child it will not be added a second time. If the old node cannot be found the function returns FALSE. If the replacement succeeds the old node is returned.
(PHP 4.3) This function replaces the child oldnode with the passed newnode, even if the new node already is a child of the DomNode. If newnode was already inserted in the document it is first unlinked from its existing context. If the old node cannot be found the function returns FALSE. If the replacement succeeds the old node is returned. (This behaviour is according to the W3C specs).
See also domnode_append_child()
(PHP 4.2) This function replaces an existing node with the passed new node. Before the replacement newnode is copied if it has a parent to make sure a node which is already in the document will not be inserted a second time. This behaviour enforces doing all modifications on the node before the replacement or to refetch the inserted node afterwards with functions like domnode_first_child(), domnode_child_nodes() etc..
(PHP 4.3) This function replaces an existing node with the passed new node. It is not copied anymore. If newnode was already inserted in the document it is first unlinked from its existing context. If the replacement succeeds the old node is returned.
See also domnode_append_child()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Sets the namespace of a node to uri. If there is already a namespace declaration with the same uri in one of the parent nodes of the node, the prefix of this is taken, otherwise it will take the one provided in the optional parameter prefix or generate a random one.
See also domdocument_create_element_ns(), domnode_add_namespace()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomProcessingInstruction->data -- Returns data of pi node
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomProcessingInstruction->target -- Returns target of pi node
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
DomXsltStylesheet->process -- Applies the XSLT-Transformation on a DomDocument Object.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also domxml_xslt_stylesheet(), domxml_xslt_stylesheet_file(), domxml_xslt_stylesheet_doc()
(no version information, might be only in CVS)
DomXsltStylesheet->result_dump_file -- Dumps the result from a XSLT-Transformation into a fileVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function is only available since PHP 4.3
Since DomXsltStylesheet->process() always returns a well-formed XML DomDocument, no matter what output method was declared in <xsl:output> and similar attributes/elements, it's of not much use, if you want to output HTML 4 or text data. This function on the contrary honors <xsl:output method="html|text"> and other output control directives. See the example for instruction of how to use it.
See also domxml_xslt_result_dump_mem(), domxml_xslt_process()
(no version information, might be only in CVS)
DomXsltStylesheet->result_dump_mem -- Dumps the result from a XSLT-Transformation back into a stringVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function is only available since PHP 4.3
Since DomXsltStylesheet->process() always returns a well-formed XML DomDocument, no matter what output method was declared in <xsl:output> and similar attributes/elements, it's of not much use, if you want to output HTML 4 or text data. This function on the contrary honors <xsl:output method="html|text"> and other output control directives. See the example for instruction of how to use it.
See also domxml_xslt_result_dump_file(), domxml_xslt_process()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Creates a new dom document from scratch and returns it.
See also domdocument_add_root()
Parsuje XML dokument v souboru pojmenovanΘm filename a vracφ objekt t°φdy "Dom document", kter² mß vlastnosti "doc" (resource), "version" (string).
Tato funkce parsuje XML dokument v str a vracφ objekt t°φdy "Dom document", kter² mß valstnosti "doc" (resource), "version" (string) and "type" (long).
This function returns the version of the XML library version currently used.
(PHP 4 >= 4.2.0)
domxml_xslt_stylesheet_doc -- Creates a DomXsltStylesheet Object from a DomDocument Object.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also domxsltstylesheet->process(), domxml_xslt_stylesheet(), domxml_xslt_stylesheet_file()
(PHP 4 >= 4.2.0)
domxml_xslt_stylesheet_file -- Creates a DomXsltStylesheet Object from an XSL document in a file.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also domxsltstylesheet->process(), domxml_xslt_stylesheet(), domxml_xslt_stylesheet_doc()
(PHP 4 >= 4.2.0)
domxml_xslt_stylesheet -- Creates a DomXsltStylesheet Object from an XML document in a string.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also domxsltstylesheet->process(), domxml_xslt_stylesheet_file(), domxml_xslt_stylesheet_doc()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also xpath_eval()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The optional contextnode can be specified for doing relative XPath queries.
See also xpath_new_context()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also xpath_eval()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
These are functions dealing with error handling and logging. They allow you to define your own error handling rules, as well as modify the way the errors can be logged. This allows you to change and enhance error reporting to suit your needs.
With the logging functions, you can send messages directly to other machines, to an email (or email to pager gateway!), to system logs, etc., so you can selectively log and monitor the most important parts of your applications and websites.
The error reporting functions allow you to customize what level and kind of error feedback is given, ranging from simple notices to customized functions returned during errors.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Errors and Logging Configuration Options
Name | Default | Changeable |
---|---|---|
error_reporting | E_ALL & ~E_NOTICE | PHP_INI_ALL |
display_errors | "1" | PHP_INI_ALL |
display_startup_errors | "0" | PHP_INI_ALL |
log_errors | "0" | PHP_INI_ALL |
log_errors_max_len | "1024" | PHP_INI_ALL |
ignore_repeated_errors | "0" | PHP_INI_ALL |
ignore_repeated_source | "0" | PHP_INI_ALL |
report_memleaks | "1" | PHP_INI_SYSTEM |
track_errors | "0" | PHP_INI_ALL |
html_errors | "1" | PHP_INI_ALL |
docref_root | "" | PHP_INI_ALL |
docref_ext | "" | PHP_INI_ALL |
error_prepend_string | NULL | PHP_INI_ALL |
error_append_string | NULL | PHP_INI_ALL |
error_log | NULL | PHP_INI_ALL |
warn_plus_overloading | NULL | PHP_INI?? |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Set the error reporting level. The parameter is either an integer representing a bit field, or named constants. The error_reporting levels and constants are described in Predefined Constants, and in php.ini. To set at runtime, use the error_reporting() function. See also the display_errors directive.
In PHP 4 and PHP 5 the default value is E_ALL & ~E_NOTICE. This setting does not show E_NOTICE level errors. You may want to show them during development.
Poznßmka: Enabling E_NOTICE during development has some benefits. For debugging purposes: NOTICE messages will warn you about possible bugs in your code. For example, use of unassigned values is warned. It is extremely useful to find typos and to save time for debugging. NOTICE messages will warn you about bad style. For example, $arr[item] is better to be written as $arr['item'] since PHP tries to treat "item" as constant. If it is not a constant, PHP assumes it is a string index for the array.
Poznßmka: In PHP 5 a new error level E_STRICT is available. As E_STRICT is not included within E_ALL you have to explicitly enable this kind of error level. Enabling E_STRICT during development has some benefits. STRICT messages will help you to use the latest and greatest suggested method of coding, for example warn you about using deprecated functions.
In PHP 3, the default setting is (E_ERROR | E_WARNING | E_PARSE), meaning the same thing. Note, however, that since constants are not supported in PHP 3's php3.ini, the error_reporting setting there must be numeric; hence, it is 7.
This determines whether errors should be printed to the screen as part of the output or if they should be hidden from the user.
Poznßmka: This is a feature to support your development and should never be used on production systems (e.g. systems connected to the internet).
Even when display_errors is on, errors that occur during PHP's startup sequence are not displayed. It's strongly recommended to keep display_startup_errors off, except for debugging.
Tells whether script error messages should be logged to the server's error log or error_log. This option is thus server-specific.
Poznßmka: You're strongly advised to use error logging in place of error displaying on production web sites.
Set the maximum length of log_errors in bytes. In error_log information about the source is added. The default is 1024 and 0 allows to not apply any maximum length at all.
Do not log repeated messages. Repeated errors must occur in the same file on the same line until ignore_repeated_source is set true.
Ignore source of message when ignoring repeated messages. When this setting is On you will not log errors with repeated messages from different files or sourcelines.
If this parameter is set to Off, then memory leaks will not be shown (on stdout or in the log). This has only effect in a debug compile, and if error_reporting includes E_WARNING in the allowed list
If enabled, the last error message will always be present in the variable $php_errormsg.
Turn off HTML tags in error messages. The new format for HTML errors produces clickable messages that direct the user to a page describing the error or function in causing the error. These references are affected by docref_root and docref_ext.
The new error format contains a reference to a page describing the error or function causing the error. In case of manual pages you can download the manual in your language and set this ini directive to the url of your local copy. If your local copy of the manual can be reached by '/manual/' you can simply use docref_root=/manual/. Additional you have to set docref_ext to match the fileextensions of your copy docref_ext=.html. It is possible to use external references. For example you can use docref_root=http://manual/en/ or docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"
Most of the time you want the docref_root value to end with a slash '/'. But see the second example above which does not have nor need it.
Poznßmka: This is a feature to support your development since it makes it easy to lookup a function description. However it should never be used on production systems (e.g. systems connected to the internet).
See docref_root.
Poznßmka: The value of docref_ext must begin with a dot '.'.
String to output before an error message.
String to output after an error message.
Name of the file where script errors should be logged. If the special value syslog is used, the errors are sent to the system logger instead. On Unix, this means syslog(3) and on Windows NT it means the event log. The system logger is not supported on Windows 95. See also: syslog().
If enabled, this option makes PHP output a warning when the plus (+) operator is used on strings. This is to make it easier to find scripts that need to be rewritten to using the string concatenator instead (.).
Konstanty z tohoto seznamu jsou v╛dy dostupnΘ jako souΦßst jßdra PHP.
Poznßmka: You may use these constant names in php.ini but not outside of PHP, like in httpd.conf, where you'd use the bitmask values instead.
Tabulka 2. Errors and Logging
Value | Constant | Description | Note |
---|---|---|---|
1 | E_ERROR (integer) | Fatal run-time errors. These indicate errors that can not be recovered from, such as a memory allocation problem. Execution of the script is halted. | |
2 | E_WARNING (integer) | Run-time warnings (non-fatal errors). Execution of the script is not halted. | |
4 | E_PARSE (integer) | Compile-time parse errors. Parse errors should only be generated by the parser. | |
8 | E_NOTICE (integer) | Run-time notices. Indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. | |
16 | E_CORE_ERROR (integer) | Fatal errors that occur during PHP's initial startup. This is like an E_ERROR, except it is generated by the core of PHP. | PHP 4 only |
32 | E_CORE_WARNING (integer) | Warnings (non-fatal errors) that occur during PHP's initial startup. This is like an E_WARNING, except it is generated by the core of PHP. | PHP 4 only |
64 | E_COMPILE_ERROR (integer) | Fatal compile-time errors. This is like an E_ERROR, except it is generated by the Zend Scripting Engine. | PHP 4 only |
128 | E_COMPILE_WARNING (integer) | Compile-time warnings (non-fatal errors). This is like an E_WARNING, except it is generated by the Zend Scripting Engine. | PHP 4 only |
256 | E_USER_ERROR (integer) | User-generated error message. This is like an E_ERROR, except it is generated in PHP code by using the PHP function trigger_error(). | PHP 4 only |
512 | E_USER_WARNING (integer) | User-generated warning message. This is like an E_WARNING, except it is generated in PHP code by using the PHP function trigger_error(). | PHP 4 only |
1024 | E_USER_NOTICE (integer) | User-generated notice message. This is like an E_NOTICE, except it is generated in PHP code by using the PHP function trigger_error(). | PHP 4 only |
2047 | E_ALL (integer) | All errors and warnings, as supported, except of level E_STRICT. | |
2048 | E_STRICT (integer) | Run-time notices. Enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code. | PHP 5 only |
The above values (either numerical or symbolic) are used to build up a bitmask that specifies which errors to report. You can use the bitwise operators to combine these values or mask out certain types of errors. Note that only '|', '~', '!', ^ and '&' will be understood within php.ini, however, and that no bitwise operators will be understood within php3.ini.
Below we can see an example of using the error handling capabilities in PHP. We define an error handling function which logs the information into a file (using an XML format), and e-mails the developer in case a critical error in the logic happens.
P°φklad 1. Using error handling in a script
|
debug_backtrace() generates a PHP backtrace and returns this information as an associative array. The possible returned elements are listed in the following table:
Tabulka 1. Possible returned elements from debug_backtrace()
Name | Type | Description |
---|---|---|
function | string | The current function name. See also __FUNCTION__. |
line | integer | The current line number. See also __LINE__. |
file | string | The current file name. See also __FILE__. |
class | string | The current class name. See also __CLASS__ |
type | string | The current class type. |
args | array | If inside a function, this lists the functions arguments. If inside an included file, this lists the included file name(s). |
The following is a simple example.
P°φklad 1. debug_backtrace() example
Results when executing /tmp/b.php:
|
See also trigger_error() and debug_print_backtrace().
debug_print_backtrace() prints a PHP backtrace.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also debug_backtrace().
Sends an error message to the web server's error log, a TCP port or to a file. The first parameter, message, is the error message that should be logged. The second parameter, message_type says where the message should go:
Tabulka 1. error_log() log types
0 | message is sent to PHP's system logger, using the Operating System's system logging mechanism or a file, depending on what the error_log configuration directive is set to. |
1 | message is sent by email to the address in the destination parameter. This is the only message type where the fourth parameter, extra_headers is used. This message type uses the same internal function as mail() does. |
2 | message is sent through the PHP debugging connection. This option is only available if remote debugging has been enabled. In this case, the destination parameter specifies the host name or IP address and optionally, port number, of the socket receiving the debug information. |
3 | message is appended to the file destination. |
Varovßnφ |
Remote debugging via TCP/IP is a PHP 3 feature that is not available in PHP 4. |
P°φklad 1. error_log() examples
|
The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.
error_reporting() sets PHP's error reporting level, and returns the old level. The level parameter takes on either a bitmask, or named constants. Using named constants is strongly encouraged to ensure compatibility for future versions. As error levels are added, the range of integers increases, so older integer-based error levels will not always behave as expected.
Some example uses:
P°φklad 1. error_reporting() examples
|
The available error level constants are listed below. The actual meanings of these error levels are described in the predefined constants.
Tabulka 1. error_reporting() level constants and bit values
value | constant |
---|---|
1 | E_ERROR |
2 | E_WARNING |
4 | E_PARSE |
8 | E_NOTICE |
16 | E_CORE_ERROR |
32 | E_CORE_WARNING |
64 | E_COMPILE_ERROR |
128 | E_COMPILE_WARNING |
256 | E_USER_ERROR |
512 | E_USER_WARNING |
1024 | E_USER_NOTICE |
2047 | E_ALL |
2048 | E_STRICT |
Varovßnφ |
With PHP > 5.0.0 E_STRICT with value 2048 is available. E_ALL does NOT include error levelE_STRICT. |
See also the display_errors directive and ini_set().
Used after changing the error handler function using set_error_handler(), to revert to the previous error handler (which could be the built-in or a user defined function)
See also error_reporting(), set_error_handler(), trigger_error().
Sets a user function (error_handler) to handle errors in a script. Returns the previously defined error handler (if any), or FALSE on error. This function can be used for defining your own way of handling errors during runtime, for example in applications in which you need to do cleanup of data/files when a critical error happens, or when you need to trigger an error under certain conditions (using trigger_error()).
The user function needs to accept two parameters: the error code, and a string describing the error. From PHP 4.0.2, three optional parameters are supplied: the filename in which the error occurred, the line number in which the error occurred, and the context in which the error occurred (an array that points to the active symbol table at the point the error occurred).
Poznßmka: Instead of a function name, an array containing an object reference and a method name can also be supplied. (Since PHP 4.3.0)
Poznßmka: The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR and E_COMPILE_WARNING.
The example below shows the handling of internal exceptions by triggering errors and handling them with a user defined function:
P°φklad 1. Error handling with set_error_handler() and trigger_error()
And when you run this sample script, the output will be :
|
It is important to remember that the standard PHP error handler is completely bypassed. error_reporting() settings will have no effect and your error handler will be called regardless - however you are still able to read the current value of error_reporting and act appropriately. Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator.
Also note that it is your responsibility to die() if necessary. If the error-handler function returns, script execution will continue with the next statement after the one that caused an error.
Poznßmka: If errors occur before the script is executed (e.g. on file uploads) the custom error handler cannot be called since it is not registered at that time.
See also error_reporting(), restore_error_handler(), trigger_error(), and error level constants.
Used to trigger a user error condition, it can be used by in conjunction with the built-in error handler, or with a user defined function that has been set as the new error handler (set_error_handler()). It only works with the E_USER family of constants, and will default to E_USER_NOTICE.
This function is useful when you need to generate a particular response to an exception at runtime. For example:
Poznßmka: See set_error_handler() for a more extensive example.
Poznßmka: error_msg is limited to 1024 characters in length. Any additional characters beyond 1024 will be truncated.
See also error_reporting(), set_error_handler(), restore_error_handler(), and error level constants.
FAM monitors files and directories, notifying interested applications of changes.
A PHP script may specify a list of files for FAM to monitor using the functions provided by this extension.
The FAM process is started when the first connection from any application to it is opened. It exits after all connections to it have been closed.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
fam_cancel_monitor() terminates monitoring on a resource previously requested using one of the fam_monitor_...().
See also fam_monitor_file(), fam_monitor_directory(), fam_monitor_collection(), and fam_suspend_monitor()
fam_close() closes a connection to the FAM service previously opened using fam_open().
fam_monitor_file() requests monitoring for a collection of files within a directory. The actual files to be monitored are specified by a directory path in dirname, the maximum search depth starting from this directory and a shell pattern restricting the file names to look for.
See also fam_monitor_file(), fam_monitor_directory(), fam_cancel_monitor(), fam_suspend_monitor(), and fam_resume_monitor().
fam_monitor_file() requests monitoring for a directory and all contained files. A FAM event will be generated whenever the status of the directory (i.e. the result of function stat() on that directory) or its content (i.e. the results of readdir()) change.
See also fam_monitor_file(), fam_monitor_collection(), fam_cancel_monitor(), fam_suspend_monitor(), and fam_resume_monitor().
fam_monitor_file() requests monitoring for a single file. A FAM event will be generated whenever the file status (i.e. the result of function stat() on that file) changes.
See also fam_monitor_directory(), fam_monitor_collection(), fam_cancel_monitor(), fam_suspend_monitor(), and fam_resume_monitor().
fam_next_event() returns the next pending FAM event. The function will block until an event is available which can be checked for using fam_pending().
fam_ext_event() will return an array that contains a FAM event code in element 'code', the path of the file this event applies to in element 'filename' and optionally a hostname in element 'hostname'.
The possible event codes are described in detail in the introduction part of this section.
See also fam_pending().
fam_open() opens a connection to the FAM service daemon. The optional parameter appname should be set to a string identifying the application for logging reasons.
See also fam_close().
fam_pending() returns TRUE if events are available to be fetched using fam_next_event().
See also fam_next_event().
fam_resume_monitor() resumes monitoring of a resource previously suspend using fam_suspend_monitor().
See also fam_suspend_monitor().
fam_suspend_monitor() temporarily suspend monitoring of a resource previously requested using one of the fam_monitor_...() functions. Monitoring can later be continued using fam_resume_monitor() without the need of requesting a complete new monitor.
See also fam_resume_monitor(), and fam_cancel_monitor().
These functions allow you to access FrontBase database servers. More information about FrontBase can be found at http://www.frontbase.com/.
Documentation for FrontBase can be found at http://www.frontbase.com/cgi-bin/WebObjects/FrontBase.woa/wa/productsPage?currentPage=Documentation.
Frontbase support has been added to PHP 4.0.6.
You must install the FrontBase database server or at least the fbsql client libraries to use this functions. You can get FrontBase from http://www.frontbase.com/.
In order to have these functions available, you must compile PHP with fbsql support by using the --with-fbsql[=DIR] option. If you use this option without specifying the path to fbsql, PHP will search for the fbsql client libraries in the default installation location for the platform. Users who installed FrontBase in a non standard directory should always specify the path to fbsql: --with-fbsql=/path/to/fbsql. This will force PHP to use the client libraries installed by FrontBase, avoiding any conflicts.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. FrontBase configuration options
Name | Default | Changeable |
---|---|---|
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM |
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM |
fbsql.autocommit | "1" | PHP_INI_SYSTEM |
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM |
fbsql.max_links | "128" | PHP_INI_SYSTEM |
fbsql.max_connections | "128" | PHP_INI_SYSTEM |
fbsql.max_results | "128" | PHP_INI_SYSTEM |
fbsql.batchSize | "1000" | PHP_INI_SYSTEM |
fbsql.default_host | NULL | PHP_INI_SYSTEM |
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM |
fbsql.default_password | "" | PHP_INI_SYSTEM |
fbsql.default_database | "" | PHP_INI_SYSTEM |
fbsql.default_database_password | "" | PHP_INI_SYSTEM |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
fbsql_affected_rows() returns the number of rows affected by the last INSERT, UPDATE or DELETE query associated with link_identifier. If the link identifier isn't specified, the last link opened by fbsql_connect() is assumed.
Poznßmka: If you are using transactions, you need to call fbsql_affected_rows() after your INSERT, UPDATE, or DELETE query, not after the commit.
If the last query was a DELETE query with no WHERE clause, all of the records will have been deleted from the table but this function will return zero.
Poznßmka: When using UPDATE, FrontBase will not update columns where the new value is the same as the old value. This creates the possibility that fbsql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.
If the last query failed, this function will return -1.
See also: fbsql_num_rows().
fbsql_autocommit() returns the current autocommit status. If the optional OnOff parameter is given the auto commit status will be changed. With OnOff set to TRUE each statement will be committed automatically, if no errors was found. With OnOff set to FALSE the user must commit or rollback the transaction using either fbsql_commit() or fbsql_rollback().
See also: fbsql_commit() and fbsql_rollback()
(no version information, might be only in CVS)
fbsql_change_user -- Change logged in user of the active connectionfbsql_change_user() changes the logged in user of the current active connection, or the connection given by the optional parameter link_identifier. If a database is specified, this will default or current database after the user has been changed. If the new user and password authorization fails, the current connected user stays active.
Returns: TRUE on success, FALSE on error.
fbsql_close() closes the connection to the FrontBase server that's associated with the specified link identifier. If link_identifier isn't specified, the last opened link is used.
Using fbsql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
See also: fbsql_connect() and fbsql_pconnect().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_commit() ends the current transaction by writing all inserts, updates and deletes to the disk and unlocking all row and table locks held by the transaction. This command is only needed if autocommit is set to false.
See also: fbsql_autocommit() and fbsql_rollback()
Returns a positive FrontBase link identifier on success, or an error message on failure.
fbsql_connect() establishes a connection to a FrontBase server. The following defaults are assumed for missing optional parameters: hostname = 'NULL', username = '_SYSTEM' and password = empty password.
If a second call is made to fbsql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling fbsql_close().
See also fbsql_pconnect() and fbsql_close().
Returns: A resource handle to the newly created blob.
fbsql_create_blob() creates a blob from blob_data. The returned resource handle can be used with insert and update commands to store the blob in the database.
P°φklad 1. fbsql_create_blob() example
|
See also: fbsql_create_clob(), fbsql_read_blob(), fbsql_read_clob(), and fbsql_set_lob_mode().
Returns: A resource handle to the newly created CLOB.
fbsql_create_clob() creates a clob from clob_data. The returned resource handle can be used with insert and update commands to store the clob in the database.
P°φklad 1. fbsql_create_clob() example
|
See also: fbsql_create_blob(), fbsql_read_blob(), fbsql_read_clob(), and fbsql_set_lob_mode().
fbsql_create_db() attempts to create a new database named database_name on the server associated with the specified connection link_identifier.
See also: fbsql_drop_db().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_data_seek() moves the internal row pointer of the FrontBase result associated with the specified result identifier to point to the specified row number. The next call to fbsql_fetch_row() would return that row.
Row_number starts at 0.
P°φklad 1. fbsql_data_seek() example
|
Returns: The database password associated with the link identifier.
fbsql_database_password() sets and retrieves the database password used by the connection. if a database is protected by a database password, the user must call this function before calling fbsql_select_db(). if the second optional parameter is given the function sets the database password for the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if fbsql_connect() was called, and use it.
This function does not change the database password in the database nor can it be used to retrieve the database password for a database.
P°φklad 1. fbsql_create_clob() example
|
See also: fbsql_connect(), fbsql_pconnect() and fbsql_select_db().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns: A positive FrontBase result identifier to the query result, or FALSE on error.
fbsql_db_query() selects a database and executes a query on it. If the optional link identifier isn't specified, the function will try to find an open link to the FrontBase server and if no such link is found it'll try to create one as if fbsql_connect() was called with no arguments
See also fbsql_connect().
Returns: An integer value with the current status.
fbsql_db_status() requests the current status of the database specified by database_name. If the link_identifier is omitted the default link_identifier will be used.
The return value can be one of the following constants:
FALSE - The exec handler for the host was invalid. This error will occur when the link_identifier connects directly to a database by using a port number. FBExec can be available on the server but no connection has been made for it.
FBSQL_UNKNOWN - The Status is unknown.
FBSQL_STOPPED - The database is not running. Use fbsql_start_db() to start the database.
FBSQL_STARTING - The database is starting.
FBSQL_RUNNING - The database is running and can be used to perform SQL operations.
FBSQL_STOPPING - The database is stopping.
FBSQL_NOEXEC - FBExec is not running on the server and it is not possible to get the status of the database.
See also: fbsql_start_db() and fbsql_stop_db().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_drop_db() attempts to drop (remove) an entire database from the server associated with the specified link identifier.
(PHP 4 >= 4.0.6)
fbsql_errno -- Returns the numerical value of the error message from previous FrontBase operationReturns the error number from the last fbsql function, or 0 (zero) if no error occurred.
Errors coming back from the fbsql database backend don't issue warnings. Instead, use fbsql_errno() to retrieve the error code. Note that this function only returns the error code from the most recently executed fbsql function (not including fbsql_error() and fbsql_errno()), so if you want to use it, make sure you check the value before calling another fbsql function.
<?php fbsql_connect("marliesle"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; fbsql_select_db("nonexistentdb"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; $conn = fbsql_query("SELECT * FROM nonexistenttable;"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; ?> |
See also: fbsql_error() and fbsql_warnings().
(PHP 4 >= 4.0.6)
fbsql_error -- Returns the text of the error message from previous FrontBase operationReturns the error text from the last fbsql function, or '' (the empty string) if no error occurred.
Errors coming back from the fbsql database backend don't issue warnings. Instead, use fbsql_error() to retrieve the error text. Note that this function only returns the error text from the most recently executed fbsql function (not including fbsql_error() and fbsql_errno()), so if you want to use it, make sure you check the value before calling another fbsql function.
<?php fbsql_connect("marliesle"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; fbsql_select_db("nonexistentdb"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; $conn = fbsql_query("SELECT * FROM nonexistenttable;"); echo fbsql_errno() . ": " . fbsql_error() . "<br />"; ?> |
See also: fbsql_errno() and fbsql_warnings().
(PHP 4 >= 4.0.6)
fbsql_fetch_array -- Fetch a result row as an associative array, a numeric array, or bothReturns an array that corresponds to the fetched row, or FALSE if there are no more rows.
fbsql_fetch_array() is an extended version of fbsql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must the numeric index of the column or make an alias for the column.
An important thing to note is that using fbsql_fetch_array() is NOT significantly slower than using fbsql_fetch_row(), while it provides a significant added value.
The optional second argument result_type in fbsql_fetch_array() is a constant and can take the following values: FBSQL_ASSOC, FBSQL_NUM, and FBSQL_BOTH.
For further details, see also fbsql_fetch_row() and fbsql_fetch_assoc().
P°φklad 1. fbsql_fetch_array() example
|
Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.
fbsql_fetch_assoc() is equivalent to calling fbsql_fetch_array() with FBSQL_ASSOC for the optional second parameter. It only returns an associative array. This is the way fbsql_fetch_array() originally worked. If you need the numeric indices as well as the associative, use fbsql_fetch_array().
If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use fbsql_fetch_array() and have it return the numeric indices as well.
An important thing to note is that using fbsql_fetch_assoc() is NOT significantly slower than using fbsql_fetch_row(), while it provides a significant added value.
For further details, see also fbsql_fetch_row() and fbsql_fetch_array().
Returns an object containing field information.
fbsql_fetch_field() can be used in order to obtain information about fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by fbsql_fetch_field() is retrieved.
The properties of the object are:
name - column name
table - name of the table the column belongs to
max_length - maximum length of the column
not_null - 1 if the column cannot be NULL
type - the type of the column
P°φklad 1. fbsql_fetch_field() example
|
See also fbsql_field_seek().
Returns: An array that corresponds to the lengths of each field in the last row fetched by fbsql_fetch_row(), or FALSE on error.
fbsql_fetch_lengths() stores the lengths of each result column in the last row returned by fbsql_fetch_row(), fbsql_fetch_array() and fbsql_fetch_object() in an array, starting at offset 0.
See also: fbsql_fetch_row().
Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.
fbsql_fetch_object() is similar to fbsql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).
The optional argument result_type is a constant and can take the following values: FBSQL_ASSOC, FBSQL_NUM, and FBSQL_BOTH.
Speed-wise, the function is identical to fbsql_fetch_array(), and almost as quick as fbsql_fetch_row() (the difference is insignificant).
See also: fbsql_fetch_array() and fbsql_fetch_row().
Returns: An array that corresponds to the fetched row, or FALSE if there are no more rows.
fbsql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Subsequent call to fbsql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
See also: fbsql_fetch_array(), fbsql_fetch_object(), fbsql_data_seek(), fbsql_fetch_lengths(), and fbsql_result().
fbsql_field_flags() returns the field flags of the specified field. The flags are reported as a single word per flag separated by a single space, so that you can split the returned value using explode().
fbsql_field_len() returns the length of the specified field.
fbsql_field_name() returns the name of the specified field index. result must be a valid result identifier and field_index is the numerical offset of the field.
Poznßmka: field_index starts at 0.
e.g. The index of the third field would actually be 2, the index of the fourth field would be 3 and so on.
P°φklad 1. fbsql_field_name() example
The above example would produce the following output:
|
Seeks to the specified field offset. If the next call to fbsql_fetch_field() doesn't include a field offset, the field offset specified in fbsql_field_seek() will be returned.
See also: fbsql_fetch_field().
Returns the name of the table that the specified field is in.
fbsql_field_type() is similar to the fbsql_field_name() function. The arguments are identical, but the field type is returned instead. The field type will be one of "int", "real", "string", "blob", and others as detailed in the FrontBase documentation.
P°φklad 1. fbsql_field_type() example
|
fbsql_free_result() will free all memory associated with the result identifier result.
fbsql_free_result() only needs to be called if you are concerned about how much memory is being used for queries that return large result sets. All associated result memory is automatically freed at the end of the script's execution.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
fbsql_insert_id() returns the ID generated for an column defined as DEFAULT UNIQUE by the previous INSERT query using the given link_identifier. If link_identifier isn't specified, the last opened link is assumed.
fbsql_insert_id() returns 0 if the previous query does not generate an DEFAULT UNIQUE value. If you need to save the value for later, be sure to call fbsql_insert_id() immediately after the query that generates the value.
Poznßmka: The value of the FrontBase SQL function fbsql_insert_id() always contains the most recently generated DEFAULT UNIQUE value, and is not reset between queries.
fbsql_list_dbs() will return a result pointer containing the databases available from the current fbsql daemon. Use the fbsql_tablename() function to traverse this result pointer.
Poznßmka: The above code would just as easily work with fbsql_fetch_row() or other similar functions.
fbsql_list_fields() retrieves information about the given tablename. Arguments are the database name and the table name. A result pointer is returned which can be used with fbsql_field_flags(), fbsql_field_len(), fbsql_field_name(), and fbsql_field_type().
A result identifier is a positive integer. The function returns FALSE if an error occurs. A string describing the error will be placed in $phperrmsg, and unless the function was called as @fbsql() then this error string will also be printed out.
P°φklad 1. fbsql_list_fields() example
The above example would produce the following output:
|
fbsql_list_tables() takes a database name and returns a result pointer much like the fbsql_db_query() function. The fbsql_tablename() function should be used to extract the actual table names from the result pointer.
When sending more than one SQL statement to the server or executing a stored procedure with multiple results will cause the server to return multiple result sets. This function will test for additional results available form the server. If an additional result set exists it will free the existing result set and prepare to fetch the words from the new result set. The function will return TRUE if an additional result set was available or FALSE otherwise.
P°φklad 1. fbsql_next_result() example
|
fbsql_num_fields() returns the number of fields in a result set.
See also: fbsql_db_query(), fbsql_query(), fbsql_fetch_field(), and fbsql_num_rows().
fbsql_num_rows() returns the number of rows in a result set. This command is only valid for SELECT statements. To retrieve the number of rows returned from a INSERT, UPDATE or DELETE query, use fbsql_affected_rows().
See also: fbsql_affected_rows(), fbsql_connect(), fbsql_select_db(), and fbsql_query().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns: A positive FrontBase persistent link identifier on success, or FALSE on error.
fbsql_pconnect() establishes a connection to a FrontBase server. The following defaults are assumed for missing optional parameters: host = 'localhost', username = "_SYSTEM" and password = empty password.
To set Frontbase server port number, use fbsql_select_db().
fbsql_pconnect() acts very much like fbsql_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use.
This type of links is therefore called 'persistent'.
fbsql_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If link_identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if fbsql_connect() was called with no arguments, and use it.
Poznßmka: The query string shall always end with a semicolon.
fbsql_query() returns TRUE (non-zero) or FALSE to indicate whether or not the query succeeded. A return value of TRUE means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows.
The following query is syntactically invalid, so fbsql_query() fails and returns FALSE:
The following query is semantically invalid if my_col is not a column in the table my_tbl, so fbsql_query() fails and returns FALSE:
fbsql_query() will also fail and return FALSE if you don't have permission to access the table(s) referenced by the query.
Assuming the query succeeds, you can call fbsql_num_rows() to find out how many rows were returned for a SELECT statement or fbsql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.
For SELECT statements, fbsql_query() returns a new result identifier that you can pass to fbsql_result(). When you are done with the result set, you can free the resources associated with it by calling fbsql_free_result(). Although, the memory will automatically be freed at the end of the script's execution.
See also: fbsql_affected_rows(), fbsql_db_query(), fbsql_free_result(), fbsql_result(), fbsql_select_db(), and fbsql_connect().
Returns: A string containing the BLOB specified by blob_handle.
fbsql_read_blob() reads BLOB data from the database. If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_blob() to get the actual BLOB data from the database.
P°φklad 1. fbsql_read_blob() example
|
See also: fbsql_create_blob(), fbsql_read_blob(), fbsql_read_clob(), and fbsql_set_lob_mode().
Returns: A string containing the CLOB specified by clob_handle.
fbsql_read_clob() reads CLOB data from the database. If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.
P°φklad 1. fbsql_read_clob() example
|
See also: fbsql_create_blob(), fbsql_read_blob(), fbsql_read_clob(), and fbsql_set_lob_mode().
fbsql_result() returns the contents of one cell from a FrontBase result set. The field argument can be the field's offset, or the field's name, or the field's table dot field's name (tabledname.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name.
When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than fbsql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.
Calls to fbsql_result() should not be mixed with calls to other functions that deal with the result set.
Recommended high-performance alternatives: fbsql_fetch_row(), fbsql_fetch_array(), and fbsql_fetch_object().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_rollback() ends the current transaction by rolling back all statements issued since last commit. This command is only needed if autocommit is set to false.
See also: fbsql_autocommit() and fbsql_commit()
fbsql_select_db() sets the current active database on the server that's associated with the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if fbsql_connect() was called, and use it.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The client contacts FBExec to obtain the port number to use for the connection to the database. If the database name is a number the system will use that as a port number and it will not ask FBExec for the port number. The FrontBase server can be stared as FRontBase -FBExec=No -port=<port number> <database name>.
Every subsequent call to fbsql_query() will be made on the active database.
if the database is protected with a database password, the user must call fbsql_database_password() before selecting the database.
See also fbsql_connect(), fbsql_pconnect(), fbsql_database_password(), and fbsql_query().
Returns: TRUE on success, FALSE on error.
fbsql_set_lob_mode() sets the mode for retrieving LOB data from the database. When BLOB and CLOB data is stored in FrontBase it can be stored direct or indirect. Direct stored LOB data will always be fetched no matter the setting of the lob mode. If the LOB data is less than 512 bytes it will always be stored directly.
FBSQL_LOB_DIRECT - LOB data is retrieved directly. When data is fetched from the database with fbsql_fetch_row(), and other fetch functions, all CLOB and BLOB columns will be returned as ordinary columns. This is the default value on a new FrontBase result.
FBSQL_LOB_HANDLE - LOB data is retrieved as handles to the data. When data is fetched from the database with fbsql_fetch_row (), and other fetch functions, LOB data will be returned as a handle to the data if the data is stored indirect or the data if it is stored direct. If a handle is returned it will be a 27 byte string formatted as "@'000000000000000000000000'".
See also: fbsql_create_blob(), fbsql_create_clob(), fbsql_read_blob(), and fbsql_read_clob().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_start_db()
See also: fbsql_db_status() and fbsql_stop_db().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
fbsql_stop_db()
See also: fbsql_db_status() and fbsql_start_db().
fbsql_tablename() takes a result pointer returned by the fbsql_list_tables() function as well as an integer index and returns the name of a table. The fbsql_num_rows() function may be used to determine the number of tables in the result pointer.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tyto funkce umo╛≥ujφ read-only (pouze pro Φtenφ) p°φstup k dat∙m ulo╛en²m ve filePro databßzφch.
filePro je registrovanß obchodnφ znaΦka fP Technologies, Inc. Vφce informacφ o filePro najdete na http://www.fptech.com/.
Vrßtφ poΦet polφ (sloupc∙) v otev°enΘ filePro databßzi.
Viz takΘ filepro().
Vrßtφ editaΦnφ typ sloupce odpovφdajφcφho field_number.
Vrßtφ data z urΦenΘho mφsta v databßzi.
Vrßtφ poΦet °ßdk∙ v otev°enΘ filePro databßzi.
Viz takΘ filepro().
Pro toto roz╣φ°enφ nejsou t°eba ╛ßdnΘ externφ knihovny, ale jestli╛e chcete, aby PHP na Linuxu podporovalo LFS (velkΘ soubory), pot°ebujete aktußlnφ knihovnu glibc a musφte PHP zkompilovat s t∞mito p°epφnaΦi p°ekladaΦe: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Filesystem and Streams Configuration Options
Name | Default | Changeable |
---|---|---|
allow_url_fopen | "1" | PHP_INI_ALL |
user_agent | NULL | PHP_INI_ALL |
default_socket_timeout | "60" | PHP_INI_ALL |
from | NULL | ?? |
auto_detect_line_endings | "Off" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.
Poznßmka: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch --disable-url-fopen-wrapper.
Varovßnφ |
On Windows versions prior to PHP 4.3.0, the following functions do not support remote file accessing: include(), include_once(), require(), require_once() and the imagecreatefromXXX functions in the Image functions extension. |
Define the user agent for PHP to send.
Default timeout (in seconds) for socket based streams.
Poznßmka: This configuration option was introduced in PHP 4.3.0
Define the anonymous ftp password (your email address).
When turned on, PHP will examine the data read by fgets() and file() to see if it is using Unix, MS-Dos or Macintosh line-ending conventions.
This enables PHP to interoperate with Macintosh systems, but defaults to Off, as there is a very small performance penalty when detecting the EOL conventions for the first line, and also because people using carriage-returns as item separators under Unix systems would experience non-backwards-compatible behaviour.
Poznßmka: This configuration option was introduced in PHP 4.3.0
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Pro p°φbuznΘ funkce viz takΘ sekce Adresß°e a Spou╣t∞nφ program∙.
Pro seznam a vysv∞tlenφ r∙zn²ch URL wrapper∙, kterΘ mohou b²t pou╛ity jako vzdßlenΘ soubory, viz takΘ sekci I.
P°ijφmß °et∞zec obsahujφcφ cestu na soubor, vracφ nßzev souboru.
Na Windows se jako odd∞lovaΦ cesty dß pou╛φt jak lomφtko (/), tak zp∞tnΘ lomφtko (\). V ostatnφch prost°edφch je to normßlnφ lomφtko (/).
Viz takΘ dirname()
Pokusφ se nastavit skupinu souboru filename na group. Pouze superu╛ivatel m∙╛e libovoln∞ zm∞nit skupinu souboru; ostatnφ u╛ivatelΘ mohou zm∞nit skupinu souboru na jinou skupinu, jφ╛ jsou Φleny.
P°i ·sp∞chu vracφ TRUE; jinak FALSE.
Poznßmka: Tato funkce nefunguje na Windows systΘmech.
Pokusφ se zm∞nit m≤d souboru filename na mode.
Pozn.: mode se nepova╛uje automaticky za oktalovou hodnotu, tak╛e °et∞zce (jako "g+w") nebudou sprßvn∞ fungovat. Pokud si chcete zajistit oΦekßvanΘ chovßnφ, musφte na zaΦßtek mode p°idat nulu (0):
chmod ("/somedir/somefile", 755); // desitkove cislo; zrejme nespravne chmod ("/somedir/somefile", "u+rwx,go+rx"); // retezec; nespravny chmod ("/somedir/somefile", 0755); // oktal; spravna hodnota modu |
P°i ·sp∞chu vracφ TRUE, jinak FALSE.
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Pokusφ se zm∞nit vlastnφka souboru na user. Pouze superu╛ivatel m∙╛e zm∞nit majitele souboru.
P°i ·sp∞chu vracφ TRUE, jinak FALSE.
Viz takΘ chown() a chmod().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Volßnφ systΘmov²ch funkcφ stat Φi lstat mß pom∞rn∞ velkou re╛ii. Tudφ╛ se v²sledek poslednφho volßnφ v╣ech stavov²ch funkcφ (viz seznam nφ╛e) uklßdß pro pou╛itφ p°i dal╣φm takovΘm volßnφ pou╛φvajφcφm stejn² nßzev souboru. Pokud chcete vynutit novou kontrolu stavu, nap°. pokud je soubor kontrolovßn mnohokrßt a m∙╛e se zm∞nit nebo zmizet, pou╛ijte tuto funkci k uvoln∞nφ v²sledk∙ poslednφho volßnφ z pam∞ti.
Tato hodnota se cachuje pouze po dobu b∞hu skriptu.
Ovlivn∞nΘ funkce: stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype(), a fileperms().
Vytvo°φ kopii souboru. Vracφ TRUE pokud se kopφrovßnφ zda°ilo, jinak FALSE.
Viz takΘ rename().
Toto je fale╣nß polo╛ka manußlu, kterß by m∞la pomoci lidem, kte°φ hledajφ unlink() nebo unset() na ╣patnΘm mφst∞.
Viz takΘ unlink() (mazßnφ soubor∙), unset() (mazßnφ prom∞nn²ch).
P°ijφmß °et∞zec obsahujφcφ cestu na soubor a vracφ nßzev adresß°e.
Na Windows se jako odd∞lovaΦ sesty dajφ pou╛φvat jak lomφtko (/), tak zp∞tnΘ lomφtko (\). Na ostatnφch systΘmech je to lomφtko (/).
Viz takΘ basename()
Given a string containing a directory, this function will return the number of bytes available on the corresponding filesystem or disk partition.
Poznßmka: Tato funkce nebude pracovat se vzdßlen²mi soubory, proto╛e zkouman² soubor musφ b²t dostupn² p°es filesystΘm serveru.
See also disk_total_space()
Given a string containing a directory, this function will return the total number of bytes on the corresponding filesystem or disk partition.
Poznßmka: Tato funkce nebude pracovat se vzdßlen²mi soubory, proto╛e zkouman² soubor musφ b²t dostupn² p°es filesystΘm serveru.
See also disk_free_space()
P°ijφmß °et∞zec obsahujφcφ cestu na adresß°, vracφ poΦet byt∙ dostupn²ch na odpovφdajφcφm filesystΘmu nebo oddφlu.
Soubor, na kter² fp ukazuje, se zav°e.
Vracφ TRUE p°i ·sp∞chu a FALSE p°i selhßnφ.
Deskriptor souboru musφ b²t platn², a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen() nebo fsockopen().
Vracφ TRUE, pokud je konec souboru (EOF) nebo nastala chyba, jinak FALSE.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen().
Funkce vynutφ okam╛it² zßpis ve╣ker²ch dat ulo╛en²ch ve v²stupnφm bufferu do souboru odkazovanΘho pomocφ deskriptoru fp. Vracφ TRUE p°i ·sp∞chu, jinak FALSE.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen().
Vrßtφ °et∞zec obsahujφcφ jedin² znak p°eΦten² ze souboru odkazovanΘho pomocφ deskriptoru fp. Je-li konec souboru (EOF), vracφ FALSE.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen().
Viz takΘ fread(), fopen(), popen(), fsockopen(), a fgets().
PodobnΘ jako fgets() s v²jimkou toho. ╛e fgetcsv() parsuje p°eΦten² °ßdek podle CSV formßtu a vracφ pole obsahujφcφ zφskanΘ hodnoty. Odd∞lovaΦem je Φßrka, pokud nespecifikujete jin² odd∞lovaΦ jako nepovinn² t°etφ parametr.
Fp musφ b²t platn² deskriptor souboru ·sp∞╣n∞ otev°enΘho pomocφ fopen(), popen(), nebo fsockopen()
DΘlka length musφ b²t v∞t╣φ ne╛ nejdel╣φ °ßdek, vyskytujφcφ se v souboru (nepoΦφtaje v to znak konce °ßdku).
fgetcsv() vracφ FALSE p°i chyb∞ vΦetn∞ konce souboru (EOF).
N.B. Prßzdn² °ßdek v CSV souboru bude vrßcen jako pole s jedin²m NULL polem, ani╛ by to bylo vyhodnoceno jako chyba.
Vracφ °ßdek o dΘlce max. length - 1 byte p°eΦten² ze souboru. ╚tenφ konΦφ, pokud bylo p°eΦteno length - 1 byt∙, nastal konec °ßdku nebo konec souboru (podle toho, co p°ijde prvnφ).
P°i v²skytu chyby vracφ FALSE.
NejΦast∞j╣φ ·skalφ:
LidΘ, kte°φ pou╛φvali 'C' sΘmantiku funkce fgets, by si m∞li uv∞domit rozdφl v tom, jak je vrßcen konec souboru.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen().
Jednoduch² p°φklad:
Viz takΘ fread(), fopen(), popen(), fgetc(), fsockopen(), a socket_set_timeout().
IdentickΘ s fgets(), ale jsou zde z p°eΦtenΘho textu odstra≥ovßny HTML a PHP znaΦky.
Jako nepovinn² t°etφ parametr m∙╛ete specifikovat znaΦky, kterΘ nebudou odstra≥ovßny.
Poznßmka: allowable_tags - p°idßno v PHP 3.0.13, PHP4B3.
Viz takΘ fgets(), fopen(), fsockopen(), popen(), a strip_tags().
Vracφ TRUE, pokud soubor specifikovan² pomocφ filename existuje, jinak FALSE.
file_exists() nefunguje na vzdßlen²ch souborech; soubor k ov∞°enφ musφ b²t p°φstupn² prost°ednictvφm filesystΘmu serveru.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Identical to file(), except that file_get_contents() returns the file in a string.
file_get_contents() is the preferred way to read the contents of a file into a string. It will use memory mapping techniques if supported by your OS to enhance performance.
Poznßmka: Tato funkce je binßrn∞ bezpeΦnß.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Poznßmka: Context support was added with PHP 5.0.0.
See also: fgets(), file(), fread(), include(), and readfile().
Identical to calling fopen(), fwrite(), and fclose() successively. The function returns the amount of bytes that were written to the file.
flags can take FILE_USE_INCLUDE_PATH and/or FILE_APPEND, however the FILE_USE_INCLUDE_PATH option should be used with caution.
Poznßmka: Tato funkce je binßrn∞ bezpeΦnß.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
See also: fopen(), fwrite(), fclose(), and file_get_contents().
IdentickΘ s readfile(), soubor je v╣ak vrßcen v podob∞ pole. Ka╛d² element pole odpovφdß jednomu °ßdku v souboru vΦetn∞ znaku konce °ßdku.
M∙╛ete pou╛φt nepovinn² druh² parametr a nastavit ho na "1", pokud chcete hledat soubor takΘ v include_path.
<?php // naΦti WWW strßnku do pole a vytiskni ji $fcontents = file ('http://www.php.net'); while (list ($line_num, $line) = each ($fcontents)) { echo "<b>Line $line_num:</b> " . htmlspecialchars ($line) . "<br>\n"; } // naΦti WWW strßnku do °et∞zce $fcontents = join ('', file ('http://www.php.net')); ?> |
Viz takΘ readfile(), fopen(), fsockopen(), a popen().
Vracφ Φas poslednφho p°φstupu k souboru, p°i chyb∞ FALSE. ╚as je vrßcen jako Unix timestamp.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Pozn.: Atime (Φas posl. p°φstupu) souboru se obvykle m∞nφ p°i Φtenφ datov²ch blok∙ ze souboru. To se m∙╛e znaΦn∞ negativn∞ projevit na v²konu systΘmu, pokud aplikace p°istupuje k velkΘmu poΦtu soubor∙ nebo adresß°∙. N∞kterΘ UnixovΘ filesystΘmy mohou mφt atime deaktivovßn za ·Φelem zv²╣enφ v²konu pro takovΘ aplikace; takov²m p°φpadem jsou USENET news spools. Tehdy je tato funkce bezp°edm∞tnß.
Vracφ Φas poslednφ zm∞ny inodu souboru, p°i chyb∞ FALSE. ╚as je vracen jako Unix timestamp.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Pozn.: Na v∞t╣in∞ unixov²ch filesystΘm∙ platφ, ╛e soubor je pova╛ovßn za zm∞n∞n², pokud jsou zm∞n∞na data v Inodu, tj. p°φstupovß prßva, vlastnφk, skupina nebo jinß metadata jsou zapsßna do Inodu. filemtime() (toto je to, co chcete pou╛φt, kdy╛ chcete vytvo°it ·daj "Poslednφ zm∞na" na WWW strßnce) a fileatime().
Pozn.: Na n∞kter²ch Unixech je ctime pova╛ovßn za Φas vytvo°enφ souboru. To je chyba. Na v∞t╣in∞ unixov²ch filesystΘm∙ neexistuje ╛ßdn² Φas vytvo°enφ unixov²ch soubor∙.
Vracφ ID skupiny vlastnφka souboru, p°i chyb∞ FALSE. SkupinovΘ ID je v ΦφselnΘm tvaru, pou╛ijte posix_getgrgid() pro zφskßnφ nßzvu skupiny.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Vracφ inode Φφslo souboru, p°i chyb∞ FALSE.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Vracφ Φas poslednφ zm∞ny souboru, p°i chyb∞ FALSE. ╚as je vracen jako Unix timestamp.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Tato funkce vracφ Φas, kdy byly zapsßny datovΘ bloky, tj. Φas poslednφ zm∞ny obsahu souboru. Pou╛ijte funkci date() na v²sledek tΘto funkce k zφskßnφ formßtovanΘho tvaru data pro pou╛itφ na WWW strßnkßch.
Vracφ ID u╛ivatele (UID), vlastnφcφho soubor; p°i chyb∞ FALSE. Hodnota je v ΦφselnΘm tvaru, pou╛ijte funkci posix_getpwuid() k zφskßnφ u╛ivatelskΘho jmΘna.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Vracφ p°φstupovß prßva (permissions) k souboru, p°i chyb∞ FALSE.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Vracφ velikost souboru, p°i chyb∞ FALSE.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Vracφ typ souboru. Mo╛nΘ hodnoty jsou fifo, char, dir, block, link, file a unknown.
P°i chyb∞ vracφ FALSE.
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
PHP podporuje "portable" zp∙sob zamykßnφ cel²ch soubor∙ na zßklad∞ jednotnΘho "advisory" principu (tzn. v╣echny p°istupujφcφ programy musφ pou╛φvat tent²╛ systΘm zamykßnφ, jinak to nebude fungovat).
flock() funguje na deskriptoru fp, kter² musφ pat°it otev°enΘmu souboru. operation je jedna z nßsledujφcφch hodnot:
K zφskßnφ sdφlenΘho (shared) zßmku (Φtenφ) nastavte operation na LOCK_SH (resp. 1 u verzφ do PHP 4.0.1).
K zφskßnφ v²hradnφho zßmku (zßpis) nastavte operation na LOCK_EX (resp. 2 u verzφ do PHP 4.0.1).
K uvoln∞nφ zßmku (sdφlenΘho nebo v²hradnφho) nastavte operation na LOCK_UN (resp. 3 u verzφ do PHP 4.0.1).
Pokud nechcete, aby funkce flock() blokovala b∞hem zamykßnφ, p°idejte k operation hodnotu LOCK_NB (4 pro verze do PHP 4.0.1).
flock() umo╛nuje jednoduch² model Φtenφ/zßpis pou╛iteln² teoreticky na v╣ech platformßch (vΦetn∞ v∞t╣iny Unix∙ a nejspφ╣ i Windows). Nepovinn² t°etφ argument se nastavφ na TRUE, pokud by zßmek m∞l blokovat (EWOULDBLOCK errno podmφnka).
flock() vracφ TRUE p°i ·sp∞chu, FALSE p°i chyb∞ (nap°. kdy╛ nelze vytvo°it zßmek).
Varovßnφ |
Na v∞t╣in∞ operaΦnφch systΘm∙ je funkce flock() implementovßna na ·rovni proces∙. P°i pou╛itφ multithreadovΘho serverovΘho API (jako je ISAPI) nem∙╛ete spolΘhat na ochranu soubor∙ proti jin²m PHP skript∙m b∞╛φcφm v paralelnφch vlßknech stejnΘ instance serveru! |
fnmatch() checks if the passed string would match the given shell wildcard pattern.
This is especially useful for filenames, but may also be used on regular strings. The average user may be used to shell patterns or at least in their simplest form to '?' and '*' wildcards so using fnmatch() instead of ereg() or preg_match() for frontend search expression input may be way more convenient for non-programming users.
See also glob(), ereg(), preg_match() and the Unix manpage on fnmatch(3) for flag names (as long as they are not documented here ).
Jestli╛e filename zaΦφnß "http://" (velk²mi nebo mal²mi pφsmeny), je otev°eno spojenφ na p°φslu╣n² server protokolem HTTP 1.0 a je vrßcen deskriptor ukazujφcφ na zaΦßtek t∞la dokumentu. Posφlß se hlaviΦka 'Host:' pro p°φstup k virtußlnφm server∙m zalo╛en²m na jmΘn∞.
Nezpracovßvß HTTP p°esm∞rovßnφ, je t°eba vlo╛it koncovΘ lomφtko za nßzev adresß°e.
Kdy╛ filename zaΦφnß "ftp://" (velkß Φi malß pφsmena), je otev°ena FTP relace na p°φslu╣n² server a vrßcen deskriptor na po╛adovan² soubor. Pokud server nepodporuje pasivnφ re╛im FTP komunikace, sel╛e to. M∙╛ete p°es FTP otvφrat soubory pro Φtenφ i zßpis, ale ne pro obojφ najednou.
Kdy╛ filename je bu∩ "php://stdin", "php://stdout", nebo "php://stderr", bude otev°en standardnφ vstup/v²stup (stdio). (To platφ od verze PHP 3.0.13; v d°φv∞j╣φch verzφch se musφ pou╛φt nßzvy jako "/dev/stdin" nebo "/dev/fd/0".)
Kdy╛ filename zaΦφnß Φφmkoli jin²m, bude otev°en obyΦejn² soubor (z filesystΘmu) a vrßcen jeho deskriptor.
Pokud otvφrßnφ sel╛e, funkce vrßtφ FALSE.
mode m∙╛e b²t kter²koli z t∞chto:
'r' - Otev°φt pouze pro Φtenφ; nastavφ ukazatel na zaΦßtek souboru.
'r+' - Otev°φt pro Φtenφ a zßpis; nastavφ ukazatel na zaΦßtek souboru.
'w' - Otev°φt pouze pro zßpis; nastavφ ukazatel na zaΦßtek souboru a zkrßtφ soubor na nulovou dΘlku. Pokud soubor neexistuje, pokusφ se ho vytvo°it.
'w+' - Otev°φt pro Φtenφ a zßpis; nastavφ ukazatel na zaΦßtek souboru a zkrßtφ soubor na nulovou dΘlku. Pokud soubor neexistuje, pokusφ se ho vytvo°it.
'a' - Otev°φt pouze pro zßpis; nastavφ ukazatel na konec souboru, Pokud soubor neexistuje, pokusφ se ho vytvo°it.
'a+' -Otev°φt pro Φtenφ a zßpis; nastavφ ukazatel na konec souboru. Pokud soubor neexistuje, pokusφ se ho vytvo°it.
M∙╛ete pou╛φt nepovinn² t°etφ parametr a nastavit ho na "1", pokud chcete hledat soubor takΘ v include_path.
Pokud jste zaznamenali problΘmy se Φtenφm a zßpisem do soubor∙ a pou╛φvßte PHP jako modul do serveru, nezapome≥te zajistit, aby soubory a adresß°e, kterΘ pou╛φvßte, byly p°φstupnΘ pro serverov² proces.
Na Windows je t°eba oescapovat v╣echna zp∞tnß lomφtka ve specifikaci cesty k souboru nebo pou╛φvat obyΦejnß (dop°ednß) lomφtka.
Viz takΘ fclose(), fsockopen(), socket_set_timeout(), a popen().
╚te a╛ do dosa╛enφ konce souboru specifikovanΘho deskriptorem a naΦtenΘ p°episuje na standardnφ v²stup.
Pokud nastane chyba, funkce fpassthru() vracφ FALSE.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen(). A╛ funkce fpassthru() ukonΦφ Φtenφ, zav°e soubor (deskriptor fp tφm ztrßcφ smysl).
Kdy╛ chcete vypsat obsah souboru na standardnφ v²stup (stdout), m∙╛ete pou╛φ funkci readfile(), kterß vßs u╣et°φ volßnφ funkce fopen().
Viz takΘ readfile(), fopen(), popen(), a fsockopen()
Funkce fputs() je alias k fwrite() a je s nφ tedy naprosto identickß. Uv∞domte si, ╛e parametr length je nepovinn² a pokud nenφ specifikovßn, zapφ╣e se cel² °etezec.
fread() p°eΦte nejv²╣e length byt∙ ze souboru specifikovanΘho deskriptorem fp. ╚tenφ konΦφ, pokud je p°eΦteno length byt∙ nebo je dosa╛en konec souboru (podle toho, co p°ijde d°φv).
// nacte obsah souboru do retezce $filename = "/usr/local/something.txt"; $fd = fopen ($filename, "r"); $contents = fread ($fd, filesize ($filename)); fclose ($fd); |
Viz takΘ fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file(), a fpassthru().
Funkce fscanf() je podobnß sscanf(), ale naΦφtß ze souboru specifikovanΘho handle a interpretuje vstupnφ data podle specifikovanΘho formßtu format. Pokud mß funkce pouze dva parametry, parsovanΘ hodnoty bude vrßceny jako pole. Jinak, kdy╛ jsou pou╛ity nepovinnΘ parametry, funkce vracφ urΦit² poΦet asignovan²ch hodnot. NepovinnΘ parametry musφ b²t vlo╛eny odkazem.
Viz takΘ fread(), fgets(), fgetss(), sscanf(), printf(), a sprintf().
Nastavφ ukazatel pozice v souboru specifikovanΘ pomocφ deskriptoru fp. Novß pozice, m∞°enß poΦtem byt∙ od zaΦßtku souboru, je zφskßna p°iΦtenφm hodnoty offset k pozici specifikovanΘ pomocφ whence, jeho╛ hodnota je definovanßna:
SEEK_SET - Nastav na pozici rovnu offset byt∙. |
SEEK_CUR - Nastav pozici na souΦasnou plus poΦet byt∙ v offset. |
SEEK_END - Nastav na konec souboru plus offset byt∙. |
Pokud nenφ parametr whence specifikovßn, pou╛ije se SEEK_SET.
P°i ·sp∞chu vracφ 0, jinak -1. Pozn.: p°esun za konec souboru nenφ pova╛ovßn za chybu.
Nelze pou╛φt na deskriptor souboru vrßcen² funkcφ fopen(), jestli╛e byl pou╛it formßt "http://" nebo "ftp://".
Poznßmka: Argument whence byl p°idßn po verzi PHP 4.0 RC1.
Sbφrß statistiky otev°enΘho souboru specifikovanΘm deskriptorem fp. Tato funkce je podobnß funkci stat(), pracuje v╣ak s deskriptorem, nikoli nßzvem souboru.
Vracφ pole se statistikami souboru s t∞mito elementy:
device
inode
number of links
user id of owner
group id owner
device type if inode device *
size in bytes
time of last access
time of last modification
time of last change
blocksize for filesystem I/O *
number of blocks allocated
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Vracφ pozici v souboru odkazovanΘm deskriptorem fp; typicky offset ve streamu.
Pokud nastane chyba, vracφ FALSE.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen(), popen(), nebo fsockopen().
Vezme soubor specifikovan² pomocφ fp a zkrßtφ ho na dΘlku size. Vracφ TRUE p°i ·sp∞chu a FALSE p°i chyb∞.
fwrite() zapφ╣e obsah °et∞zce string do souboru specifikovanΘho pomocφ fp. Pokud je zde argument length, zßpis skonΦφ po zapsßnφ length byt∙ nebo p°i dosa╛enφ konce °et∞zce string, podle toho, co p°ijde d°φv.
Pozn.: pokud je dßn argument length, volba magic_quotes_runtime v konfiguraci bude ignorovßna a nebudou odstra≥ovßna ╛ßdnß lomφtka z °et∞zce string.
Viz takΘ fread(), fopen(), fsockopen(), popen(), a fputs().
The glob() function searches for all the pathnames matching pattern according to the rules used by the shell. No tilde expansion or parameter substitution is done.
Returns an array containing the matched files/directories or FALSE on error.
Valid flags:
GLOB_MARK - Adds a slash to each item returned
GLOB_NOSORT - Return files as they appear in the directory (no sorting)
GLOB_NOCHECK - Return the search pattern if no files matching it were found
GLOB_NOESCAPE - Backslashes do not quote metacharacters
GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c'
GLOB_ONLYDIR - Return only directory entries which match the pattern
Poznßmka: Before PHP 4.3.3 GLOB_ONLYDIR was not available on Windows and other systems not using the GNU C library.
P°φklad 1. Convenient way how glob() can replace opendir() and friends.
Output will look something like:
|
Poznßmka: Tato funkce nebude pracovat se vzdßlen²mi soubory, proto╛e zkouman² soubor musφ b²t dostupn² p°es filesystΘm serveru.
See also opendir(), readdir(), closedir(), and fnmatch().
Vracφ TRUE kdy╛ soubor existuje a jednß se o adresß°.
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Vracφ TRUE, kdy╛ soubor existuje a je spustiteln² (provediteln²)
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Vracφ TRUE, kdy╛ soubor existuje a jednß se o obyΦejn² (regular) soubor
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Vracφ TRUE, kdy╛ soubor existuje a jednß se o symbolick² odkaz (link).
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Viz takΘ is_dir() a is_file().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Vracφ TRUE, kdy╛ soubor existuje a lze z n∞j Φφst.
M∞jte na pam∞ti, ╛e PHP m∙╛e p°istupovat k souboru s prßvy, kter²mi disponuje WWW server (obvykle 'nobody'). Omezenφ bezpeΦnΘho re╛imu (safe mode limitations) are not taken into account.
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Viz takΘ is_writable().
(PHP 3>= 3.0.17, PHP 4 >= 4.0.3)
is_uploaded_file -- Zjistφ, zda byl soubor uploadovßn pomocφ HTTP POSTTato funkce je dostupnß pouze na verzφch PHP 3 od 3.0.16 a na verzφch PHP 4 od 4.0.2.
Vracφ TRUE, pokud soubor nazvan² filename byl uploadovßn pomocφ HTTP POST. To je u╛iteΦnΘ k uji╣t∞nφ se, zda se neukßzn∞n² u╛ivatel nepokusil upravit skript tak, aby pracoval se soubory, se kter²mi by pracovat nem∞l -- nap°φklad /etc/passwd.
Tento druh test∙ je zvlß╣t∞ d∙le╛it², je-li mo╛nost, ╛e akce na uploadovan²ch souborech m∙╛e zp°φstupnit jejich obsah u╛ivateli nebo jin²m u╛ivatek∙m tohoto systΘmu.
Viz takΘ move_uploaded_file(), a sekce Handling file uploads, kde je p°φklad jednoduchΘho pou╛itφ.
Vracφ TRUE, kdy╛ soubor existuje a lze do n∞j zapisovat. Nßzev souboru (argument filename) m∙╛e b²t nßzev adresß°e, potom se zji╣╗uje, zda lze do adresß°e zapisovat.
M∞jte na pam∞ti, ╛e PHP m∙╛e p°istupovat k souboru s prßvy, kter²mi disponuje WWW server (obvykle 'nobody'). Omezenφ bezpeΦnΘho re╛imu (safe mode limitations) are not taken into account.
V²sledek tΘto funkce je cachovßn. Vφce detail∙ - viz clearstatcache().
Viz takΘ is_readable().
link() vytvo°φ hard link.
Viz takΘ symlink() pro vytvß°enφ symbolick²ch link∙ a readlink() spolu s linkinfo().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
linkinfo() vracφ polo╛ku st_dev field struktury UNIX C stat zφskanou systΘmov²m volßnφm lstat. Tato funkce se pou╛φvß pro ov∞°enφ, zda odkaz (specifikovan² pomocφ path) opravdu existuje (pou╛φvß se tatß╛ metoda jako je makro S_ISLNK definovanφ v stat.h). Vracφ 0, v p°φpad∞ chybyFALSE.
Viz takΘ symlink(), link(), a readlink().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
Sbφrß statistiky o souboru nebo symbolickΘm odkazu (linku) identifikovanΘm pomocφ nßzvu filename. Tato funkce je identickß s funkcφ stat(), s v²jimkou situace, kdy parametrem filename je symbolick² odkaz -- tehdy jsou vrßceny informace o odkazu, nikoli o souboru, na kter² ukazuje.
Vracφ pole se statistikami souboru s t∞mito elementy:
device
inode
inode protection mode
number of links
user id of owner
group id owner
device type if inode device *
size in bytes
time of last access
time of last modification
time of last change
blocksize for filesystem I/O *
number of blocks allocated
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
Pokusφ se vytvo°it adresß° specifikovan² sv²m nßzvem.
Pozn.: Pravd∞podobn∞ chcete specifikovat m≤d jako oktalovΘ Φφslo, potom by v╣ak m∞lo zaΦφnat nulou.
Vracφ TRUE p°i ·sp∞chu a FALSE p°i chyb∞.
Viz takΘ rmdir().
tato fuknce je dostupnß pouze ve verzφch PHP 3 od 3.0.16 a ve verzφch PHP 4 od 4.0.2.
Tato si ov∞°uje, zda soubor identifikovan² nßzvem filename je platn²m uploadovan²m souborem (prost°ednictvφm HTTP POST mechanismu poskytovanΘho PHP). Pokud je soubor platn², je p°esunut/p°ejmenovßn na destination.
Pokud filename nenφ platn² uploadovan² soubor, funkce move_uploaded_file() nic neprovede a vrßtφ FALSE.
Pokud filename je platn² uploadovan² soubor, ale z n∞jakΘho d∙vodu nem∙╛e b²t p°esunut, funkce move_uploaded_file() nic neprovede a vrßtφ FALSE. Navφc je vygenerovßno varovßnφ (warning).
Tento druh test∙ je zvlß╣t∞ d∙le╛it², je-li mo╛nost, ╛e akce na uploadovan²ch souborech m∙╛e zp°φstupnit jejich obsah u╛ivateli nebo jin²m u╛ivatek∙m tohoto systΘmu.
Viz takΘ is_uploaded_file(), a sekce Handling file uploads, kde je p°φklad jednoduchΘho pou╛itφ.
parse_ini_file() loads in the ini file specified in filename, and returns the settings in it in an associative array. By setting the last process_sections parameter to TRUE, you get a multidimensional array, with the section names and settings included. The default for process_sections is FALSE
Poznßmka: This function has nothing to do with the php.ini file. It is already processed, the time you run your script. This function can be used to read in your own application's configuration files.
Poznßmka: If a value in the ini file contains any non-alphanumeric characters it needs to be enclosed in double-quotes (").
Poznßmka: Since PHP 4.2.1 this function is also affected by bezpeΦn² re╛im and open_basedir.
Poznßmka: There are reserved words which must not be used as keys for ini files. These include: null, yes, no, true, and false.
The structure of the ini file is similar to that of the php.ini's.
Constants may also be parsed in the ini file so if you define a constant as an ini value before running parse_ini_file(), it will be integrated into the results. Only ini values are evaluated. For example:
P°φklad 2. parse_ini_file() example
Would produce:
|
pathinfo() returns an associative array containing information about path. The following array elements are returned: dirname, basename and extension.
Poznßmka: For information on retrieving the current path info, read the section on predefined reserved variables.
See also dirname(), basename(), parse_url() and realpath().
Zav°e rouru otev°enou pomocφ funkce popen().
Deskriptor souboru musφ b²t platn² a musφ ukazovat na rouru ·sp∞╣n∞ otev°enou pomocφ popen().
Vracφ nßvratov² k≤d procesu, kter² na rou°e b∞╛el.
Viz takΘ popen().
Otev°e rouru do procesu spu╣t∞nΘho roz╣t∞penφm stßvajφcφho procesu nßsledn²m a spu╣t∞nφm programu specifikovanΘho parametrem command.
Vracφ deskriptor souboru identick² s tφm, kter² vracφ funkce fopen(), je v╣ak v╛dy pouze jednosm∞rn² (m∙╛e b²t otev°en pro Φtenφ nebo zßpis, nikoli souΦasn∞) a na zßv∞r musφ b²t zav°en pomocφ pclose(). Tento deskriptor m∙╛e b²t pou╛it funkcemi fgets(), fgetss(), a fputs().
Nastane-li chyba, vracφ FALSE.
Viz takΘ pclose().
P°eΦte soubor a vypφ╣e ho na standardnφ v²stup.
Vracφ poΦet byt∙ p°eΦten²ch ze souboru. Pokud nastane chyba, vrßtφ FALSE a pokud nebyla pou╛ita notace @readfile, vypφ╣e se chybovΘ hlß╣enφ.
Kdy╛ filename zaΦφnß "http://" (velk²mi nebo mal²mi pφsmeny), otev°e se spojenφ na p°φslu╣n² server protokolem HTTP 1.0 a zφskan² dokument se vypφ╣e na standardnφ v²stup.
Nezpracovßvß HTTP p°esm∞rovßnφ, je t°eba vlo╛it koncovΘ lomφtko za nßzev adresß°e.
Kdy╛ filename zaΦφnß "ftp://" (velkß Φi malß pφsmena), je otev°ena FTP relace na p°φslu╣n² server a dokument se vypφ╣e na standardnφ v²stup. Pokud server nepodporuje pasivnφ re╛im FTP komunikace, sel╛e to.
Kdy╛ filename zaΦφnß Φφmkoli jin²m, bude otev°en obyΦejn² soubor (z filesystΘmu) a jeho obsah vypsßn na standardnφ v²stup.
M∙╛ete pou╛φt nepovinn² t°etφ parametr a nastavit ho na "1", pokud chcete hledat soubor takΘ v include_path.
Viz takΘ fpassthru(), file(), fopen(), include(), require(), a virtual().
readlink() provßdφ totΘ╛ jako funkce readlink v C a vracφ nßzev souboru, na kter² symbolick² odkaz (link) ukazuje. P°i chyb∞ vracφ 0.
Viz takΘ symlink(), readlink() a linkinfo().
Poznßmka: Tato funkce nefunguje na Windows systΘmech
realpath() zpracuje v╣echny symbolickΘ odkazy a vyhodnotφ odkazy na '/./', '/../' a samostatnΘ znaky '/' v parametru path a vracφ absolutnφ cestu v kanonickΘm tvaru. Tato v²slednß cesta neobsahuje symbolickΘ odkazy a komponenty typu '/./' or '/../'.
Pokusφ se p°ejmenovat soubor oldname na newname.
Vracφ TRUE p°i ·sp∞chu a FALSE p°i chyb∞.
Nastavφ pozici ukazatele v souboru specifikovanΘ deskriptorem fp na zaΦßtek tohoto souboru.
Nastane-li chyba, vracφ 0.
Deskriptor souboru musφ b²t platn² a musφ ukazovat na soubor ·sp∞╣n∞ otev°en² pomocφ fopen().
Pokusφ se odstranit adresß° specifikovan² sv²m nßzvem. Adresß° musφ b²t b²t prßzdn² a mφt nastavena odpovφdajφcφ oprßvn∞nφ.
Nastane-li chyba, vracφ 0.
Viz takΘ mkdir().
V²stup pomocφ fwrite() je implicitn∞ bufferovßn do bufferu o velikosti 8 KB. To znamenß, ╛e kdy╛ cht∞jφ dva procesy zapisovat do tΘho╛ streamu (souboru), ka╛d² je v╛dy po 8 KB p°eru╣en, aby ten druh² mohl zapisovat. Funkce set_file_buffer() nastavuje buffering pro zßpis p°es dan² deskriptor fp na buffer byt∙. Pokud je buffer roven 0, zßpisy nejsou bufferovßny. To zaji╣╗uje, ╛e v╣echny zßpisy jsou dokonΦeny d°φv, ne╛ ostatnφ procesy mohou do souboru zapisovat.
Funkce vracφ 0 p°i ·sp∞chu nebo EOF (konec souboru) pokud po╛adavek nem∙╛e b²t uskuteΦn∞n.
Nßsledujφcφ p°φklad demonstruje, jak pou╛φvat funkci set_file_buffer() k vytvo°enφ nebufferovanΘho streamu.
Sbφrß statistiky o souboru indentifikovanΘm nßzvem filename.
Vracφ pole se statistikami souboru s t∞mito elementy:
device
inode
inode protection mode
number of links
user id of owner
group id owner
device type if inode device *
size in bytes
time of last access
time of last modification
time of last change
blocksize for filesystem I/O *
number of blocks allocated
V²sledek tΘto funkce je cachovßn. Vφce informacφ - viz clearstatcache().
symlink() vytvo°φ symbolick² odkaz (link) k existujφcφmu souboru target a nazve ho link.
Viz takΘ link() -- vytvß°enφ hard link∙, a readlink() spoleΦn∞ s linkinfo().
Poznßmka: Tato funkce nefunguje na Windows systΘmech.
Ve specifikovanΘm adresß°i vytvo°φ doΦasn² soubor s unikßtnφm nßzvem. Pokud adresß° neexistuje, tempnam() m∙╛e vytvo°it soubor v systΘmovΘm adresß°i pro doΦasnΘ soubory.
Chovßnφ funkce tempnam() je zßvislΘ na platform∞. Na Windows mß parametr dir p°ednost p°ed systΘmovou prom∞nnou TMP, na Linuxu mß p°edost prom∞nnß TMPDIR a SVR4 v╛dy pou╛ije parametr dir, pokud tento adresß° existuje. Podφvejte se do dokumentace k va╣emu systΘmu na funkci tempnam(3).
Vracφ nßzev novΘho doΦasnΘho souboru, p°i chyb∞ pak °et∞zec NULL.
Poznßmka: Chovßnφ tΘto funkce bylo zm∞n∞no ve verzi 4.0.3. The temporary file is also created to avoid a race condition where the file might appear in the filesystem between the time the string was generated and before the the script gets around to creating the file.
Viz takΘ tmpfile().
Vytvo°φ doΦasn² soubor s unikßtnφm nßzvem, v m≤du zßpisu, a vracφ deskriptor tohoto souboru podobn∞ jako fopen(). Soubor se p°i zav°enφ (pomocφ fclose()) nebo p°i ukonΦenφ skriptu automaticky sma╛e.
Detaily viz systΘmovß dokumentace k funkci tmpfile(3) a soubor stdio.h.
Viz takΘ tempnam().
Pokusφ se nastavit Φas zm∞nu souboru filename na time. Pokud filename nenφ p°φtomen, pou╛ije se aktußlnφ Φas.
Pokud tento soubor neexistuje, vytvo°φ se.
P°i ·sp∞chu vracφ TRUE, jinak FALSE.
umask() nastavφ umask PHP na & 0777 a vrßtφ starΘ nastavenφ umask. Pokud PHP b∞╛φ jako modul serveru, je starΘ nastavenφ obnoveno po ukonΦenφ ka╛dΘho HTTP po╛adavku.
umask() bez parametr∙ vracφ souΦasnΘ nastavenφ umask.
Poznßmka: Tato funkce nemusφ na Windows fungovat
Sma╛e filename. Podobnß UnixovΘ C funkci unlink().
P°i chyb∞ vracφ 0 nebo FALSE.
Viz takΘ rmdir() pro mazßnφ adresß°∙.
Poznßmka: Tato funkce nemusφ na Windows fungovat
Forms Data Format (FDF) is a format for handling forms within PDF documents. You should read the documentation at http://partners.adobe.com/asn/acrobat/forms.jsp for more information on what FDF is and how it is used in general.
The general idea of FDF is similar to HTML forms. The difference is basically the format how data is transmitted to the server when the submit button is pressed (this is actually the Form Data Format) and the format of the form itself (which is the Portable Document Format, PDF). Processing the FDF data is one of the features provided by the fdf functions. But there is more. One may as well take an existing PDF form and populated the input fields with data without modifying the form itself. In such a case one would create a FDF document (fdf_create()) set the values of each input field (fdf_set_value()) and associate it with a PDF form (fdf_set_file()). Finally it has to be sent to the browser with MimeType application/vnd.fdf. The Acrobat reader plugin of your browser recognizes the MimeType, reads the associated PDF form and fills in the data from the FDF document.
If you look at an FDF-document with a text editor you will find a catalogue object with the name FDF. Such an object may contain a number of entries like Fields, F, Status etc.. The most commonly used entries are Fields which points to a list of input fields, and F which contains the filename of the PDF-document this data belongs to. Those entries are referred to in the FDF documentation as /F-Key or /Status-Key. Modifying this entries is done by functions like fdf_set_file() and fdf_set_status(). Fields are modified with fdf_set_value(), fdf_set_opt() etc..
You need the FDF toolkit SDK available from http://partners.adobe.com/asn/acrobat/forms.jsp. As of PHP 4.3 you need at least SDK version 5.0. The FDF toolkit library is available in binary form only, platforms supported by Adobe are Win32, Linux, Solaris and AIX.
You must compile PHP with --with-fdftk[=DIR].
Poznßmka: If you run into problems configuring PHP with fdftk support, check whether the header file fdftk.h and the library libfdftk.so are at the right place. The configure script supports both the directory structure of the FDF SDK distribution and the usual DIR/include / DIR/lib layout, so you can point it either directly to the unpacked distribution directory or put the header file and the appropriate library for your platform into e.g. /usr/local/include and /usr/local/lib and configure with --with-fdftk=/usr/local.
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy fdftk.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32)
Most fdf functions require a fdf resource as their first parameter. A fdf resource is a handle to an opened fdf file. fdf resources may be obtained using fdf_create(), fdf_open() and fdf_open_string().
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The following examples shows just the evaluation of form data.
P°φklad 1. Evaluating a FDF document
|
Adds a script to the FDF, which Acrobat then adds to the doc-level scripts of a document, once the FDF is imported into it. It is strongly suggested to use '\r' for linebreaks within script_code.
P°φklad 1. Adding JavaScript code to a FDF
will create a FDF like this:
|
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The fdf_close() function closes the FDF document.
See also fdf_open().
The fdf_create() creates a new FDF document. This function is needed if one would like to populate input fields in a PDF document with data.
P°φklad 1. Populating a PDF document
|
See also fdf_close(), fdf_save(), fdf_open().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
fdf_errno() returns the error code set by the last fdf_...() function call. This is zero for a successfull operation or a non-zero error code on failure. A textual description may be obtained using the fdf_error() function.
See also fdf_error().
fdf_error() returns a textual description for the fdf error code given in error_code. The function uses the internal error code set by the last operation if no error_code is given, so fdf_error() is a convenient shortcut for fdf_error(fdf_errno()).
See also fdf_errno().
The fdf_get_ap() function gets the appearance of a field (i.e. the value of the /AP key) and stores it in a file. The possible values of face are FDFNormalAP, FDFRolloverAP and FDFDownAP. The appearance is stored in filename.
Extracts a file uploaded by means of the "file selection" field fieldname and stores it under savepath. savepath may be the name of a plain file or an existing directory in which the file is to be created under its original name. Any existing file under the same name will be overwritten.
Poznßmka: There seems to be no other way to find out the original filename but to store the file using a directory as savepath and check for the basename it was stored under.
The returned array contains the following fields:
path - path were the file got stored
size - size of the stored file in bytes
type - mimetype if given in the FDF
The fdf_get_encoding() returns the value of the /Encoding key. An empty string is returned if the default PDFDocEncoding/Unicode scheme is used.
See also fdf_set_encoding().
The fdf_set_file() returns the value of the /F key.
See also fdf_set_file().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The fdf_get_status() returns the value of the /STATUS key.
See also fdf_set_status().
The fdf_get_value() function returns the value for the requested fieldname.
Elements of an array field can be retrieved by passing the optional which, starting at zero. For non-array fields the optional parameter which will be ignored.
Poznßmka: Array support and optional which parameter were added in PHP 4.3.
See also fdf_set_value().
This function will return the fdf version for the given fdf_document, or the toolkit API version number if no parameter is given.
For the current FDF toolkit 5.0 the API version number is '5.0' and the document version number is either '1.2', '1.3' or '1.4'.
See also fdf_set_version().
This is a convenience function to set appropriate HTTP headers for FDF output. It sets the Content-type: to application/vnd.fdf.
The fdf_next_field_name() function returns the name of the field after the field in fieldname or the field name of the first field if the second parameter is NULL.
See also fdf_enum_fields() and fdf_get_value().
The fdf_open_string() function reads form data from a string. fdf_data must contain the data as returned from a PDF form or created using fdf_create() and fdf_save_string().
You can fdf_open_string() together with $HTTP_FDF_DATA to process fdf form input from a remote client.
See also fdf_open(), fdf_close(), fdf_create() and fdf_save_string().
The fdf_open() function opens a file with form data. This file must contain the data as returned from a PDF form or created using fdf_create() and fdf_save().
You can process the results of a PDF form POST request by writing the data received in $HTTP_FDF_DATA to a file and open it using fdf_open(). Starting with PHP 4.3 you can also use fdf_open_string() which handles temporary file creation and cleanup for you.
See also fdf_open_string(), fdf_close(), fdf_create() and fdf_save().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The fdf_save_string() function returns the FDF document as a string.
P°φklad 1. Retrieving FDF as a string
will output something like
|
See also fdf_save(), fdf_open_string(), fdf_create() and fdf_close().
The fdf_save() function saves a FDF document. The resulting FDF will be written to filename. Without a filename fdf_save() will write the FDF to the default PHP output stream.
See also fdf_save_string(), fdf_create() and fdf_close().
The fdf_set_ap() function sets the appearance of a field (i.e. the value of the /AP key). The possible values of face are FDFNormalAP, FDFRolloverAP and FDFDownAP.
fdf_set_encoding() sets the character encoding in FDF document fdf_document. encoding should be the valid encoding name. Currently the following values are supported: "Shift-JIS", "UHC", "GBK","BigFive". An empty string resets the encoding to the default PDFDocEncoding/Unicode scheme.
The fdf_set_file() selects a different PDF document to display the form results in then the form it originated from. The url needs to be given as an absolute URL.
The frame to display the document in may be selected using the optional parameter target_frame or the function fdf_set_target_frame().
P°φklad 1. Passing FDF data to a second form
|
See also fdf_get_file() and fdf_set_target_frame().
The fdf_set_flags() sets certain flags of the given field fieldname.
See also fdf_set_opt().
fdf_set_javascript_action() sets a javascript action for the given field fieldname.
See also fdf_set_submit_form_action().
The fdf_set_opt() sets options of the given field fieldname.
See also fdf_set_flags().
The fdf_set_status() sets the value of the /STATUS key. When a client receives a FDF with a status set it will present the value in an alert box.
See also fdf_get_status().
The fdf_set_submit_form_action() sets a submit form action for the given field fieldname.
See also fdf_set_javascript_action().
Sets the target frame to display a result PDF defined with fdf_save_file() in.
See also fdf_save_file().
The fdf_set_value() function sets the value for a field named fieldname. The value will be stored as a string unless it is an array. In this case all array elements will be stored as a value array.
Poznßmka: In older versions of the fdf toolkit last parameter determined if the field value was to be converted to a PDF Name (isName = 1) or set to a PDF String (isName = 0). The value is no longer used in the current toolkit version 5.0. For compatibility reasons it is still supported as an optional parameter beginning with PHP 4.3, but ignored internally.
Support for value arrays was added in PHP 4.3.
See also fdf_get_value() and fdf_remove_item().
This function will set the fdf version for the given fdf_document. Some features supported by this extension are only available in newer fdf versions. For the current FDF toolkit 5.0 version may be either '1.2', '1.3' or '1.4'.
See also fdf_get_version().
FriBiDi is a free implementation of the Unicode Bidirectional Algorithm.
To enable FriBiDi support in PHP you must compile --with-fribidi[=DIR] where DIR is the FriBiDi install directory.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The functions in this extension implement client access to file servers speaking the File Transfer Protocol (FTP) as defined in http://www.faqs.org/rfcs/rfc959. This extension is meant for detailed access to an FTP server providing a wide range of control to the executing script. If you only wish to read from or write to a file on an FTP server, consider using the ftp:// wrapper with the filesystem functions which provide a simpler and more intuitive interface.
In order to use FTP functions with your PHP configuration, you should add the --enable-ftp option when installing PHP 4 or --with-ftp when using PHP 3.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
This extension uses one resource type, which is the link identifier of the FTP connection, returned by ftp_connect().
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The following constants were introduced in PHP 4.3.0.
See ftp_set_option() for information.
Automatically determine resume position and start position for GET and PUT requests (only works if FTP_AUTOSEEK is enabled)
Asynchronous transfer has failed
Asynchronous transfer has finished
Asynchronous transfer is still active
P°φklad 1. FTP example
|
(no version information, might be only in CVS)
ftp_alloc -- Allocates space for a file to be uploaded.Sends an ALLO command to the remote FTP server to allocate filesize bytes of space. Returns TRUE on success, or FALSE on failure.
Poznßmka: Many FTP servers do not support this command. These servers may return a failure code (FALSE) indicating the command is not supported or a success code (TRUE) to indicate that pre-allocation is not necessary and the client should continue as though the operation were successful. Because of this, it may be best to reserve this function for servers which explicitly require preallocation.
A textual representation of the servers response will be returned by reference in result is a variable is provided.
P°φklad 1. ftp_alloc() example
|
See also: ftp_put(), and ftp_fput().
Changes to the parent directory.
P°φklad 1. ftp_cdup() example
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ftp_chdir().
Changes the current directory to the specified directory.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. ftp_chdir() example
|
See also ftp_cdup().
Sets the permissions on the remote file specified by filename to mode given as an octal value.
P°φklad 1. ftp_chmod() example
|
Returns the new file permissions on success or FALSE on error.
See also chmod().
ftp_close() closes ftp_stream and releases the resource. After calling this function, you can no longer use the FTP connection and must create a new one with ftp_connect().
P°φklad 1. ftp_close() example
|
See also ftp_connect()
Returns a FTP stream on success or FALSE on error.
ftp_connect() opens an FTP connection to the specified host. host shouldn't have any trailing slashes and shouldn't be prefixed with ftp://. The port parameter specifies an alternate port to connect to. If it is omitted or set to zero, then the default FTP port, 21, will be used.
The timeout parameter specifies the timeout for all subsequent network operations. If omitted, the default value is 90 seconds. The timeout can be changed and queried at any time with ftp_set_option() and ftp_get_option().
Poznßmka: The timeout parameter became available in PHP 4.2.0.
See also ftp_close(), and ftp_ssl_connect().
ftp_delete() deletes the file specified by path from the FTP server.
P°φklad 1. ftp_delete() example
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Sends a SITE EXEC command request to the FTP server. Returns TRUE if the command was successful (server sent response code: 200); otherwise returns FALSE.
P°φklad 1. ftp_exec() example
|
See also ftp_raw().
ftp_fget() retrieves remote_file from the FTP server, and writes it to the given file pointer, handle. The transfer mode specified must be either FTP_ASCII or FTP_BINARY.
P°φklad 1. ftp_fget() example
|
Poznßmka: The resumepos parameter was added in PHP 4.3.0.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ftp_get(), ftp_nb_get() and ftp_nb_fget().
ftp_fput() uploads the data from the file pointer handle until the end of the file is reached. The results are stored in remote_file on the FTP server. The transfer mode specified must be either FTP_ASCII or FTP_BINARY.
P°φklad 1. ftp_fput() example
|
Poznßmka: The startpos parameter was added in PHP 4.3.0.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ftp_put(), ftp_nb_fput(), and ftp_nb_put().
Returns the value on success or FALSE if the given option is not supported. In the latter case, a warning message is also thrown.
This function returns the value for the requested option from the specified ftp_stream . Currently, the following options are supported:
Tabulka 1. Supported runtime FTP options
FTP_TIMEOUT_SEC | Returns the current timeout used for network related operations. |
See also ftp_set_option().
ftp_get() retrieves remote_file from the FTP server, and saves it to local_file locally. The transfer mode specified must be either FTP_ASCII or FTP_BINARY.
Poznßmka: The resumepos parameter was added in PHP 4.3.0.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. ftp_get() example
|
See also ftp_fget(), ftp_nb_get() and ftp_nb_fget().
Logs in to the given FTP stream.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. ftp_login() example
|
ftp_mdtm() checks the last modified time for a file, and returns it as a Unix timestamp. If an error occurs, or the file does not exist, -1 is returned.
Returns a Unix timestamp on success, or -1 on error.
P°φklad 1. ftp_mdtm() example
|
Poznßmka: Not all servers support this feature!
Poznßmka: ftp_mdtm() does not work with directories.
Creates the specified directory on the FTP server.
Returns the newly created directory name on success or FALSE on error.
P°φklad 1. ftp_mkdir() example
|
See also ftp_rmdir().
Continues retrieving/sending a file non-blocking.
P°φklad 1. ftp_nb_continue() example
|
Returns FTP_FAILED or FTP_FINISHED or FTP_MOREDATA.
(PHP 4 >= 4.3.0)
ftp_nb_fget -- Retrieves a file from the FTP server and writes it to an open file (non-blocking)ftp_nb_fget() retrieves remote_file from the FTP server, and writes it to the given file pointer, handle. The transfer mode specified must be either FTP_ASCII or FTP_BINARY. The difference between this function and the ftp_fget() is that this function retrieves the file asynchronously, so your program can perform other operations while the file is being downloaded.
P°φklad 1. ftp_nb_fget() example
|
Returns FTP_FAILED, FTP_FINISHED, or FTP_MOREDATA.
See also ftp_nb_get(), ftp_nb_continue(), ftp_fget(), and ftp_get().
ftp_nb_fput() uploads the data from the file pointer handle until it reaches the end of the file. The results are stored in remote_file on the FTP server. The transfer mode specified must be either FTP_ASCII or FTP_BINARY. The difference between this function and the ftp_fput() is that this function uploads the file asynchronously, so your program can perform other operations while the file is being uploaded.
P°φklad 1. ftp_nb_fput() example
|
Returns FTP_FAILED, FTP_FINISHED, or FTP_MOREDATA.
See also ftp_nb_put(), ftp_nb_continue(), ftp_put() and ftp_fput().
(PHP 4 >= 4.3.0)
ftp_nb_get -- Retrieves a file from the FTP server and writes it to a local file (non-blocking)ftp_nb_get() retrieves remote_file from the FTP server, and saves it to local_file locally. The transfer mode specified must be either FTP_ASCII or FTP_BINARY. The difference between this function and the ftp_get() is that this function retrieves the file asynchronously, so your program can perform other operations while the file is being downloaded.
Returns FTP_FAILED, FTP_FINISHED, or FTP_MOREDATA.
P°φklad 1. ftp_nb_get() example
|
P°φklad 2. Resuming a download with ftp_nb_get()
|
P°φklad 3. Resuming a download at position 100 to a new file with ftp_nb_get()
|
In the example above, "newfile" is 100 bytes smaller than "README" on the FTP server because we started reading at offset 100. If we have not have disabled FTP_AUTOSEEK, the first 100 bytes of "newfile" will be '\0'.
See also ftp_nb_fget(), ftp_nb_continue(), ftp_get(), and ftp_fget().
ftp_nb_put() stores local_file on the FTP server, as remote_file. The transfer mode specified must be either FTP_ASCII or FTP_BINARY. The difference between this function and the ftp_put() is that this function uploads the file asynchronously, so your program can perform other operations while the file is being uploaded.
Returns FTP_FAILED, FTP_FINISHED, or FTP_MOREDATA.
P°φklad 1. ftp_nb_put() example
|
P°φklad 2. Resuming an upload with ftp_nb_put()
|
See also ftp_nb_fput(), ftp_nb_continue(), ftp_put(), and ftp_fput().
Returns an array of filenames from the specified directory on success or FALSE on error.
P°φklad 1. ftp_nlist() example
á á The above example will output something similar to:
|
See also ftp_rawlist().
ftp_pasv() turns on passive mode if the pasv parameter is TRUE. It turns off passive mode if pasv is FALSE. In passive mode, data connections are initiated by the client, rather than by the server.
P°φklad 1. ftp_pasv() example
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ftp_put() stores local_file on the FTP server, as remote_file. The transfer mode specified must be either FTP_ASCII or FTP_BINARY.
Poznßmka: The startpos parameter was added in PHP 4.3.0.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. ftp_put() example
|
See also ftp_fput(), ftp_nb_fput(), and ftp_nb_put().
Returns the current directory or FALSE on error.
P°φklad 1. ftp_pwd() example
|
Sends an arbitrary command to the FTP server. Returns the server's response as an array of strings. No parsing is performed on the response string, nor does ftp_raw() determine if the command succeeded.
See Also: ftp_exec()
ftp_rawlist() executes the FTP LIST command, and returns the result as an array. Each array element corresponds to one line of text. The output is not parsed in any way. The system type identifier returned by ftp_systype() can be used to determine how the results should be interpreted.
P°φklad 1. ftp_rawlist() example
á á The above example will output something similar to: á á
|
See also ftp_nlist().
ftp_rename() renames the file or directory that is currently named from to the new name to, using the FTP stream ftp_stream.
P°φklad 1. ftp_rename() example
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Removes the specified directory. directory must be either an absolute or relative path to an empty directory.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. ftp_rmdir() example
|
See also ftp_mkdir().
Returns TRUE if the option could be set; FALSE if not. A warning message will be thrown if the option is not supported or the passed value doesn't match the expected value for the given option.
This function controls various runtime options for the specified FTP stream. The value parameter depends on which option parameter is chosen to be altered. Currently, the following options are supported:
Tabulka 1. Supported runtime FTP options
FTP_TIMEOUT_SEC | Changes the timeout in seconds used for all network related functions. value must be an integer that is greater than 0. The default timeout is 90 seconds. |
FTP_AUTOSEEK | When enabled, GET or PUT requests with a resumepos or startpos parameter will first seek to the requested position within the file. This is enabled by default. |
See also ftp_get_option().
ftp_site() sends the command specified by cmd to the FTP server. SITE commands are not standardized, and vary from server to server. They are useful for handling such things as file permissions and group membership.
P°φklad 1. Sending a SITE command to an ftp server
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See Also: ftp_raw()
ftp_size() returns the size of a remote_file in bytes. If an error occurs, or if the given file does not exist, or is a directory, -1 is returned. Not all servers support this feature.
Returns the file size on success, or -1 on error.
P°φklad 1. ftp_size() example
|
See also ftp_rawlist().
Returns a SSL-FTP stream on success or FALSE on error.
ftp_ssl_connect() opens a SSL-FTP connection to the specified host. The port parameter specifies an alternate port to connect to. If it's omitted or set to zero then the default FTP port 21 will be used.
The timeout parameter specifies the timeout for all subsequent network operations. If omitted, the default value is 90 seconds. The timeout can be changed and queried at any time with ftp_set_option() and ftp_get_option().
Why this function may not exist: ftp_ssl_connect() is only available if OpenSSL support is enabled into your version of PHP. If it's undefined and you've compiled FTP support then this is why.
See also ftp_connect().
Returns the remote system type, or FALSE on error.
P°φklad 1. ftp_systype() example
The above example will output something similar to:
|
Call a user defined function given by function, with the parameters in param_arr. For example:
<?php function debug($var, $val) { echo "***DEBUGGING\nVARIABLE: $var\nVALUE:"; if (is_array($val) || is_object($val) || is_resource($val)) { print_r($val); } else { echo "\n$val\n"; } echo "***\n"; } $c = mysql_connect(); $host = $_SERVER["SERVER_NAME"]; call_user_func_array('debug', array("host", $host)); call_user_func_array('debug', array("c", $c)); call_user_func_array('debug', array("_POST", $_POST)); ?> |
See also: call_user_func().
Zavolß u╛ivatelsky definouvanou funkci urΦenou argumentem function_name. Zva╛te nßsledujφcφ ukßzku:
Z p°edan²ch argument∙ vytvo°φ anonymnφ funkci, a vrßtφ unikßtnφ nßzev tΘto funkce. args se obvykle p°edßvß jako string v jednoduch²ch uvozovkßch, a doporuΦujeme to i pro code. D∙vodem pro jednoduchΘ uvozovky je ochrana nßzv∙ prom∞nn²ch p°ed parsovßnφm, pokud pou╛ijete dvojitΘ uvozovky, budete muset oescapovat nßzvy prom∞nn²ch, nap°. \$avar.
Tuto funkci m∙╛ete (nap°φklad) pou╛φt k vytvo°enφ funkce z dat shromß╛d∞n²ch za b∞hu programu:
P°φklad 1. Vytvo°enφ anonymnφ funkce pomocφ create_function()
|
P°φklad 2. Vytvo°enφ obecnΘ zpracujφcφ funkce pomocφ create_function()
|
Using the first array of anonymous functions parameters: 2.3445, M_PI some trig: -1.6291725057799 a hypotenuse: 3.9199852871011 b*a^2 = 4.8103313314525 min(b^2+a, a^2,b) = 8.6382729035898 ln(a/b) = 0.27122299212594 Using the second array of anonymous functions ** "Twas the night" and "Twas brilling and the slithy toves" ** Look the same to me! (looking at the first 3 chars) CRCs: -725381282 , 1908338681 similar(a,b) = 11(45.833333333333%) |
P°φklad 3. Vyu╛itφ anonymnφch funkcφ jako callback funkcφ
|
Vracφ argument, kter² je na arg_num-tΘ pozici v seznamu argument∙ u╛iavtelsky definovanΘ funkce. Argumenty funkcφ se poΦφtajφ od nuly. func_get_arg() p°i volßnφ mimo definici funkce generuje varovßnφ.
Pokud je arg_num v∞t╣φ ne╛ poΦet skuteΦn∞ p°edan²ch argument∙, vygeneruje varovßnφ a vrßtφ FALSE.
<?php function foo() { $numargs = func_num_args(); echo "Number of arguments: $numargs<br>\n"; if ($numargs >= 2) { echo "Second argument is: " . func_get_arg (1) . "<br>\n"; } } foo (1, 2, 3); ?> |
func_get_arg() se dß pou╛φt ve spojenφ s func_num_args() a func_get_args() k tvorb∞ u╛ivatelsky definovan²ch funkcφ, kterΘ p°ijφmajφ prom∞nn² poΦet argument∙.
Poznßmka: Tato funkce byla p°idßna v PHP 4.
Vracφ pole, jeho╛ ka╛d² prvek je odpovφdajφcφ polo╛kou seznamu argument∙ souΦasnΘ u╛ivatelsky definovanΘ funkce. func_get_args() p°i volßnφ mimo definici funkce generuje varovßnφ.
<?php function foo() { $numargs = func_num_args(); echo "Number of arguments: $numargs<br>\n"; if ($numargs >= 2) { echo "Second argument is: " . func_get_arg (1) . "<br>\n"; } $arg_list = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo "Argument $i is: " . $arg_list[$i] . "<br>\n"; } } foo (1, 2, 3); ?> |
func_get_args() se dß pou╛φt ve spojenφ s func_num_args() a func_get_arg() k tvorb∞ u╛ivatelsky definovan²ch funkcφ, kterΘ p°ijφmajφ prom∞nny poΦet argument∙.
Poznßmka: Tato funkce byla p°idßna v PHP 4.
Vracφ poΦet argument∙ p°edan²ch souΦasnΘ u╛ivatelsky definovanΘ funkci. func_num_args() pri volßnφ mimo definici funkce generuje warning. definition.
<?php function foo() { $numargs = func_num_args(); echo "Number of arguments: $numargs\n"; } foo (1, 2, 3); // Prints 'Number of arguments: 3' ?> |
func_num_args() se dß pou╛it ve spojenφ s func_get_arg() a func_get_args() k tvorb∞ u╛ivatelsky definovan²ch funkcφ, kterΘ p°ijφmajφ prom∞nn² poΦet argument∙.
Poznßmka: Tato funkce byla p°idßna v PHP 4.
Ov∞°φ p°φtomnost funkce function_name v seznamu definovan²ch funkcφ. Pokud danß funkce existuje, vracφ TRUE, jinak FALSE.
if (function_exists('imap_open')) { echo "IMAP functions are available.<br>\n"; } else { echo "IMAP functions are not available.<br>\n"; } |
Viz takΘ method_exists().
This function returns an multidimensional array containing a list of all defined functions, both built-in (internal) and user-defined. The internal functions will be accessible via $arr["internal"], and the user defined ones using $arr["user"] (see example below).
<?php function myrow($id, $data) { return "<tr><th>$id</th><td>$data</td></tr>\n"; } $arr = get_defined_functions(); print_r($arr); ?> |
Will output something along the lines of:
Array ( [internal] => Array ( [0] => zend_version [1] => func_num_args [2] => func_get_arg [3] => func_get_args [4] => strlen [5] => strcmp [6] => strncmp ... [750] => bcscale [751] => bccomp ) [user] => Array ( [0] => myrow ) ) |
See also get_defined_vars() and get_defined_constants().
(PHP 3>= 3.0.4, PHP 4 )
register_shutdown_function -- Zaregistrovat funkci pro provedenφ p°i ukonΦenφ b∞huZaregistruje funkci udanou v func pro provedenφ po dokonΦenφ b∞hu skriptu.
B∞╛nΘ problΘmy:
Jeliko╛ tato funkce nem∙╛e poslat browseru ╛ßdn² v²stup, nebudete ji moci debugovat pomocφ p°φkaz∙ jako print() nebo echo().
Registers the function named by func to be executed when a tick is called. Also, you may pass an array consisting of an object and a method as the func.
See also declare() and unregister_tick_function().
De-registers the function named by function_name so it is no longer executed when a tick is called.
Gettext funkce implementujφ NLS (Native Language Support) API, kterΘ se dß pou╛φt k internacionalizaci va╣ich PHP aplikacφ. D∙kladnΘ vysv∞tlenφ t∞chto funkcφ viz dokumentaci Gettext na va╣em systΘmu nebo na http://www.gnu.org/software/gettext/manual/index.html.
Aby se daly tyto funkce pou╛φt, musφte stßhnout a nainstalovat GNU gettext z http://www.gnu.org/software/gettext/gettext.html.
Pro podporu GNU Gettext v PHP musφte p°idat volbu --with-gettext[=DIR], kde DIR je instalaΦnφ adresß° Gettext, ve v²chozφm nastavenφ to je /usr/local.
Poznßmka pro u╛ivatele Win32: Abyste mohli tento modul pou╛φvat pod Windows, musφte zkopφrovat soubor gnu_gettext.dll z adresß°e DLL disribuΦnφho archivu PHP/Win32 do adresß°e SYSTEM32 va╣ich Windows. (Nap°.: C:\WINNT\SYSTEM32 nebo C:\WINDOWS\SYSTEM32). PoΦφnaje PHP 4.2.3 se jmΘno souboru zm∞nilo na libintl-1.dll, kter² vy╛aduje, aby byl zkopφrovßn i soubor iconv.dll.
(PHP 4 >= 4.2.0)
bind_textdomain_codeset -- Specify the character encoding in which the messages from the DOMAIN message catalog will be returned
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Funkce bindtextdomain() nastavφ cestu pro domΘnu.
Tato funkce vßm umo╛nφ zmenit souΦasnou domΘnu pro jedinΘ vyhledßnφ zprßvy. Umo╛≥uje takΘ specifikovat kategorii.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Funkce dgettext() umo╛≥uje zm∞nit souΦasnou domΘnu pro jedinΘ vyhledßnφ zprßvy.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tato funkce vrßtφ p°elo╛en² °et∞zec, pokud jej najde v p°ekladovΘ tabulce, nebo p°edan² °et∞zec, pokud jej nenajde. Jako alias k tΘto funkci m∙╛ete pou╛φt podtr╛φtko.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tato funkce nastavφ domΘnu pro vyhledßvßnφ p°i volßnφ funkce gettext(), obvykle pojmenovanou podle aplikace. Vrßtφ p°edchozφ v²chozφ domΘnu. P°i volßnφ bez argument∙ vrßtφ souΦasnΘ nastavenφ, ani╛ by jej m∞nila.
These functions allow you to work with arbitrary-length integers using the GNU MP library.
These functions have been added in PHP 4.0.4.
Poznßmka: Most GMP functions accept GMP number arguments, defined as resource below. However, most of these functions will also accept numeric and string arguments, given that it is possible to convert the latter to a number. Also, if there is a faster function that can operate on integer arguments, it would be used instead of the slower function when the supplied arguments are integers. This is done transparently, so the bottom line is that you can use integers in every function that expects GMP number. See also the gmp_init() function.
Varovßnφ |
If you want to explicitly specify a large integer, specify it as a string. If you don't do that, PHP will interpret the integer-literal first, possibly resulting in loss of precision, even before GMP comes into play. |
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
You can download the GMP library from http://www.swox.com/gmp/. This site also has the GMP manual available.
You will need GMP version 2 or better to use these functions. Some functions may require more recent version of the GMP library.
In order to have these functions available, you must compile PHP with GMP support by using the --with-gmp option.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
More mathematical functions can be found in the sections BCMath Arbitrary Precision Mathematics Functions and Mathematical Functions.
Add two GMP numbers. The result will be a GMP number representing the sum of the arguments.
Returns a positive value if a > b, zero if a = b and negative value if a < b.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Divides a by b and returns the integer result. The result rounding is defined by the round, which can have the following values:
GMP_ROUND_ZERO: The result is truncated towards 0.
GMP_ROUND_PLUSINF: The result is rounded towards +infinity.
GMP_ROUND_MINUSINF: The result is rounded towards -infinity.
This function can also be called as gmp_div().
See also gmp_div_r(), gmp_div_qr()
The function divides n by d and returns array, with the first element being [n/d] (the integer result of the division) and the second being (n - [n/d] * d) (the remainder of the division).
See the gmp_div_q() function for description of the round argument.
See also gmp_div_q(), gmp_div_r().
Calculates remainder of the integer division of n by d. The remainder has the sign of the n argument, if not zero.
See the gmp_div_q() function for description of the round argument.
See also gmp_div_q(), gmp_div_qr()
Divides n by d, using fast "exact division" algorithm. This function produces correct results only when it is known in advance that d divides n.
Calculate greatest common divisor of a and b. The result is always positive even if either of, or both, input operands are negative.
Calculates g, s, and t, such that a*s + b*t = g = gcd(a,b), where gcd is the greatest common divisor. Returns an array with respective elements g, s and t.
This function can be used to solve linear Diophantine equations in two variables. These are equations that allow only integer solutions and have the form: a*x + b*y = c. For more information, go to the "Diophantine Equation" page at MathWorld
P°φklad 1. Solving a linear Diophantine equation
|
Returns the hamming distance between a and b. Both operands should be non-negative.
Creates a GMP number from an integer or string. String representation can be decimal or hexadecimal. In the latter case, the string should start with 0x.
Poznßmka: It is not necessary to call this function if you want to use integer or string in place of GMP number in GMP functions, like gmp_add(). Function arguments are automatically converted to GMP numbers, if such conversion is possible and needed, using the same rules as gmp_init().
This function allows to convert GMP number to integer.
Varovßnφ |
This function returns a useful result only if the number actually fits the PHP integer (i.e., signed long type). If you want just to print the GMP number, use gmp_strval(). |
Computes the inverse of a modulo b. Returns FALSE if an inverse does not exist.
Computes Jacobi symbol of a and p. p should be odd and must be positive.
Compute the Legendre symbol of a and p. p should be odd and must be positive.
Calculates n modulo d. The result is always non-negative, the sign of d is ignored.
Calculates logical inclusive OR of two GMP numbers.
Returns TRUE if a is a perfect square, FALSE otherwise.
See also: gmp_sqrt(), gmp_sqrtrm().
Raise base into power exp. The case of 0^0 yields 1. exp cannot be negative.
Calculate (base raised into power exp) modulo mod. If exp is negative, result is undefined.
If this function returns 0, a is definitely not prime. If it returns 1, then a is "probably" prime. If it returns 2, then a is surely prime. Reasonable values of reps vary from 5 to 10 (default being 10); a higher value lowers the probability for a non-prime to pass as a "probable" prime.
The function uses Miller-Rabin's probabilistic test.
Generate a random number. The number will be between limiter and zero in value. If limiter is negative, negative numbers are generated.
Scans a, starting with bit start, towards more significant bits, until the first clear bit is found. Returns the index of the found bit.
Scans a, starting with bit start, towards more significant bits, until the first set bit is found. Returns the index of the found bit.
Sets bit index in a. set_clear defines if the bit is set to 0 or 1. By default the bit is set to 1.
Return sign of a - 1 if a is positive and -1 if it's negative.
Returns array where first element is the integer square root of a (see also gmp_sqrt()), and the second is the remainder (i.e., the difference between a and the first element squared).
Convert GMP number to string representation in base base. The default base is 10. Allowed values for the base are from 2 to 36.
Funkce header() se pou╛φvß na zaΦßtku HTML souboru k odeslßnφ HTTP hlaviΦek. Vφce informacφ o HTTP hlaviΦkßch viz Specifikace HTTP 1.1. Poznßmka: Pamatujte, ╛e funkce header() musφ b²t volßna d°φve ne╛ se ode╣le jak²koliv normßlnφ v²stup, a╗ u╛ normßlnφmi HTML tagy, nebo z PHP. Velmi obvyklou chybou je naΦφtat k≤d pomocφ include() nebo auto_prepend a mφt v tomto k≤du prßzdnΘ °ßdky, kterΘ zp∙sobφ odeslßnφ v²stupu p°ed volßnφm funkce header().
Existujφ dva zvlß╣tnφ p°φpady volßnφ funkce header(). Prvnφm je hlaviΦka "Location". Ta nejen╛e ode╣le hlaviΦku browseru, ale navφc i vrßtφ Apachi stavov² k≤d REDIRECT. Z pohledu autora skriptu by to nem∞lo b²t d∙le╛itΘ, ale je to d∙le╛itΘ pro lidi, kte°φ rozumφ vnit°nostem Apache.
header ("Location: http://www.php.net"); /* P°esm∞rujeme browser na web site PHP */ exit; /* Pojistφme si, ╛e se dal╣φ k≤d nevykonß po p°esm∞rovßnφ. */ |
Druh²m zvlß╣tnφm p°φpadem jsou v╣echny hlaviΦky zaΦφnajφcφ °et∞zcem "HTTP/" (velikost pφsmen nehraje roli). Nap°φklad, pokud direktiva ErrorDocument 404 va╣eho Apache ukazuje na PHP skript, nebylo by od v∞ci, kdyby skuteΦn∞ generoval 404. Prvnφ v∞cφ, kterou byste v tomto skriptu m∞li ud∞lat tudφz bude:
PHP skripty Φasto generujφ dynamickΘ HTML, kterΘ nesmφ b²t cachovßno u╛ivatelsk²m browserem, ani ╛²dn²mi proxynami mezi serverem a u╛ivatelsk²m browserem. Mnoho proxyn a klient∙ se dß donutit k vypnutφ cachovßnφ s pomocφ
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // datum v minulosti header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // v╛dy upraven header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 |
Viz takΘ headers_sent()
(no version information, might be only in CVS)
headers_list -- Returns a list of response headers sent (or ready to send)headers_list() will return a numerically indexed array of headers to be sent to the browser / client. To determine whether or not these headers have been sent yet, use headers_sent().
P°φklad 1. Examples using headers_list()
this will output :
|
See Also: headers_sent(), header(), and setcookie().
Tato funkce vrßtφ TRUE, pokud u╛ byly HTTP hlaviΦky odeslßny, jinak FALSE.
Viz takΘ header()
setcookie() definuje cookie, kter² se po╣le spolu s hlaviΦkami. Cookies se musφ odeslat jako prvnφ ze v╣ech HTTP hlaviΦek (to je omezenφ cookies, ne PHP). Volßnφ tΘto funkce musφte tudφ╛ umφstit p°ed <html> Φi <head> tagy.
V╣echny argumenty krom∞ argumentu name jsou nepovinnΘ. Pokud je p°φtomn² pouze argument name, u klienta se sma╛e cookie tohoto jmΘna. Kter²koliv argument m∙╛ete takΘ nahradit prßzdn²m °et∞zcem (""), Φφm╛ tento argument p°eskoΦφte. Argumenty expire a secure jsou celoΦφselnΘ a nedajφ se p°eskoΦit prßzdn²m °et∞zcem. Mφsto toho pou╛ijte nulu (0). Argument expire je b∞╛nΘ UnixovΘ celoΦφselnΘ vyjßd°enφ Φasu, jak je vracφ funkce time() Φi mktime(). Argument secure indikuje, ╛e by se tento cookie m∞l p°enß╣et pouze po zabezpeΦenΘm HTTPS spojenφ.
B∞╛nΘ zßdrhele:
Cookies jsou p°φstupnΘ a╛ p°i dal╣φm naΦtenφ strßnky, na kterΘ p°φstupnΘ b²t majφ.
Cookies se musφ mazat se stejn²mi parametry, se kter²mi byly odeslßny.
V PHP 3 se vφcenßsobnß volßnφ setcookie() v jednom skriptu provedou v opaΦnΘm po°adφ. Pokud se pokou╣φte smazat jeden cookie p°e odeslßnφm jinΘho, m∞li byste umφstit vlo╛enφ p°ed smazßnφ. V PHP 4 se vφcenßsobnß volßnφ setcookie() provedou v tom po°adφ, jak jsou volßna.
N∞kolik p°φklad∙, jak posφlat cookies:
Nßsledujφ p°φklady mazßnφ cookies z p°edchozφ ukßzky:
V╣imn∞te si, ╛e hodnotovß Φßst cookie se p°i odeslßnφ cookie automaticky url-zak≤duje, a p°i p°ijetφ se automaticky dek≤duje a p°i°adφ prom∞nnΘ stejnΘho jmΘna, jako je jmΘno cookie. Pokud chcete vid∞t obsah na╣eho zku╣ebnφho cookie, pou╛ijte n∞kter² z nßsledujφcφch p°φklad∙:
Cookies obsahujφcφ pole m∙╛ete takΘ odeslat tak, ╛e za nßzev cookie napφ╣ete hranatΘ zßvorky. ┌Φinkem tohoto je odeslßnφ tolika cookies, kolik mß va╣e pole prvk∙, ale kdy╛ vß╣ skript tyto cookies p°ijme, hodnoty se umφstφ v poli stejnΘho jmΘna, jako jsou va╣e cookies:
setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset ($cookie)) { while (list ($name, $value) = each ($cookie)) { echo "$name == $value<br>\n"; } } |
Vφce informacφ o cookies viz specifikace cookies na http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 se Service Packem 1 zpracovßvß chybn∞ cookies, kterΘ majφ nastaven² argument path.
Netscape Communicator 4.05 a Microsoft Internet Explorer 3.x z°ejm∞ nezpracujφ cookies sprßvn∞, pokud nejsou nastaveny argumenty path a time.
Hyperwave has been developed at IICM in Graz. It started with the name Hyper-G and changed to Hyperwave when it was commercialised (in 1996).
Hyperwave is not free software. The current version, 5.5 is available at http://www.hyperwave.com/. A time limited version can be ordered for free (30 days).
See also the Hyperwave API module.
Hyperwave is an information system similar to a database (HIS, Hyperwave Information Server). Its focus is the storage and management of documents. A document can be any possible piece of data that may as well be stored in file. Each document is accompanied by its object record. The object record contains meta data for the document. The meta data is a list of attributes which can be extended by the user. Certain attributes are always set by the Hyperwave server, other may be modified by the user. An attribute is a name/value pair of the form name=value. The complete object record contains as many of those pairs as the user likes. The name of an attribute does not have to be unique, e.g. a title may appear several times within an object record. This makes sense if you want to specify a title in several languages. In such a case there is a convention, that each title value is preceded by the two letter language abbreviation followed by a colon, e.g. 'en:Title in English' or 'ge:Titel in deutsch'. Other attributes like a description or keywords are potential candidates. You may also replace the language abbreviation by any other string as long as it separated by colon from the rest of the attribute value.
Each object record has native a string representation with each name/value pair separated by a newline. The Hyperwave extension also knows a second representation which is an associated array with the attribute name being the key. Multilingual attribute values itself form another associated array with the key being the language abbreviation. Actually any multiple attribute forms an associated array with the string left to the colon in the attribute value being the key. (This is not fully implemented. Only the attributes Title, Description and Keyword are treated properly yet.)
Besides the documents, all hyper links contained in a document are stored as object records as well. Hyper links which are in a document will be removed from it and stored as individual objects, when the document is inserted into the database. The object record of the link contains information about where it starts and where it ends. In order to gain the original document you will have to retrieve the plain document without the links and the list of links and reinsert them. The functions hw_pipedocument() and hw_gettext() do this for you. The advantage of separating links from the document is obvious. Once a document to which a link is pointing to changes its name, the link can easily be modified accordingly. The document containing the link is not affected at all. You may even add a link to a document without modifying the document itself.
Saying that hw_pipedocument() and hw_gettext() do the link insertion automatically is not as simple as it sounds. Inserting links implies a certain hierarchy of the documents. On a web server this is given by the file system, but Hyperwave has its own hierarchy and names do not reflect the position of an object in that hierarchy. Therefore creation of links first of all requires a mapping from the Hyperwave hierarchy and namespace into a web hierarchy respective web namespace. The fundamental difference between Hyperwave and the web is the clear distinction between names and hierarchy in Hyperwave. The name does not contain any information about the objects position in the hierarchy. In the web the name also contains the information on where the object is located in the hierarchy. This leads to two possibles ways of mapping. Either the Hyperwave hierarchy and name of the Hyperwave object is reflected in the URL or the name only. To make things simple the second approach is used. Hyperwave object with name my_object is mapped to http://host/my_object disregarding where it resides in the Hyperwave hierarchy. An object with name parent/my_object could be the child of my_object in the Hyperwave hierarchy, though in a web namespace it appears to be just the opposite and the user might get confused. This can only be prevented by selecting reasonable object names.
Having made this decision a second problem arises. How do you involve PHP? The URL http://host/my_object will not call any PHP script unless you tell your web server to rewrite it to e.g. http://host/php_script/my_object and the script php_script evaluates the $PATH_INFO variable and retrieves the object with name my_object from the Hyperwave server. Their is just one little drawback which can be fixed easily. Rewriting any URL would not allow any access to other document on the web server. A PHP script for searching in the Hyperwave server would be impossible. Therefore you will need at least a second rewriting rule to exclude certain URLs like all e.g. starting with http://host/Hyperwave This is basically sharing of a namespace by the web and Hyperwave server.
Based on the above mechanism links are insert into documents.
It gets more complicated if PHP is not run as a server module or CGI script but as a standalone application e.g. to dump the content of the Hyperwave server on a CD-ROM. In such a case it makes sense to retain the Hyperwave hierarchy and map in onto the file system. This conflicts with the object names if they reflect its own hierarchy (e.g. by choosing names including '/'). Therefore '/' has to be replaced by another character, e.g. '_'.
The network protocol to communicate with the Hyperwave server is called HG-CSP (Hyper-G Client/Server Protocol). It is based on messages to initiate certain actions, e.g. get object record. In early versions of the Hyperwave Server two native clients (Harmony, Amadeus) were provided for communication with the server. Those two disappeared when Hyperwave was commercialised. As a replacement a so called wavemaster was provided. The wavemaster is like a protocol converter from HTTP to HG-CSP. The idea is to do all the administration of the database and visualisation of documents by a web interface. The wavemaster implements a set of placeholders for certain actions to customise the interface. This set of placeholders is called the PLACE Language. PLACE lacks a lot of features of a real programming language and any extension to it only enlarges the list of placeholders. This has led to the use of JavaScript which IMO does not make life easier.
Adding Hyperwave support to PHP should fill in the gap of a missing programming language for interface customisation. It implements all the messages as defined by the HG-CSP but also provides more powerful commands to e.g. retrieve complete documents.
Hyperwave has its own terminology to name certain pieces of information. This has widely been taken over and extended. Almost all functions operate on one of the following data types.
object ID: An unique integer value for each object in the Hyperwave server. It is also one of the attributes of the object record (ObjectID). Object ids are often used as an input parameter to specify an object.
object record: A string with attribute-value pairs of the form attribute=value. The pairs are separated by a carriage return from each other. An object record can easily be converted into an object array with hw_object2array(). Several functions return object records. The names of those functions end with obj.
object array: An associative array with all attributes of an object. The keys are the attribute names. If an attribute occurs more than once in an object record it will result in another indexed or associative array. Attributes which are language depended (like the title, keyword, description) will form an associative array with the keys set to the language abbreviations. All other multiple attributes will form an indexed array. PHP functions never return object arrays.
hw_document: This is a complete new data type which holds the actual document, e.g. HTML, PDF etc. It is somewhat optimized for HTML documents but may be used for any format.
Several functions which return an array of object records do also return an associative array with statistical information about them. The array is the last element of the object record array. The statistical array contains the following entries:
Number of object records with attribute PresentationHints set to Hidden.
Number of object records with attribute PresentationHints set to CollectionHead.
Number of object records with attribute PresentationHints set to FullCollectionHead.
Index in array of object records with attribute PresentationHints set to CollectionHead.
Index in array of object records with attribute PresentationHints set to FullCollectionHead.
Total: Number of object records.
The Hyperwave extension is best used when PHP is compiled as an Apache module. In such a case the underlying Hyperwave server can be hidden from users almost completely if Apache uses its rewriting engine. The following instructions will explain this.
Since PHP with Hyperwave support built into Apache is intended to replace the native Hyperwave solution based on Wavemaster, we will assume that the Apache server will only serve as a Hyperwave web interface for these examples. This is not necessary but it simplifies the configuration. The concept is quite simple. First of all you need a PHP script which evaluates the $_ENV['PATH_INFO'] variable and treats its value as the name of a Hyperwave object. Let's call this script 'Hyperwave'. The URL http://your.hostname/Hyperwave/name_of_object would than return the Hyperwave object with the name 'name_of_object'. Depending on the type of the object the script has to react accordingly. If it is a collection, it will probably return a list of children. If it is a document it will return the mime type and the content. A slight improvement can be achieved if the Apache rewriting engine is used. From the users point of view it would be more straight forward if the URL http://your.hostname/name_of_object would return the object. The rewriting rule is quite easy:
Now every URL relates to an object in the Hyperwave server. This causes a simple to solve problem. There is no way to execute a different script, e.g. for searching, than the 'Hyperwave' script. This can be fixed with another rewriting rule like the following: This will reserve the directory /usr/local/apache/htdocs/hw for additional scripts and other files. Just make sure this rule is evaluated before the one above. There is just a little drawback: all Hyperwave objects whose name starts with 'hw/' will be shadowed. So, make sure you don't use such names. If you need more directories, e.g. for images just add more rules or place them all in one directory. Before you put those instructions, don't forget to turn on the rewriting engine with You will need scripts:to return the object itself
to allow searching
to identify yourself
to set your profile
one for each additional function like to show the object attributes, to show information about users, to show the status of the server, etc.
As an alternative to the Rewrite Engine, you can also consider using the Apache ErrorDocument directive, but be aware, that ErrorDocument redirected pages cannot receive POST data.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Hyperwave configuration options
Name | Default | Changeable |
---|---|---|
hyperwave.allow_persistent | "0" | PHP_INI_SYSTEM |
hyperwave.default_port | "418" | PHP_INI_ALL |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
There are still some things to do:
The hw_InsertDocument has to be split into hw_insertobject() and hw_putdocument().
The names of several functions are not fixed, yet.
Most functions require the current connection as its first parameter. This leads to a lot of typing, which is quite often not necessary if there is just one open connection. A default connection will improve this.
Conversion form object record into object array needs to handle any multiple attribute.
Converts an object_array into an object record. Multiple attributes like 'Title' in different languages are treated properly.
See also hw_objrec2array().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns an array of object ids. Each id belongs to a child of the collection with ID objectID. The array contains all children both documents and collections.
Returns an array of object records. Each object record belongs to a child of the collection with ID objectID. The array contains all children both documents and collections.
Returns FALSE if connection is not a valid connection index, otherwise TRUE. Closes down the connection to a Hyperwave server with the given connection index.
Opens a connection to a Hyperwave server and returns a connection index on success, or FALSE if the connection could not be made. Each of the arguments should be a quoted string, except for the port number. The username and password arguments are optional and can be left out. In such a case no identification with the server will be done. It is similar to identify as user anonymous. This function returns a connection index that is needed by other Hyperwave functions. You can have multiple connections open at once. Keep in mind, that the password is not encrypted.
See also hw_pconnect().
(PHP 3>= 3.0.3, PHP 4 )
hw_connection_info -- Prints information about the connection to Hyperwave server
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Copies the objects with object ids as specified in the second parameter to the collection with the id destination id.
The value return is the number of copied objects.
See also hw_mv().
Deletes the object with the given object id in the second parameter. It will delete all instances of the object.
Returns TRUE if no error occurs otherwise FALSE.
See also hw_mv().
Returns an th object id of the document to which anchorID belongs.
Returns an th object record of the document to which anchorID belongs.
Returns the object record of the document.
For backward compatibility, hw_documentattributes() is also accepted. This is deprecated, however.
See also hw_document_bodytag(), and hw_document_size().
Returns the BODY tag of the document. If the document is an HTML document the BODY tag should be printed before the document.
See also hw_document_attributes(), and hw_document_size().
For backward compatibility, hw_documentbodytag() is also accepted. This is deprecated, however.
Returns the content of the document. If the document is an HTML document the content is everything after the BODY tag. Information from the HEAD and BODY tag is in the stored in the object record.
See also hw_document_attributes(), hw_document_size(), and hw_document_setcontent().
Sets or replaces the content of the document. If the document is an HTML document the content is everything after the BODY tag. Information from the HEAD and BODY tag is in the stored in the object record. If you provide this information in the content of the document too, the Hyperwave server will change the object record accordingly when the document is inserted. Probably not a very good idea. If this functions fails the document will retain its old content.
See also hw_document_attributes(), hw_document_size(), and hw_document_content().
Returns the size in bytes of the document.
See also hw_document_bodytag(), and hw_document_attributes().
For backward compatibility, hw_documentsize() is also accepted. This is deprecated, however.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Uploads the text document to the server. The object record of the document may not be modified while the document is edited. This function will only works for pure text documents. It will not open a special data connection and therefore blocks the control connection during the transfer.
See also hw_pipedocument(), hw_free_document(), hw_document_bodytag(), hw_document_size(), hw_output_document(), and hw_gettext().
Returns the last error number. If the return value is 0 no error has occurred. The error relates to the last command.
Returns a string containing the last error message or 'No Error'. If FALSE is returned, this function failed. The message relates to the last command.
Frees the memory occupied by the Hyperwave document.
Returns an array of object ids with anchors of the document with object ID objectID.
Returns an array of object records with anchors of the document with object ID objectID.
Returns the object record for the object with ID objectID. It will also lock the object, so other users cannot access it until it is unlocked.
See also hw_unlock(), and hw_getobject().
Returns an array of object ids. Each object ID belongs to a child collection of the collection with ID objectID. The function will not return child documents.
See also hw_children(), and hw_getchilddoccoll().
Returns an array of object records. Each object records belongs to a child collection of the collection with ID objectID. The function will not return child documents.
See also hw_childrenobj(), and hw_getchilddoccollobj().
Returns array of object ids for child documents of a collection.
See also hw_children(), and hw_getchildcoll().
Returns an array of object records for child documents of a collection.
See also hw_childrenobj(), and hw_getchildcollobj().
Returns the object record for the object with ID objectID if the second parameter is an integer. If the second parameter is an array of integer the function will return an array of object records. In such a case the last parameter is also evaluated which is a query string.
The query string has the following syntax:
<expr> ::= "(" <expr> ")" |
"!" <expr> | /* NOT */
<expr> "||" <expr> | /* OR */
<expr> "&&" <expr> | /* AND */
<attribute> <operator> <value>
<attribute> ::= /* any attribute name (Title, Author, DocumentType ...) */
<operator> ::= "=" | /* equal */
"<" | /* less than (string compare) */
">" | /* greater than (string compare) */
"~" /* regular expression matching */
The query allows to further select certain objects from the list of given objects. Unlike the other query functions, this query may use not indexed attributes. How many object records are returned depends on the query and if access to the object is allowed.
See also hw_getandlock(), and hw_getobjectbyquery().
Searches for objects on the whole server and returns an array of object ids. The maximum number of matches is limited to max_hits. If max_hits is set to -1 the maximum number of matches is unlimited.
The query will only work with indexed attributes.
See also hw_getobjectbyqueryobj().
Searches for objects in collection with ID objectID and returns an array of object ids. The maximum number of matches is limited to max_hits. If max_hits is set to -1 the maximum number of matches is unlimited.
The query will only work with indexed attributes.
See also hw_getobjectbyquerycollobj().
Searches for objects in collection with ID objectID and returns an array of object records. The maximum number of matches is limited to max_hits. If max_hits is set to -1 the maximum number of matches is unlimited.
The query will only work with indexed attributes.
See also hw_getobjectbyquerycoll().
Searches for objects on the whole server and returns an array of object records. The maximum number of matches is limited to max_hits. If max_hits is set to -1 the maximum number of matches is unlimited.
The query will only work with indexed attributes.
See also hw_getobjectbyquery().
Returns an indexed array of object ids. Each object id belongs to a parent of the object with ID objectID.
Returns an indexed array of object records plus an associated array with statistical information about the object records. The associated array is the last entry of the returned array. Each object record belongs to a parent of the object with ID objectID.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns a remote document. Remote documents in Hyperwave notation are documents retrieved from an external source. Common remote documents are for example external web pages or queries in a database. In order to be able to access external sources through remote documents Hyperwave introduces the HGI (Hyperwave Gateway Interface) which is similar to the CGI. Currently, only ftp, http-servers and some databases can be accessed by the HGI. Calling hw_getremote() returns the document from the external source. If you want to use this function you should be very familiar with HGIs. You should also consider to use PHP instead of Hyperwave to access external sources. Adding database support by a Hyperwave gateway should be more difficult than doing it in PHP.
See also hw_getremotechildren().
Returns the children of a remote document. Children of a remote document are remote documents itself. This makes sense if a database query has to be narrowed and is explained in Hyperwave Programmers' Guide. If the number of children is 1 the function will return the document itself formated by the Hyperwave Gateway Interface (HGI). If the number of children is greater than 1 it will return an array of object record with each maybe the input value for another call to hw_getremotechildren(). Those object records are virtual and do not exist in the Hyperwave server, therefore they do not have a valid object ID. How exactly such an object record looks like is up to the HGI. If you want to use this function you should be very familiar with HGIs. You should also consider to use PHP instead of Hyperwave to access external sources. Adding database support by a Hyperwave gateway should be more difficult than doing it in PHP.
See also hw_getremote().
Returns the object records of all anchors pointing to the object with ID objectID. The object can either be a document or an anchor of type destination.
See also hw_getanchors().
Returns the document with object ID objectID. If the document has anchors which can be inserted, they will be inserted already. The optional parameter rootID/prefix can be a string or an integer. If it is an integer it determines how links are inserted into the document. The default is 0 and will result in links that are constructed from the name of the link's destination object. This is useful for web applications. If a link points to an object with name 'internet_movie' the HTML link will be <A HREF="/internet_movie">. The actual location of the source and destination object in the document hierarchy is disregarded. You will have to set up your web browser, to rewrite that URL to for example '/my_script.php3/internet_movie'. 'my_script.php3' will have to evaluate $PATH_INFO and retrieve the document. All links will have the prefix '/my_script.php3/'. If you do not want this you can set the optional parameter rootID/prefix to any prefix which is used instead. Is this case it has to be a string.
If rootID/prefix is an integer and unequal to 0 the link is constructed from all the names starting at the object with the id rootID/prefix separated by a slash relative to the current object. If for example the above document 'internet_movie' is located at 'a-b-c-internet_movie' with '-' being the separator between hierarchy levels on the Hyperwave server and the source document is located at 'a-b-d-source' the resulting HTML link would be: <A HREF="../c/internet_movie">. This is useful if you want to download the whole server content onto disk and map the document hierarchy onto the file system.
This function will only work for pure text documents. It will not open a special data connection and therefore blocks the control connection during the transfer.
See also hw_pipedocument(), hw_free_document(), hw_document_bodytag(), hw_document_size(), and hw_output_document().
Identifies as user with username and password. Identification is only valid for the current session. I do not thing this function will be needed very often. In most cases it will be easier to identify with the opening of the connection.
See also hw_connect().
Checks whether a set of objects (documents or collections) specified by the object_id_array is part of the collections listed in collection_id_array. When the fourth parameter return_collections is 0, the subset of object ids that is part of the collections (i.e., the documents or collections that are children of one or more collections of collection ids or their subcollections, recursively) is returned as an array. When the fourth parameter is 1, however, the set of collections that have one or more objects of this subset as children are returned as an array. This option allows a client to, e.g., highlight the part of the collection hierarchy that contains the matches of a previous query, in a graphical overview.
Returns information about the current connection. The returned string has the following format: <Serverstring>, <Host>, <Port>, <Username>, <Port of Client>, <Byte swapping>
Inserts a new collection with attributes as in object_array into collection with object ID objectID.
Inserts a new document with attributes as in object_record into collection with object ID parentID. This function inserts either an object record only or an object record and a pure ascii text in text if text is given. If you want to insert a general document of any kind use hw_insertdocument() instead.
See also hw_insertdocument(), and hw_inscoll().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Uploads a document into the collection with parent_id. The document has to be created before with hw_new_document(). Make sure that the object record of the new document contains at least the attributes: Type, DocumentType, Title and Name. Possibly you also want to set the MimeType. The functions returns the object id of the new document or FALSE.
See also hw_pipedocument().
Inserts an object into the server. The object can be any valid hyperwave object. See the HG-CSP documentation for a detailed information on how the parameters have to be.
Note: If you want to insert an Anchor, the attribute Position has always been set either to a start/end value or to 'invisible'. Invisible positions are needed if the annotation has no corresponding link in the annotation text.
See also hw_pipedocument(), hw_insertdocument(), hw_insdoc(), and hw_inscoll().
Maps a global object id on any hyperwave server, even those you did not connect to with hw_connect(), onto a virtual object id. This virtual object id can then be used as any other object id, e.g. to obtain the object record with hw_getobject(). The server id is the first part of the global object id (GOid) of the object which is actually the IP number as an integer.
Note: In order to use this function you will have to set the F_DISTRIBUTED flag, which can currently only be set at compile time in hg_comm.c. It is not set by default. Read the comment at the beginning of hg_comm.c
This command allows to remove, add, or modify individual attributes of an object record. The object is specified by the Object ID object_to_change. The first array remove is a list of attributes to remove. The second array add is a list of attributes to add. In order to modify an attribute one will have to remove the old one and add a new one. hw_modifyobject() will always remove the attributes before it adds attributes unless the value of the attribute to remove is not a string or array.
The last parameter determines if the modification is performed recursively. 1 means recursive modification. If some of the objects cannot be modified they will be skipped without notice. hw_error() may not indicate an error though some of the objects could not be modified.
The keys of both arrays are the attributes name. The value of each array element can either be an array, a string or anything else. If it is an array each attribute value is constructed by the key of each element plus a colon and the value of each element. If it is a string it is taken as the attribute value. An empty string will result in a complete removal of that attribute. If the value is neither a string nor an array but something else, e.g. an integer, no operation at all will be performed on the attribute. This is necessary if you want to to add a completely new attribute not just a new value for an existing attribute. If the remove array contained an empty string for that attribute, the attribute would be tried to be removed which would fail since it doesn't exist. The following addition of a new value for that attribute would also fail. Setting the value for that attribute to e.g. 0 would not even try to remove it and the addition will work.
If you would like to change the attribute 'Name' with the current value 'books' into 'articles' you will have to create two arrays and call hw_modifyobject().
Poznßmka: Multilingual attributes, e.g. 'Title', can be modified in two ways. Either by providing the attributes value in its native form 'language':'title' or by providing an array with elements for each language as described above. The above example would than be:
Poznßmka: This will remove all attributes with the name 'Title' and adds a new 'Title' attribute. This comes in handy if you want to remove attributes recursively.
Poznßmka: If you need to delete all attributes with a certain name you will have to pass an empty string as the attribute value.
Poznßmka: Only the attributes 'Title', 'Description' and 'Keyword' will properly handle the language prefix. If those attributes don't carry a language prefix, the prefix 'xx' will be assigned.
Poznßmka: The 'Name' attribute is somewhat special. In some cases it cannot be complete removed. You will get an error message 'Change of base attribute' (not clear when this happens). Therefore you will always have to add a new Name first and than remove the old one.
Poznßmka: You may not surround this function by calls to hw_getandlock() and hw_unlock(). hw_modifyobject() does this internally.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Moves the objects with object ids as specified in the second parameter from the collection with id source_id to the collection with the id destination_id. If the destination id is 0 the objects will be unlinked from the source collection. If this is the last instance of that object it will be deleted. If you want to delete all instances at once, use hw_deleteobject().
The value returned is the number of moved objects.
See also hw_cp(), and hw_deleteobject().
Returns a new Hyperwave document with document data set to document_data and object record set to object_record. The length of the document_data has to passed in document_sizeThis function does not insert the document into the Hyperwave server.
See also hw_free_document(), hw_document_size(), hw_document_bodytag(), hw_output_document(), and hw_insertdocument().
Converts an object_record into an object array. The keys of the resulting array are the attributes names. Multi-value attributes like 'Title' in different languages form its own array. The keys of this array are the left part to the colon of the attribute value. This left part must be two characters long. Other multi-value attributes without a prefix form an indexed array. If the optional parameter is missing the attributes 'Title', 'Description' and 'Keyword' are treated as language attributes and the attributes 'Group', 'Parent' and 'HtmlAttr' as non-prefixed multi-value attributes. By passing an array holding the type for each attribute you can alter this behaviour. The array is an associated array with the attribute name as its key and the value being one of HW_ATTR_LANG or HW_ATTR_NONE.
See also hw_array2objrec().
Prints the document without the BODY tag.
For backward compatibility, hw_outputdocument() is also accepted. This is deprecated, however.
Returns a connection index on success, or FALSE if the connection could not be made. Opens a persistent connection to a Hyperwave server. Each of the arguments should be a quoted string, except for the port number. The username and password arguments are optional and can be left out. In such a case no identification with the server will be done. It is similar to identify as user anonymous. This function returns a connection index that is needed by other Hyperwave functions. You can have multiple persistent connections open at once.
See also hw_connect().
Returns the Hyperwave document with object ID objectID. If the document has anchors which can be inserted, they will have been inserted already. The document will be transferred via a special data connection which does not block the control connection.
See also hw_gettext() for more on link insertion, hw_free_document(), hw_document_size(), hw_document_bodytag(), and hw_output_document().
Returns the object ID of the hyperroot collection. Currently this is always 0. The child collection of the hyperroot is the root collection of the connected server.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Unlocks a document, so other users regain access.
See also hw_getandlock().
Returns an array of users currently logged into the Hyperwave server. Each entry in this array is an array itself containing the elements id, name, system, onSinceDate, onSinceTime, TotalTime and self. 'self' is 1 if this entry belongs to the user who initiated the request.
Hyperwave has been developed at IICM in Graz. It started with the name Hyper-G and changed to Hyperwave when it was commercialised (in 1996).
Hyperwave is not free software. The current version, 5.5, is available at http://www.hyperwave.com/. A time limited version can be ordered for free (30 days).
See also the Hyperwave module.
Hyperwave is an information system similar to a database (HIS, Hyperwave Information Server). Its focus is the storage and management of documents. A document can be any possible piece of data that may as well be stored in file. Each document is accompanied by its object record. The object record contains meta data for the document. The meta data is a list of attributes which can be extended by the user. Certain attributes are always set by the Hyperwave server, other may be modified by the user.
Since 2001 there is a Hyperwave SDK available. It supports Java, JavaScript and C++. This PHP Extension is based on the C++ interface. In order to activate the hwapi support in PHP you will have to install the Hyperwave SDK first.
The integration with Apache and possible other servers is already described in the Hyperwave module which has been the first extension to connect a Hyperwave Server.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Hyperwave API configuration options
Name | Default | Changeable |
---|---|---|
hwapi.allow_persistent | "0" | PHP_INI_SYSTEM |
The API provided by the HW_API extension is fully object oriented. It is very similar to the C++ interface of the Hyperwave SDK. It consist of the following classes.
HW_API
HW_API_Object
HW_API_Attribute
HW_API_Error
HW_API_Content
HW_API_Reason
Each class has certain method, whose names are identical to its counterparts in the Hyperwave SDK. Passing arguments to this function differs from all the other PHP extensions but is close to the C++ API of the HW SDK. Instead of passing several parameters they are all put into an associated array and passed as one parameter. The names of the keys are identical to those documented in the HW SDK. The common parameters are listed below. If other parameters are required they will be documented if needed.
objectIdentifier The name or id of an object, e.g. "rootcollection", "0x873A8768 0x00000002".
parentIdentifier The name or id of an object which is considered to be a parent.
object An instance of class HW_API_Object.
parameters An instance of class HW_API_Object.
version The version of an object.
mode An integer value determine the way an operation is executed.
attributeSelector Any array of strings, each containing a name of an attribute. This is used if you retrieve the object record and want to include certain attributes.
objectQuery A query to select certain object out of a list of objects. This is used to reduce the number of objects which was delivered by a function like hw_api->children() or hw_api->find().
(no version information, might be only in CVS)
hw_api_attribute->langdepvalue -- Returns value for a given languageReturns the value in the given language of the attribute.
See also hwapi_attribute_value().
(no version information, might be only in CVS)
hw_api_attribute->value -- Returns value of the attributeReturns the value of the attribute.
See also hwapi_attribute_key(), hwapi_attribute_values().
(no version information, might be only in CVS)
hw_api_attribute->values -- Returns all values of the attributeReturns all values of the attribute as an array of strings.
See also hwapi_attribute_value().
(no version information, might be only in CVS)
hw_api_attribute -- Creates instance of class hw_api_attributeCreates a new instance of hw_api_attribute with the given name and value.
This function checks in an object or a whole hiearchie of objects. The parameters array contains the required element 'objectIdentifier' and the optional element 'version', 'comment', 'mode' and 'objectQuery'. 'version' sets the version of the object. It consists of the major and minor version separated by a period. If the version is not set, the minor version is incremented. 'mode' can be one of the following values:
Checks in and commits the object. The object must be a document.
If the object to check in is a collection, all children will be checked in recursively if they are documents. Trying to check in a collection would result in an error.
Checks in an object even if it is not under version control.
Check if the new version is different from the last version. Unless this is the case the object will be checked in.
Keeps the time modified from the most recent object.
The object is not automatically committed on check-in.
See also hwapi_checkout().
This function checks out an object or a whole hiearchie of objects. The parameters array contains the required element 'objectIdentifier' and the optional element 'version', 'mode' and 'objectQuery'. 'mode' can be one of the following values:
Checks out an object. The object must be a document.
If the object to check out is a collection, all children will be checked out recursively if they are documents. Trying to check out a collection would result in an error.
See also hwapi_checkin().
Retrieves the children of a collection or the attributes of a document. The children can be further filtered by specifying an object query. The parameter array contains the required elements 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.
The return value is an array of objects of type HW_API_Object or HW_API_Error.
See also hwapi_parents().
Reads len bytes from the content into the given buffer.
This function returns the content of a document as an object of type hw_api_content. The parameter array contains the required elements 'objectidentifier' and the optional element 'mode'. The mode can be one of the constants HW_API_CONTENT_ALLLINKS, HW_API_CONTENT_REACHABLELINKS or HW_API_CONTENT_PLAIN. HW_API_CONTENT_ALLLINKS means to insert all anchors even if the destination is not reachable. HW_API_CONTENT_REACHABLELINKS tells hw_api_content() to insert only reachable links and HW_API_CONTENT_PLAIN will lead to document without any links.
This function will make a physical copy including the content if it exists and returns the new object or an error object. The parameter array contains the required elements 'objectIdentifier' and 'destinationParentIdentifier'. The optional parameter is 'attributeSelector'`
See also hwapi_move(), hwapi_link().
(no version information, might be only in CVS)
hw_api->dbstat -- Returns statistics about database server
See also hwapi_dcstat(), hwapi_hwstat(), hwapi_ftstat().
(no version information, might be only in CVS)
hw_api->dcstat -- Returns statistics about document cache server
See also hwapi_hwstat(), hwapi_dbstat(), hwapi_ftstat().
(no version information, might be only in CVS)
hw_api->dstanchors -- Returns a list of all destination anchorsRetrieves all destination anchors of an object. The parameter array contains the required element 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.
See also hwapi_srcanchors().
(no version information, might be only in CVS)
hw_api->dstofsrcanchors -- Returns destination of a source anchorRetrieves the destination object pointed by the specified source anchors. The destination object can either be a destination anchor or a whole document. The parameters array contains the required element 'objectIdentifier' and the optional element 'attributeSelector'.
See also hwapi_srcanchors(), hwapi_dstanchors(), hwapi_objectbyanchor().
This functions searches for objects either by executing a key or/and full text query. The found objects can further be filtered by an optional object query. They are sorted by their importance. The second search operation is relatively slow and its result can be limited to a certain number of hits. This allows to perform an incremental search, each returning just a subset of all found documents, starting at a given index. The parameter array contains the 'keyquery' or/and 'fulltextquery' depending on who you would like to search. Optional parameters are 'objectquery', 'scope', 'languages' and 'attributeselector'. In case of an incremental search the optional parameters 'startIndex', numberOfObjectsToGet' and 'exactMatchUnit' can be passed.
(no version information, might be only in CVS)
hw_api->ftstat -- Returns statistics about fulltext server
See also hwapi_dcstat(), hwapi_dbstat(), hwapi_hwstat().
Opens a connection to the Hyperwave server on host hostname. The protocol used is HGCSP. If you do not pass a port number, 418 is used.
See also hwapi_hwtp().
(no version information, might be only in CVS)
hw_api->hwstat -- Returns statistics about Hyperwave server
See also hwapi_dcstat(), hwapi_dbstat(), hwapi_ftstat().
Logs into the Hyperwave Server. The parameter array must contain the elements 'username' and 'password'.
The return value will be an object of type HW_API_Error if identification failed or TRUE if it was successful.
(no version information, might be only in CVS)
hw_api->info -- Returns information about server configuration
See also hwapi_dcstat(), hwapi_dbstat(), hwapi_ftstat(), hwapi_hwstat().
Insert a new object. The object type can be user, group, document or anchor. Depending on the type other object attributes has to be set. The parameter array contains the required elements 'object' and 'content' (if the object is a document) and the optional parameters 'parameters', 'mode' and 'attributeSelector'. The 'object' must contain all attributes of the object. 'parameters' is an object as well holding further attributes like the destination (attribute key is 'Parent'). 'content' is the content of the document. 'mode' can be a combination of the following flags:
The object in inserted into the server.
See also hwapi_replace().
(no version information, might be only in CVS)
hw_api->insertanchor -- Inserts a new object of type anchorThis function is a shortcut for hwapi_insert(). It inserts an object of type anchor and sets some of the attributes required for an anchor. The parameter array contains the required elements 'object' and 'documentIdentifier' and the optional elements 'destinationIdentifier', 'parameter', 'hint' and 'attributeSelector'. The 'documentIdentifier' specifies the document where the anchor shall be inserted. The target of the anchor is set in 'destinationIdentifier' if it already exists. If the target does not exists the element 'hint' has to be set to the name of object which is supposed to be inserted later. Once it is inserted the anchor target is resolved automatically.
See also hwapi_insertdocument(), hwapi_insertcollection(), hwapi_insert().
(no version information, might be only in CVS)
hw_api->insertcollection -- Inserts a new object of type collectionThis function is a shortcut for hwapi_insert(). It inserts an object of type collection and sets some of the attributes required for a collection. The parameter array contains the required elements 'object' and 'parentIdentifier' and the optional elements 'parameter' and 'attributeSelector'. See hwapi_insert() for the meaning of each element.
See also hwapi_insertdocument(), hwapi_insertanchor(), hwapi_insert().
(no version information, might be only in CVS)
hw_api->insertdocument -- Inserts a new object of type documentThis function is a shortcut for hwapi_insert(). It inserts an object with content and sets some of the attributes required for a document. The parameter array contains the required elements 'object', 'parentIdentifier' and 'content' and the optional elements 'mode', 'parameter' and 'attributeSelector'. See hwapi_insert() for the meaning of each element.
See also hwapi_insert() hwapi_insertanchor(), hwapi_insertcollection().
Creates a link to an object. Accessing this link is like accessing the object to links points to. The parameter array contains the required elements 'objectIdentifier' and 'destinationParentIdentifier'. 'destinationParentIdentifier' is the target collection.
The function returns TRUE on success or an error object.
See also hwapi_copy().
Locks an object for exclusive editing by the user calling this function. The object can be only unlocked by this user or the system user. The parameter array contains the required element 'objectIdentifier' and the optional parameters 'mode' and 'objectquery'. 'mode' determines how an object is locked. HW_API_LOCK_NORMAL means, an object is locked until it is unlocked. HW_API_LOCK_RECURSIVE is only valid for collection and locks all objects within the collection and possible subcollections. HW_API_LOCK_SESSION means, an object is locked only as long as the session is valid.
See also hwapi_unlock().
(no version information, might be only in CVS)
hw_api_content -- Create new instance of class hw_api_contentCreates a new content object from the string content. The mimetype is set to mimetype.
(no version information, might be only in CVS)
hw_api_object->attreditable -- Checks whether an attribute is editableAdds an attribute to the object. Returns TRUE on success and otherwise FALSE.
See also hwapi_object_remove().
(no version information, might be only in CVS)
hw_api_object -- Creates a new instance of class hw_api_objectRemoves the attribute with the given name. Returns TRUE on success and otherwise FALSE.
See also hwapi_object_insert().
Returns the value of the attribute with the given name or FALSE if an error occurred.
This function retrieves the attribute information of an object of any version. It will not return the document content. The parameter array contains the required elements 'objectIdentifier' and the optional elements 'attributeSelector' and 'version'.
The returned object is an instance of class HW_API_Object on success or HW_API_Error if an error occurred.
This simple example retrieves an object and checks for errors.
P°φklad 1. Retrieve an object
|
See also hwapi_content().
(no version information, might be only in CVS)
hw_api->objectbyanchor -- Returns the object an anchor belongs toThis function retrieves an object the specified anchor belongs to. The parameter array contains the required element 'objectIdentifier' and the optional element 'attributeSelector'.
See also hwapi_dstofsrcanchor(), hwapi_srcanchors(), hwapi_dstanchors().
Retrieves the parents of an object. The parents can be further filtered by specifying an object query. The parameter array contains the required elements 'objectidentifier' and the optional elements 'attributeselector' and 'objectquery'.
The return value is an array of objects of type HW_API_Object or HW_API_Error.
See also hwapi_children().
(no version information, might be only in CVS)
hw_api_reason->description -- Returns description of reasonRemoves an object from the specified parent. Collections will be removed recursively. You can pass an optional object query to remove only those objects which match the query. An object will be deleted physically if it is the last instance. The parameter array contains the required elements 'objectidentifier' and 'parentidentifier'. If you want to remove a user or group 'parentidentifier' can be skipped. The optional parameter 'mode' determines how the deletion is performed. In normal mode the object will not be removed physically until all instances are removed. In physical mode all instances of the object will be deleted immediately. In removelinks mode all references to and from the objects will be deleted as well. In nonrecursive the deletion is not performed recursive. Removing a collection which is not empty will cause an error.
See also hwapi_move().
Replaces the attributes and the content of an object The parameter array contains the required elements 'objectIdentifier' and 'object' and the optional parameters 'content', 'parameters', 'mode' and 'attributeSelector'. 'objectIdentifier' contains the object to be replaced. 'object' contains the new object. 'content' contains the new content. 'parameters' contain extra information for HTML documents. HTML_Language is the letter abbreviation of the language of the title. HTML_Base sets the base attribute of the HTML document. 'mode' can be a combination of the following flags:
The object on the server is replace with the object passed.
See also hwapi_insert().
(no version information, might be only in CVS)
hw_api->setcommitedversion -- Commits version other than last versionCommits a version of a document. The committed version is the one which is visible to users with read access. By default the last version is the committed version.
See also hwapi_checkin(), hwapi_checkout(), hwapi_revert().
(no version information, might be only in CVS)
hw_api->srcanchors -- Returns a list of all source anchorsRetrieves all source anchors of an object. The parameter array contains the required element 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.
See also hwapi_dstanchors().
(no version information, might be only in CVS)
hw_api->srcsofdst -- Returns source of a destination objectRetrieves all the source anchors pointing to the specified destination. The destination object can either be a destination anchor or a whole document. The parameters array contains the required element 'objectIdentifier' and the optional element 'attributeSelector' and 'objectQuery'. The function returns an array of objects or an error.
See also hwapi_dstofsrcanchor().
Unlocks a locked object. Only the user who has locked the object and the system user may unlock an object. The parameter array contains the required element 'objectIdentifier' and the optional parameters 'mode' and 'objectquery'. The meaning of 'mode' is the same as in function hwapi_lock().
Returns TRUE on success or an object of class HW_API_Error.
See also hwapi_lock().
This module contains an interface to iconv character set conversion facility. With this module, you can turn a string represented by a local character set into the one represented by another character set, which may be the Unicode charcter set. Supported character sets depend on the iconv implementation of your system. Note that the iconv function on some systems may not work as you expect. In such case, it'd be a good idea to install the GNU libiconv library. It will most likely end up with more consistent results.
Since PHP 5.0.0, this extension comes with various utility functions that help you to write multilingual scripts. Let's have a look at the following sections to explore the new features.
You will need nothing if the system you are using is one of the recent POSIX-compliant systems because standard C libraries that are supplied in them must provide iconv facility. Otherwise, you have to get the libiconv library installed in your system.
To use functions provided by this module, the PHP binary must be built with the following configure line: --with-iconv[=DIR].
Note to Windows® Users: In order to enable this module on a Windows® environment, you need to put a DLL file named iconv.dll or iconv-1.3.dll (prior to 4.2.1) which is bundled with the PHP/Win32 binary package into a directory specified by the PATH environment variable or one of the system directories of your Windows® installation.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Iconv configuration options
Name | Default | Changeable |
---|---|---|
iconv.input_encoding | ICONV_INPUT_ENCODING | PHP_INI_ALL |
iconv.output_encoding | ICONV_OUTPUT_ENCODING | PHP_INI_ALL |
iconv.internal_encoding | ICONV_INTERNAL_ENCODING | PHP_INI_ALL |
Since PHP 4.3.0 it is possible to identify at runtime which iconv implementation is adopted by this extension.
Tabulka 2. iconv constants
Name | Type | Description |
---|---|---|
ICONV_IMPL | string | The implementation name |
ICONV_VERSION | string | The implementation version |
Poznßmka: Writing implementation-dependent scripts with these constants is strongly discouraged.
Since PHP 5.0.0, the following constants are also available:
Tabulka 3. iconv constants available since PHP 5.0.0
Name | Type | Description |
---|---|---|
ICONV_MIME_DECODE_STRICT | integer | A bitmask used for iconv_mime_decode() |
ICONV_MIME_DECODE_CONTINUE_ON_ERROR | integer | A bitmask used for iconv_mime_decode() |
iconv_get_encoding() returns the current value of the internal configuration variable if successful, or FALSE on failure.
The value of the optional type can be:
all |
input_encoding |
output_encoding |
internal_encoding |
If type is omitted or set to "all", iconv_get_encoding() returns an array that stores all these variables.
P°φklad 1. iconv_get_encoding() example
The printout of the above program will be:
|
See also iconv_set_encoding() and ob_iconv_handler().
(no version information, might be only in CVS)
iconv_mime_decode_headers -- Decodes multiple MIME header fields at onceReturns an associative array that holds a whole set of MIME header fields specified by encoded_headers on success, or FALSE if an error occurs during the decoding.
Each key of the return value represents an individual field name and the corresponding element represents a field value. If more than one field of the same name are present, iconv_mime_decode_headers() automatically incorporates them into a numerically indexed array in the order of occurrence.
mode determines the behaviour in the event iconv_mime_decode_headers() encounters a malformed MIME header field. You can specify any combination of the following bitmasks.
Tabulka 1. Bitmasks acceptable to iconv_mime_decode_headers()
Value | Constant | Description |
---|---|---|
1 | ICONV_MIME_DECODE_STRICT | If set, the given header is decoded in full conformance with the standards defined in RFC2047. This option is disabled by default because there are a lot of broken mail user agents that don't follow the specification and don't produce correct MIME headers. |
2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | If set, iconv_mime_decode_headers() attempts to ignore any grammatical errors and continue to process a given header. |
The optional charset parameter specifies the character set to represent the result by. If omitted, iconv.internal_charset will be used.
P°φklad 1. iconv_mime_decode_function() example
The output of this script should look like:
|
See also iconv_mime_decode(), mb_decode_mimeheader(), imap_mime_header_decode(), imap_base64() and imap_qprint().
Returns a decoded MIME field on success, or FALSE if an error occurs during the decoding.
mode determines the behaviour in the event iconv_mime_decode() encounters a malformed MIME header field. You can specify any combination of the following bitmasks.
Tabulka 1. Bitmasks acceptable to iconv_mime_decode()
Value | Constant | Description |
---|---|---|
1 | ICONV_MIME_DECODE_STRICT | If set, the given header is decoded in full conformance with the standards defined in RFC2047. This option is disabled by default because there are a lot of broken mail user agents that don't follow the specification and don't produce correct MIME headers. |
2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | If set, iconv_mime_decode() attempts to continue to process the given header even though an error occurs. |
The optional charset parameter specifies the character set to represent the result by. If omitted, iconv.internal_charset will be used.
See also iconv_mime_decode_headers(), mb_decode_mimeheader(), imap_mime_header_decode(), imap_base64() and imap_qprint().
Composes and returns a string that represents a valid MIME header field, which looks like the following:
Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile |
You can control the behaviour of iconv_mime_encode() by specifying an associative array that contains configuration items to the optional third parameter preferences. The items supported by iconv_mime_encode() are listed below. Note that item names are treated case-sensitive.
Tabulka 1. Configuration items supported by iconv_mime_encode()
Item | Type | Description | Default value | Example |
---|---|---|---|---|
scheme | boolean | Specifies the method to encode a field value by. The value of this item may be either "B" or "Q", where "B" stands for base64 encoding scheme and "Q" stands for quoted-printable encoding scheme. | B | B |
input-charset | string | Specifies the character set in which the first parameter field_name and the second parameter field_value are presented. If not given, iconv_mime_encode() assumes those parameters are presented to it in the iconv.internal_charset ini setting. | iconv.internal_charset | ISO-8859-1 |
output-charset | string | Specifies the character set to use to compose the MIME header. If not given, the same value as input-charset will be used. | the same value as input-charset | UTF-8 |
line-length | integer | Specifies the maximum length of the header lines. The resulting header is "folded" to a set of multiple lines in case the resulting header field would be longer than the value of this parameter, according to RFC2822 - Internet Message Format. If not given, the length will be limited to 76 characters. | 76 | 996 |
line-break-chars | string | Specifies the sequence of characters to append to each line as an end-of-line sign when "folding" is performed on a long header field. If not given, this defaults to "\r\n" (CR LF). Note that this parameter is always treated as an ASCII string regardless of the value of input-charset. | \r\n | \n |
P°φklad 1. iconv_mime_encode() example:
|
See also imap_binary(), mb_encode_mimeheader() and imap_8bit().
iconv_set_encoding() changes the value of the internal configuration variable specified by type to charset. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The value of type can be any one of those:
input_encoding |
output_encoding |
internal_encoding |
See also iconv_get_encoding() and ob_iconv_handler().
Returns the character count of str.
In contrast to strlen(), iconv_strlen() counts the occurrences of characters in the given byte sequence str on the basis of the specified character set, the result of which is not necessarily identical to the length of the string in byte.
If charset parameter is omitted, str is assumed to be encoded in iconv.internal_charset.
See also strlen() and mb_strlen().
Returns the numeric position of the first occurrence of needle in haystack.
The optional offset parameter specifies the position from which the search should be performed.
If needle is not found, iconv_strpos() will return FALSE.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
If haystack or needle is not a string, it is converted to a string and applied as the ordinal value of a character.
In contrast to strpos(), the return value of iconv_strpos() is the number of characters that appear before the needle, rather than the offset in bytes to the position where the needle has been found. The characters are counted on the basis of the specified character set charset.
If charset parameter is omitted, string are assumed to be encoded in iconv.internal_charset.
See also strpos(), iconv_strrpos() and mb_strpos().
(PHP 5 CVS only)
iconv_strrpos -- Finds the last occurrence of a needle within the specified range of haystack.Returns the numeric position of the last occurrence of needle in haystack.
If needle is not found, iconv_strrpos() will return FALSE.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
If haystack or needle is not a string, it is converted to a string and applied as the ordinal value of a character.
In contrast to strpos(), the return value of iconv_strrpos() is the number of characters that appear before the needle, rather than the offset in bytes to the position where the needle has been found. The characters are counted on the basis of the specified character set charset.
See also strrpos(), iconv_strpos() and mb_strrpos().
Returns the portion of str specified by the start and length parameters.
If start is non-negative, iconv_substr() cuts the portion out of str beginning at start'th character, counting from zero.
If start is negative, iconv_substr() cuts out the portion beginning at the position, start characters away from the end of str.
If length is given and is positive, the return value will contain at most length characters of the portion that begins at start (depending on the length of string). If str is shorter than start characters long, FALSE will be returned.
If negative length is passed, iconv_substr() cuts the portion out of str from the start'th character up to the character that is length characters away from the end of the string. In case start is also negative, the start position is calculated beforehand according to the rule explained above.
Note that offset and length parameters are always deemed to represent offsets that are calculated on the basis of the character set determined by charset, whilst the counterpart substr() always takes these for byte offsets. If charset is not given, the character set is determined by the iconv.internal_charset ini setting.
See also substr(), mb_substr() and mb_strcut().
Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure.
It converts the string encoded in internal_encoding to output_encoding.
internal_encoding and output_encoding should be defined by iconv_set_encoding() or in the configuration file php.ini.
See also iconv_get_encoding(), iconv_set_encoding() and output-control functions.
PHP is not limited to creating just HTML output. It can also be used to create and manipulate image files in a variety of different image formats, including gif, png, jpg, wbmp, and xpm. Even more convenient, PHP can output image streams directly to a browser. You will need to compile PHP with the GD library of image functions for this to work. GD and PHP may also require other libraries, depending on which image formats you want to work with.
You can use the image functions in PHP to get the size of JPEG, GIF, PNG, SWF, TIFF and JPEG2000 images.
Poznßmka: Read requirements section about how to expand image capabilities to read, write and modify images and to read meta data of pictures taken by digital cameras.
If you have the GD library (available at http://www.boutell.com/gd/) you will also be able to create and manipulate images.
The format of images you are able to manipulate depend on the version of GD you install, and any other libraries GD might need to access those image formats. Versions of GD older than gd-1.6 support GIF format images, and do not support PNG, where versions greater than gd-1.6 support PNG, not GIF.
Poznßmka: Since PHP 4.3 there is a bundled version of the GD lib. This bundled version has some additional features like alpha blending, and should be used in preference to the external library since it's codebase is better maintained and more stable.
You may wish to enhance GD to handle more image formats.
Tabulka 1. Supported image formats
Image format | Library to download | Notes |
---|---|---|
gif | Only supported in GD versions older than gd-1.6. Read-only GIF support is available with PHP 4.3.0 and the bundled GD-library. | |
jpeg-6b | ftp://ftp.uu.net/graphics/jpeg/ | |
png | http://www.libpng.org/pub/png/libpng.html | Only supported in GD versions greater than gd-1.6. |
xpm | ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | It's likely you have this library already available, if your system has an installed X-Environment. |
You may wish to enhance GD to deal with different fonts. The following font libraries are supported:
Tabulka 2. Supported font libraries
Font library | Download | Notes |
---|---|---|
FreeType 1.x | http://www.freetype.org/ | |
FreeType 2 | http://www.freetype.org/ | |
T1lib | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Support for Type 1 fonts. |
If you have PHP compiled with --enable-exif you are able to work with information stored in headers of JPEG and TIFF images. This way you can read meta data generated by digital cameras as mentioned above. These functions does not require the GD library.
Poznßmka: PHP does not require any additional library for the exif module.
To enable GD-support configure PHP --with-gd[=DIR], where DIR is the GD base install directory. To use the recommended bundled version of the GD library (which was first bundled in PHP 4.3.0), use the configure option --with-gd. In Windows, you'll include the GD2 DLL php_gd2.dll as an extension in php.ini. The GD1 DLL php_gd.dll was removed in PHP 4.3.2. Also note that the preferred truecolor image functions, such as imagecreatetruecolor(), require GD2.
To disable GD support in PHP 3 add --without-gd to your configure line.
Enhance the capabilities of GD to handle more image formats by specifying the --with-XXXX configure switch to your PHP configure line.
Tabulka 3. Supported image formats
Image Format | Configure Switch |
---|---|
jpeg-6b | To enable support for jpeg-6b add --with-jpeg-dir=DIR. |
png | To enable support for png add --with-png-dir=DIR. Note, libpng requires the zlib library, therefore add --with-zlib-dir[=DIR] to your configure line. |
xpm | To enable support for xpm add --with-xpm-dir=DIR. If configure is not able to find the required libraries, you may add the path to your X11 libraries. |
Enhance the capabilities of GD to deal with different fonts by specifying the --with-XXXX configure switch to your PHP configure line.
Tabulka 4. Supported font libraries
Font library | Configure Switch |
---|---|
FreeType 1.x | To enable support for FreeType 1.x add --with-ttf[=DIR]. |
FreeType 2 | To enable support for FreeType 2 add --with-freetype-dir=DIR. |
T1lib | To enable support for T1lib (Type 1 fonts) add --with-t1lib[=DIR]. |
Native TrueType string function | To enable support for native TrueType string function add --enable-gd-native-ttf. |
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Exif supports automatically conversion for Unicode and JIS character encodings of user comments when module mbstring is available. This is done by first decoding the comment using the specified characterset. The result is then encoded with another characterset which should match your HTTP output.
Tabulka 5. Exif configuration options
Name | Default | Changeable |
---|---|---|
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL |
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL |
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL |
exif.encode_jis | "" | PHP_INI_ALL |
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL |
exif.decode_jis_intel | "JIS" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
exif.encode_unicode defines the characterset UNICODE user comments are handled. This defaults to ISO-8859-15 which should work for most non Asian countries. The setting can be empty or must be an encoding supported by mbstring. If it is empty the current internal encoding of mbstring is used.
exif.decode_unicode_motorola defines the image internal characterset for Unicode encoded user comments if image is in motorola byte order (big-endian). This setting cannot be empty but you can specify a list of encodings supported by mbstring. The default is UCS-2BE.
exif.decode_unicode_intel defines the image internal characterset for Unicode encoded user comments if image is in intel byte order (little-endian). This setting cannot be empty but you can specify a list of encodings supported by mbstring. The default is UCS-2LE.
exif.encode_jis defines the characterset JIS user comments are handled. This defaults to an empty value which forces the functions to use the current internal encoding of mbstring.
exif.decode_jis_motorola defines the image internal characterset for JIS encoded user comments if image is in motorola byte order (big-endian). This setting cannot be empty but you can specify a list of encodings supported by mbstring. The default is JIS.
exif.decode_jis_intel defines the image internal characterset for JIS encoded user comments if image is in intel byte order (little-endian). This setting cannot be empty but you can specify a list of encodings supported by mbstring. The default is JIS.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
P°φklad 1. PNG creation with PHP
|
exif_imagetype() reads the first bytes of an image and checks its signature. When a correct signature is found a constant will be returned otherwise the return value is FALSE. The return value is the same value that getimagesize() returns in index 2 but this function is much faster.
The following constants are defined:
Tabulka 1. Imagetype Constants
Value | Constant |
---|---|
1 | IMAGETYPE_GIF |
2 | IMAGETYPE_JPEG |
3 | IMAGETYPE_PNG |
4 | IMAGETYPE_SWF |
5 | IMAGETYPE_PSD |
6 | IMAGETYPE_BMP |
7 | IMAGETYPE_TIFF_II (intel byte order) |
8 | IMAGETYPE_TIFF_MM (motorola byte order) |
9 | IMAGETYPE_JPC |
10 | IMAGETYPE_JP2 |
11 | IMAGETYPE_JPX |
12 | IMAGETYPE_JB2 |
13 | IMAGETYPE_SWC |
14 | IMAGETYPE_IFF |
15 | IMAGETYPE_WBMP |
16 | IMAGETYPE_XBM |
Poznßmka: Support for JPC, JP2, JPX, JB2, XBM, and WBMP became available in PHP 4.3.2. Support for SWC as of PHP 4.3.0.
This function can be used to avoid calls to other exif functions with unsupported file types or in conjunction with $_SERVER['HTTP_ACCEPT'] to check whether or not the viewer is able to see a specific image in the browser.
Poznßmka: This function is only available if PHP is compiled using --enable-exif.
Poznßmka: This function does not require the GD image library.
See also getimagesize().
(PHP 4 >= 4.2.0)
exif_read_data -- Reads the EXIF headers from JPEG or TIFF. This way you can read meta data generated by digital cameras.The exif_read_data() function reads the EXIF headers from a JPEG or TIFF image file. It returns an associative array where the indexes are the header names and the values are the values associated with those headers. If no data can be returned the result is FALSE.
filename is the name of the file to read. This cannot be an url.
sections is a comma separated list of sections that need to be present in file to produce a result array. If none of the requested sections could be found the return value is FALSE.
FILE | FileName, FileSize, FileDateTime, SectionsFound |
COMPUTED | html, Width, Height, IsColor and some more if available. |
ANY_TAG | Any information that has a Tag e.g. IFD0, EXIF, ... |
IFD0 | All tagged data of IFD0. In normal imagefiles this contains image size and so forth. |
THUMBNAIL | A file is supposed to contain a thumbnail if it has a second IFD. All tagged information about the embedded thumbnail is stored in this section. |
COMMENT | Comment headers of JPEG images. |
EXIF | The EXIF section is a sub section of IFD0. It contains more detailed information about an image. Most of these entries are digital camera related. |
arrays specifies whether or not each section becomes an array. The sections COMPUTED, THUMBNAIL and COMMENT allways become arrays as they may contain values whose names are conflict with other sections.
thumbnail whether or not to read the thumbnail itself and not only its tagged data.
Poznßmka: Exif headers tend to be present in JPEG/TIFF images generated by digital cameras, but unfortunately each digital camera maker has a different idea of how to actually tag their images, so you can't always rely on a specific Exif header being present.
Windows ME/XP both can wipe the Exif headers when connecting to a camera. More information available at http://ww2.canon-europe.com/products/cameras/notices_dig_cam_users.html.
P°φklad 1. exif_read_data() example
The first call fails because the image has no header information.
|
Poznßmka: If the image contains any IFD0 data then COMPUTED contains the entry ByteOrderMotorola which is 0 for little-endian (intel) and 1 for big-endian (motorola) byte order. This was added in PHP 4.3.
When an Exif header contains a Copyright note this itself can contain two values. As the solution is inconsistent in the Exif 2.10 standard the COMPUTED section will return both entries Copyright.Photographer and Copyright.Editor while the IFD0 sections contains the byte array with the NULL character that splits both entries. Or just the first entry if the datatype was wrong (normal behaviour of Exif). The COMPUTED will contain also an entry Copyright Which is either the original copyright string or it is a comma separated list of photo and editor copyright.
Poznßmka: The tag UserComment has the same problem as the Copyright tag. It can store two values first the encoding used and second the value itself. If so the IFD section only contains the encoding or a byte array. The COMPUTED section will store both in the entries UserCommentEncoding and UserComment. The entry UserComment is available in both cases so it should be used in preference to the value in IFD0 section.
If the user comment uses Unicode or JIS encoding and the module mbstring is available this encoding will automatically changed according to the exif ini settings in the php.ini. This was added in PHP 4.3.
Poznßmka: Height and Width are computed the same way getimagesize() does so their values must not be part of any header returned. Also html is a height/width text string to be used inside normal HTML.
Poznßmka: Starting from PHP 4.3 the function can read all embedded IFD data including arrays (returned as such). Also the size of an embedded thumbnail is returned in THUMBNAIL subarray and the function exif_read_data() can return thumbnails in TIFF format. Last but not least there is no longer a maximum length for returned values (not until memory limit is reached).
Poznßmka: This function is only available in PHP 4 compiled using --enable-exif. Its functionality and behaviour has changed in PHP 4.2. Earlier versions are very unstable.
Since PHP 4.3 user comment can automatically change encoding if PHP 4 was compiled using --enable-mbstring.
This function does not require the GD image library.
See also exif_thumbnail() and getimagesize().
exif_thumbnail() reads the embedded thumbnail of a TIFF or JPEG image. If the image contains no thumbnail FALSE will be returned.
The parameters width, height and imagetype are available since PHP 4.3.0 and return the size of the thumbnail as well as its type. It is possible that exif_thumbnail() cannot create an image but can determine its size. In this case, the return value is FALSE but width and height are set.
If you want to deliver thumbnails through this function, you should send the mimetype information using the header() function. The following example demonstrates this:
P°φklad 1. exif_thumbnail() example
|
Starting from version PHP 4.3.0, the function exif_thumbnail() can return thumbnails in TIFF format.
Poznßmka: This function is only available in PHP 4 compiled using --enable-exif. Its functionality and behaviour has changed in PHP 4.2.0
Poznßmka: This function does not require the GD image library.
See also exif_read_data() and image_type_to_mime_type().
Returns an associative array describing the version and capabilities of the installed GD library.
Tabulka 1. Elements of array returned by gd_info()
Attribute | Meaning |
---|---|
GD Version | string value describing the installed libgd version. |
Freetype Support | boolean value. TRUE if Freetype Support is installed. |
Freetype Linkage | string value describing the way in which Freetype was linked. Expected values are: 'with freetype', 'with TTF library', and 'with unknown library'. This element will only be defined if Freetype Support evaluated to TRUE. |
T1Lib Support | boolean value. TRUE if T1Lib support is included. |
GIF Read Support | boolean value. TRUE if support for reading GIF images is included. |
GIF Create Support | boolean value. TRUE if support for creating GIF images is included. |
JPG Support | boolean value. TRUE if JPG support is included. |
PNG Support | boolean value. TRUE if PNG support is included. |
WBMP Support | boolean value. TRUE if WBMP support is included. |
XBM Support | boolean value. TRUE if XBM support is included. |
P°φklad 1. Using gd_info()
The typical output is :
|
See also imagepng(), imagejpeg(), imagegif(), imagewbmp(), and imagetypes().
The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP image file and return the dimensions along with the file type and a height/width text string to be used inside a normal HTML IMG tag.
Poznßmka: Support for JPC, JP2, JPX, JB2, XBM, and WBMP became available in PHP 4.3.2. Support for SWC as of PHP 4.3.0.
Returns an array with 4 elements. Index 0 contains the width of the image in pixels. Index 1 contains the height. Index 2 is a flag indicating the type of the image: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM. These values correspond to the IMAGETYPE constants that were added in PHP 4.3. Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.
With JPG images, two extra indexes are returned: channels and bits. channels will be 3 for RGB pictures and 4 for CMYK pictures. bits is the number of bits for each color.
Beginning with PHP 4.3, bits and channels are present for other image types, too. However, the presence of these values can be a bit confusing. As an example, GIF always uses 3 channels per pixel, but the number of bits per pixel cannot be calculated for an animated GIF with a global color table.
Some formats may contain no image or may contain multiple images. In these cases, getimagesize() might not be able to properly determine the image size. getimagesize() will return zero for width and height in these cases.
Beginning with PHP 4.3, getimagesize() also returns an additional parameter, mime, that corresponds with the MIME type of the image. This information can be used to deliver images with correct HTTP Content-type headers:
If accessing the filename image is impossible, or if it isn't a valid picture, getimagesize() will return FALSE and generate a warning.
The optional imageinfo parameter allows you to extract some extended information from the image file. Currently, this will return the different JPG APP markers as an associative array. Some programs use these APP markers to embed text information in images. A very common one is to embed IPTC http://www.iptc.org/ information in the APP13 marker. You can use the iptcparse() function to parse the binary APP13 marker into something readable.
Poznßmka: JPEG 2000 support was added in PHP 4.3.2. Note that JPC and JP2 are capable of having components with different bit depths. In this case, the value for "bits" is the highest bit depth encountered. Also, JP2 files may contain multiple JPEG 2000 codestreams. In this case, getimagesize() returns the values for the first codestream it encounters in the root of the file.
Poznßmka: TIFF support was added in PHP 4.2.
This function does not require the GD image library.
See also image_type_to_mime_type(), exif_imagetype(), exif_read_data() and exif_thumbnail().
URL support was added in PHP 4.0.5.
(PHP 4 >= 4.3.0)
image_type_to_mime_type -- Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetypeThe image_type_to_mime_type() function will determine the Mime-Type for an IMAGETYPE constant.
The returned values are as follows
Tabulka 1. Returned values Constants
imagetype | Returned value |
---|---|
IMAGETYPE_GIF | image/gif |
IMAGETYPE_JPEG | image/jpeg |
IMAGETYPE_PNG | image/png |
IMAGETYPE_SWF | application/x-shockwave-flash |
IMAGETYPE_PSD | image/psd |
IMAGETYPE_BMP | image/bmp |
IMAGETYPE_TIFF_II (intel byte order) | image/tiff |
IMAGETYPE_TIFF_MM (motorola byte order) | image/tiff |
IMAGETYPE_JPC | application/octet-stream |
IMAGETYPE_JP2 | image/jp2 |
IMAGETYPE_JPX | application/octet-stream |
IMAGETYPE_JB2 | application/octet-stream |
IMAGETYPE_SWC | application/x-shockwave-flash |
IMAGETYPE_IFF | image/iff |
IMAGETYPE_WBMP | image/vnd.wap.wbmp |
IMAGETYPE_XBM | image/xbm |
Poznßmka: This function does not require the GD image library.
See also getimagesize(), exif_imagetype(), exif_read_data() and exif_thumbnail().
image2wbmp() creates the WBMP file in filename from the image image. The image argument is the return from imagecreate().
The filename argument is optional, and if left off, the raw image stream will be output directly. By sending an image/vnd.wap.wbmp content-type using header(), you can create a PHP script that outputs WBMP images directly.
Poznßmka: WBMP support is only available if PHP was compiled against GD-1.8 or later.
See also imagewbmp().
imagealphablending() allows for two different modes of drawing on truecolor images. In blending mode, the alpha channel component of the color supplied to all drawing function, such as imagesetpixel() determines how much of the underlying color should be allowed to shine through. As a result, gd automatically blends the existing color at that point with the drawing color, and stores the result in the image. The resulting pixel is opaque. In non-blending mode, the drawing color is copied literally with its alpha channel information, replacing the destination pixel. Blending mode is not available when drawing on palette images. If blendmode is TRUE, then blending mode is enabled, otherwise disabled. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also imagecreatetruecolor().
imagearc() draws a partial ellipse centered at cx, cy (top left is 0, 0) in the image represented by image. W and h specifies the ellipse's width and height respectively while the start and end points are specified in degrees indicated by the s and e arguments. 0░ is located at the three-o'clock position, and the arc is drawn counter-clockwise.
P°φklad 1. Drawing a circle with imagearc()
|
See also imageellipse(), imagefilledellipse(), and imagefilledarc().
imagechar() draws the first character of c in the image identified by image with its upper-left at x,y (top left is 0, 0) with the color color. If font is 1, 2, 3, 4 or 5, a built-in font is used (with higher numbers corresponding to larger fonts).
P°φklad 1. imagechar() example
|
See also imagecharup() and imageloadfont().
imagecharup() draws the character c vertically in the image identified by image at coordinates x, y (top left is 0, 0) with the color color. If font is 1, 2, 3, 4 or 5, a built-in font is used.
P°φklad 1. imagecharup() example
|
See also imagechar() and imageloadfont().
imagecolorallocate() returns a color identifier representing the color composed of the given RGB components. The image argument is the return from the imagecreate() function. red, green and blue are the values of the red, green and blue component of the requested color respectively. These parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF. imagecolorallocate() must be called to create each color that is to be used in the image represented by image.
Poznßmka: The first call to imagecolorallocate() fills the background color.
<?php // sets background to red $background = imagecolorallocate($im, 255, 0, 0); // sets some colors $white = imagecolorallocate($im, 255, 255, 255); $black = imagecolorallocate($im, 0, 0, 0); // hexadecimal way $white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); $black = imagecolorallocate($im, 0x00, 0x00, 0x00); ?> |
Returns -1 if the allocation failed.
See also imagecolorallocatealpha() and imagecolordeallocate().
imagecolorallocatealpha() behaves identically to imagecolorallocate() with the addition of the transparency parameter alpha which may have a value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.
Returns FALSE if the allocation failed.
P°φklad 1. Example of using imagecolorallocatealpha()
|
See also imagecolorallocate() and imagecolordeallocate().
Returns the index of the color of the pixel at the specified location in the image specified by image.
If PHP is compiled against GD library 2.0 or higher and the image is a truecolor image, this function returns the RGB value of that pixel as integer. Use bitshifting and masking to access the distinct red, green and blue component values:
See also imagecolorset() and imagecolorsforindex().
Returns the index of the color in the palette of the image which is "closest" to the specified RGB value.
The "distance" between the desired color and each color in the palette is calculated as if the RGB values represented points in three-dimensional space.
See also imagecolorexact().
(PHP 4 >= 4.0.6)
imagecolorclosestalpha -- Get the index of the closest color to the specified color + alphaReturns the index of the color in the palette of the image which is "closest" to the specified RGB value and alpha level.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1
See also imagecolorexactalpha().
(PHP 4 >= 4.0.1)
imagecolorclosesthwb -- Get the index of the color which has the hue, white and blackness nearest to the given color
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The imagecolordeallocate() function de-allocates a color previously allocated with imagecolorallocate() or imagecolorallocatealpha().
See also imagecolorallocate() and imagecolorallocatealpha().
Returns the index of the specified color in the palette of the image.
If the color does not exist in the image's palette, -1 is returned.
See also imagecolorclosest().
Returns the index of the specified color+alpha in the palette of the image.
If the color does not exist in the image's palette, -1 is returned.
See also imagecolorclosestalpha().
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later
(PHP 4 >= 4.3.0)
imagecolormatch -- Makes the colors of the palette version of an image more closely match the true color versionVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
image1 must be Truecolor, image2 must be Palette, and both image1 and image2 must be the same size.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also imagecreatetruecolor().
(PHP 3>= 3.0.2, PHP 4 )
imagecolorresolve -- Get the index of the specified color or its closest possible alternativeThis function is guaranteed to return a color index for a requested color, either the exact color or the closest possible alternative.
See also imagecolorclosest().
(PHP 4 >= 4.0.6)
imagecolorresolvealpha -- Get the index of the specified color + alpha or its closest possible alternativeThis function is guaranteed to return a color index for a requested color, either the exact color or the closest possible alternative.
See also imagecolorclosestalpha().
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1
This sets the specified index in the palette to the specified color. This is useful for creating flood-fill-like effects in palleted images without the overhead of performing the actual flood-fill.
See also imagecolorat().
This returns an associative array with red, green, blue and alpha keys that contain the appropriate values for the specified color index.
P°φklad 1. imagecolorsforindex() example
This example will output :
|
See also imagecolorat() and imagecolorexact().
This returns the number of colors in the specified image's palette.
See also imagecolorat() and imagecolorsforindex().
imagecolortransparent() sets the transparent color in the image image to color. image is the image identifier returned by imagecreate() and color is a color identifier returned by imagecolorallocate().
Poznßmka: The transparent color is a property of the image, transparency is not a property of the color. Once you have a set a color to be the transparent color, any regions of the image in that color that were drawn previously will be transparent.
The identifier of the new (or current, if none is specified) transparent color is returned.
Copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a width of src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y.
Copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a width of src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y. The two images will be merged according to pct which can range from 0 to 100. When pct = 0, no action is taken, when 100 this function behaves identically to imagecopy().
Poznßmka: This function was added in PHP 4.0.6
imagecopymergegray() copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a width of src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y. The two images will be merged according to pct which can range from 0 to 100. When pct = 0, no action is taken, when 100 this function behaves identically to imagecopy().
This function is identical to imagecopymerge() except that when merging it preserves the hue of the source by converting the destination pixels to gray scale before the copy operation.
Poznßmka: This function was added in PHP 4.0.6
imagecopyresampled() copies a rectangular portion of one image to another image, smoothly interpolating pixel values so that, in particular, reducing the size of an image still retains a great deal of clarity. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. dst_im is the destination image, src_im is the source image identifier. If the source and destination coordinates and width and heights differ, appropriate stretching or shrinking of the image fragment will be performed. The coordinates refer to the upper left corner. This function can be used to copy regions within the same image (if dst_im is the same as src_im) but if the regions overlap the results will be unpredictable.
Poznßmka: There is a problem due to palette image limitations (255+1 colors). Resampling or filtering an image commonly needs more colors than 255, a kind of approximation is used to calculate the new resampled pixel and its color. With a palette image we try to allocate a new color, if that failed, we choose the closest (in theory) computed color. This is not always the closest visual color. That may produce a weird result, like blank (or visually blank) images. To skip this problem, please use a truecolor image as a destination image, such as one created by imagecreatetruecolor().
Poznßmka: imagecopyresampled() requires GD 2.0.l or greater.
See also imagecopyresized().
imagecopyresized() copies a rectangular portion of one image to another image. Dst_im is the destination image, src_im is the source image identifier. If the source and destination coordinates and width and heights differ, appropriate stretching or shrinking of the image fragment will be performed. The coordinates refer to the upper left corner. This function can be used to copy regions within the same image (if dst_im is the same as src_im) but if the regions overlap the results will be unpredictable.
Poznßmka: There is a problem due to palette image limitations (255+1 colors). Resampling or filtering an image commonly needs more colors than 255, a kind of approximation is used to calculate the new resampled pixel and its color. With a palette image we try to allocate a new color, if that failed, we choose the closest (in theory) computed color. This is not always the closest visual color. That may produce a weird result, like blank (or visually blank) images. To skip this problem, please use a truecolor image as a destination image, such as one created by imagecreatetruecolor().
See also imagecopyresampled().
imagecreate() returns an image identifier representing a blank image of size x_size by y_size.
We recommend the use of imagecreatetruecolor().
P°φklad 1. Creating a new GD image stream and outputting an image.
|
See also imagedestroy() and imagecreatetruecolor().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefromgif() returns an image identifier representing the image obtained from the given filename.
imagecreatefromgif() returns an empty string on failure. It also outputs an error message, which unfortunately displays as a broken link in a browser. To ease debugging the following example will produce an error GIF:
P°φklad 1. Example to handle an error during creation (courtesy vic at zymsys dot com)
|
Poznßmka: Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefromjpeg() returns an image identifier representing the image obtained from the given filename.
imagecreatefromjpeg() returns an empty string on failure. It also outputs an error message, which unfortunately displays as a broken link in a browser. To ease debugging the following example will produce an error JPEG:
P°φklad 1. Example to handle an error during creation (courtesy vic at zymsys dot com )
|
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefrompng() returns an image identifier representing the image obtained from the given filename.
imagecreatefrompng() returns an empty string on failure. It also outputs an error message, which unfortunately displays as a broken link in a browser. To ease debugging the following example will produce an error PNG:
P°φklad 1. Example to handle an error during creation (courtesy vic at zymsys dot com)
|
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefromstring() returns an image identifier representing the image obtained from the given string.
imagecreatefromwbmp() returns an image identifier representing the image obtained from the given filename.
imagecreatefromwbmp() returns an empty string on failure. It also outputs an error message, which unfortunately displays as a broken link in a browser. To ease debugging the following example will produce an error WBMP:
P°φklad 1. Example to handle an error during creation (courtesy vic at zymsys dot com)
|
Poznßmka: WBMP support is only available if PHP was compiled against GD-1.8 or later.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefromxbm() returns an image identifier representing the image obtained from the given filename.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatefromxpm() returns an image identifier representing the image obtained from the given filename.
Tip: S touto funkcφ m∙╛ete pou╛φvat URL jako nßzev souboru, pokud je zapnuta volba "fopen wrappers". Vφce detail∙ - viz funkce fopen().
Varovßnφ |
Verze PHP pro Windows star╣φ ne╛ 4.3.0 nepodporuje pro tuto funkci dßlkov² p°φstup k soubor∙m, a to ani kdy╛ je aktivnφ volba allow_url_fopen. |
imagecreatetruecolor() returns an image identifier representing a black image of size x_size by y_size.
P°φklad 1. Creating a new GD image stream and outputting an image.
|
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later.
Poznßmka: This function will not work with GIF file formats.
See also imagedestroy() and imagecreate().
This function is deprecated. Use combination of imagesetstyle() and imageline() instead.
imagedestroy() frees any memory associated with image image. image is the image identifier returned by the imagecreate() function.
imageellipse() draws an ellipse centered at cx, cy (top left is 0, 0) in the image represented by image. W and h specifies the ellipse's width and height respectively. The color of the ellipse is specified by color.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.2 or later which can be obtained at http://www.boutell.com/gd/
P°φklad 1. imageellipse() example
|
See also imagefilledellipse() and imagearc().
imagefill() performs a flood fill starting at coordinate x, y (top left is 0, 0) with color color in the image image.
imagefilledarc() draws a partial ellipse centered at cx, cy (top left is 0, 0) in the image represented by image. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. W and h specifies the ellipse's width and height respectively while the start and end points are specified in degrees indicated by the s and e arguments. style is a bitwise OR of the following possibilities:
IMG_ARC_PIE
IMG_ARC_CHORD
IMG_ARC_NOFILL
IMG_ARC_EDGED
P°φklad 1. Creating a 3D looking pie
|
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1
imagefilledellipse() draws an ellipse centered at cx, cy (top left is 0, 0) in the image represented by image. W and h specifies the ellipse's width and height respectively. The ellipse is filled using color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later
P°φklad 1. imagefilledellipse() example
|
See also imageellipse() and imagefilledarc().
imagefilledpolygon() creates a filled polygon in image image. points is a PHP array containing the polygon's vertices, i.e. points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points is the total number of vertices.
P°φklad 1. imagefilledpolygon() example
|
imagefilledrectangle() creates a filled rectangle of color color in image image starting at upper left coordinates x1, y1 and ending at bottom right coordinates x2, y2. 0, 0 is the top left corner of the image.
imagefilltoborder() performs a flood fill whose border color is defined by border. The starting point for the fill is x, y (top left is 0, 0) and the region is filled with color color.
Returns the pixel height of a character in the specified font.
See also imagefontwidth() and imageloadfont().
Returns the pixel width of a character in font.
See also imagefontheight() and imageloadfont().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The imagegammacorrect() function applies gamma correction to a gd image stream (image) given an input gamma, the parameter inputgamma and an output gamma, the parameter outputgamma.
imagegd2() outputs GD2 image to browser or file.
The optional type parameter is either IMG_GD2_RAW or IMG_GD2_COMPRESSED. Default is IMG_GD2_RAW.
Poznßmka: The optional chunk_size and type parameters became available in PHP 4.3.2.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
imagegif() creates the GIF file in filename from the image image. The image argument is the return from the imagecreate() function.
The image format will be GIF87a unless the image has been made transparent with imagecolortransparent(), in which case the image format will be GIF89a.
The filename argument is optional, and if left off, the raw image stream will be output directly. By sending an image/gif content-type using header(), you can create a PHP script that outputs GIF images directly.
Poznßmka: Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library. Support is expected to return in a version subsequent to the rerelease of GIF support in the GD library in mid 2004. For more information, see the GD Project site.
The following code snippet allows you to write more portable PHP applications by auto-detecting the type of GD support which is available. Replace the sequence header ("Content-type: image/gif"); imagegif ($im); by the more flexible sequence:
<?php if (function_exists("imagegif")) { header("Content-type: image/gif"); imagegif($im); } elseif (function_exists("imagejpeg")) { header("Content-type: image/jpeg"); imagejpeg($im, "", 0.5); } elseif (function_exists("imagepng")) { header("Content-type: image/png"); imagepng($im); } elseif (function_exists("imagewbmp")) { header("Content-type: image/vnd.wap.wbmp"); imagewbmp($im); } else { die("No image support in this PHP server"); } ?>
Poznßmka: As of version 3.0.18 and 4.0.2 you can use the function imagetypes() in place of function_exists() for checking the presence of the various supported image formats:
See also imagepng(), imagewbmp(), imagejpeg() and imagetypes().
imageinterlace() turns the interlace bit on or off. If interlace is 1 the image will be interlaced, and if interlace is 0 the interlace bit is turned off.
If the interlace bit is set and the image is used as a JPEG image, the image is created as a progressive JPEG.
This function returns whether the interlace bit is set for the image.
imageistruecolor() finds whether the image image is a truecolor image.
See also imagecreatetruecolor().
imagejpeg() creates the JPEG file in filename from the image image. The image argument is the return from the imagecreate() function.
The filename argument is optional, and if left off, the raw image stream will be output directly. To skip the filename argument in order to provide a quality argument just use an empty string (''). By sending an image/jpeg content-type using header(), you can create a PHP script that outputs JPEG images directly.
Poznßmka: JPEG support is only available if PHP was compiled against GD-1.8 or later.
quality is optional, and ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default is the default IJG quality value (about 75).
If you want to output Progressive JPEGs, you need to set interlacing on with imageinterlace().
See also imagepng(), imagegif(), imagewbmp(), imageinterlace() and imagetypes().
imageline() draws a line from x1, y1 to x2, y2 (top left is 0, 0) in image image of color color.
P°φklad 1. Drawing a thick line
|
See also imagecreate() and imagecolorallocate().
imageloadfont() loads a user-defined bitmap font and returns an identifier for the font (that is always greater than 5, so it will not conflict with the built-in fonts).
The font file format is currently binary and architecture dependent. This means you should generate the font files on the same type of CPU as the machine you are running PHP on.
Tabulka 1. Font file format
byte position | C data type | description |
---|---|---|
byte 0-3 | int | number of characters in the font |
byte 4-7 | int | value of first character in the font (often 32 for space) |
byte 8-11 | int | pixel width of each character |
byte 12-15 | int | pixel height of each character |
byte 16- | char | array with character data, one byte per pixel in each character, for a total of (nchars*width*height) bytes. |
See also imagefontwidth() and imagefontheight().
imagepalettecopy() copies the palette from the source image to the destination image.
The imagepng() outputs a GD image stream (image) in PNG format to standard output (usually the browser) or, if a filename is given by the filename it outputs the image to the file.
See also imagegif(), imagewbmp(), imagejpeg(), imagetypes().
imagepolygon() creates a polygon in image id. points is a PHP array containing the polygon's vertices, i.e. points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points is the total number of points (vertices).
P°φklad 1. imagepolygon() example
|
See also imagecreate() and imagecreatetruecolor().
(PHP 3>= 3.0.9, PHP 4 )
imagepsbbox -- Give the bounding box of a text rectangle using PostScript Type1 fontssize is expressed in pixels.
space allows you to change the default value of a space in a font. This amount is added to the normal value and can also be negative.
tightness allows you to control the amount of white space between characters. This amount is added to the normal character width and can also be negative.
angle is in degrees.
Parameters space and tightness are expressed in character space units, where 1 unit is 1/1000th of an em-square.
Parameters space, tightness, and angle are optional.
The bounding box is calculated using information available from character metrics, and unfortunately tends to differ slightly from the results achieved by actually rasterizing the text. If the angle is 0 degrees, you can expect the text to need 1 pixel more to every direction.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
This function returns an array containing the following elements:
See also imagepstext().
(PHP 3>= 3.0.9, PHP 4 )
imagepscopyfont -- Make a copy of an already loaded font for further modificationUse this function if you need make further modifications to the font, for example extending/condensing, slanting it or changing it's character encoding vector, but need to keep the original along as well. Note that the font you want to copy must be one obtained using imagepsloadfont(), not a font that is itself a copied one. You can although make modifications to it before copying.
If you use this function, you must free the fonts obtained this way yourself and in reverse order. Otherwise your script will hang.
In the case everything went right, a valid font index will be returned and can be used for further purposes. Otherwise the function returns FALSE and prints a message describing what went wrong.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
See also imagepsloadfont().
Loads a character encoding vector from a file and changes the fonts encoding vector to it. As a PostScript fonts default vector lacks most of the character positions above 127, you'll definitely want to change this if you use an other language than English. The exact format of this file is described in T1libs documentation. T1lib comes with two ready-to-use files, IsoLatin1.enc and IsoLatin2.enc.
If you find yourself using this function all the time, a much better way to define the encoding is to set ps.default_encoding in the configuration file to point to the right encoding file and all fonts you load will automatically have the right encoding.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
Extend or condense a font (font_index), if the value of the extend parameter is less than one you will be condensing the font.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
imagepsfreefont() frees memory used by a PostScript Type 1 font.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
See also imagepsloadfont().
In the case everything went right, a valid font index will be returned and can be used for further purposes. Otherwise the function returns FALSE and prints a message describing what went wrong, which you cannot read directly, while the output type is image.
P°φklad 1. imagepsloadfont() example
|
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
See also imagepsfreefont().
Slant a font given by the font_index parameter with a slant of the value of the slant parameter.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
(PHP 3>= 3.0.9, PHP 4 )
imagepstext -- To draw a text string over an image using PostScript Type1 fontsforeground is the color in which the text will be painted. Background is the color to which the text will try to fade in with antialiasing. No pixels with the color background are actually painted, so the background image does not need to be of solid color.
The coordinates given by x, y will define the origin (or reference point) of the first character (roughly the lower-left corner of the character). This is different from the imagestring(), where x, y define the upper-right corner of the first character. Refer to PostScript documentation about fonts and their measuring system if you have trouble understanding how this works.
space allows you to change the default value of a space in a font. This amount is added to the normal value and can also be negative.
tightness allows you to control the amount of white space between characters. This amount is added to the normal character width and can also be negative.
angle is in degrees.
size is expressed in pixels.
antialias_steps allows you to control the number of colours used for antialiasing text. Allowed values are 4 and 16. The higher value is recommended for text sizes lower than 20, where the effect in text quality is quite visible. With bigger sizes, use 4. It's less computationally intensive.
Parameters space and tightness are expressed in character space units, where 1 unit is 1/1000th of an em-square.
Parameters space, tightness, angle and antialias_steps are optional.
Poznßmka: Tato funkce je k dispozici pouze v p°φpad∞, ╛e PHP bylo zkompilovßno s p°epφnaΦem --enable-t1lib.
This function returns an array containing the following elements:
See also imagepsbbox().
imagerectangle() creates a rectangle of color col in image image starting at upper left coordinate x1, y1 and ending at bottom right coordinate x2, y2. 0, 0 is the top left corner of the image.
Rotates the src_im image using a given angle in degree. bgd_color specifies the color of the uncovered zone after the rotation.
(PHP 4 >= 4.3.2)
imagesavealpha -- Set the flag to save full alpha channel information (as opposed to single-color transparency) when saving PNG images.imagesavealpha() sets the flag to attempt to save full alpha channel information (as opposed to single-color transparency) when saving PNG images.
You have to unset alphablending (imagealphablending($im, FALSE)), to use it.
Alpha channel is not supported by all browsers, if you have problem with your browser, try to load your script with an alpha channel compliant browser, e.g. latest Mozilla.
See also imagealphablending().
imagesetbrush() sets the brush image to be used by all line drawing functions (such as imageline() and imagepolygon()) when drawing with the special colors IMG_COLOR_BRUSHED or IMG_COLOR_STYLEDBRUSHED.
Poznßmka: You need not take special action when you are finished with a brush, but if you destroy the brush image, you must not use the IMG_COLOR_BRUSHED or IMG_COLOR_STYLEDBRUSHED colors until you have set a new brush image!
Poznßmka: This function was added in PHP 4.0.6
imagesetpixel() draws a pixel at x, y (top left is 0, 0) in image image of color color.
See also imagecreate() and imagecolorallocate().
imagesetstyle() sets the style to be used by all line drawing functions (such as imageline() and imagepolygon()) when drawing with the special color IMG_COLOR_STYLED or lines of images with color IMG_COLOR_STYLEDBRUSHED. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The style parameter is an array of pixels. Following example script draws a dashed line from upper left to lower right corner of the canvas:
P°φklad 1. imagesetstyle() example
|
See also imagesetbrush(), imageline().
Poznßmka: This function was added in PHP 4.0.6
imagesetthickness() sets the thickness of the lines drawn when drawing rectangles, polygons, ellipses etc. etc. to thickness pixels. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later
imagesettile() sets the tile image to be used by all region filling functions (such as imagefill() and imagefilledpolygon()) when filling with the special color IMG_COLOR_TILED.
A tile is an image used to fill an area with a repeated pattern. Any GD image can be used as a tile, and by setting the transparent color index of the tile image with imagecolortransparent(), a tile allows certain parts of the underlying area to shine through can be created.
Poznßmka: You need not take special action when you are finished with a tile, but if you destroy the tile image, you must not use the IMG_COLOR_TILED color until you have set a new tile image!
imagestring() draws the string s in the image identified by image at coordinates x, y (top left is 0, 0) in color col. If font is 1, 2, 3, 4 or 5, a built-in font is used.
P°φklad 1. imagestring() example
|
See also imageloadfont().
imagestringup() draws the string s vertically in the image identified by image at coordinates x, y (top left is 0, 0) in color col. If font is 1, 2, 3, 4 or 5, a built-in font is used.
See also imageloadfont().
imagesx() returns the width of the image identified by image.
See also imagecreate(), getimagesize() and imagesy().
imagesy() returns the height of the image identified by image.
See also imagecreate(), getimagesize() and imagesx().
imagetruecolortopalette() converts a truecolor image to a palette image. The code for this function was originally drawn from the Independent JPEG Group library code, which is excellent. The code has been modified to preserve as much alpha channel information as possible in the resulting palette, in addition to preserving colors as well as possible. This does not work as well as might be hoped. It is usually best to simply produce a truecolor output image instead, which guarantees the highest output quality.
dither indicates if the image should be dithered - if it is TRUE then dithering will be used which will result in a more speckled image but with better color approximation.
ncolors sets the maximum number of colors that should be retained in the palette.
Poznßmka: This function was added in PHP 4.0.6 and requires GD 2.0.1 or later
This function calculates and returns the bounding box in pixels for a TrueType text.
The string to be measured.
The font size in pixels.
The name of the TrueType font file. (Can also be an URL.) Depending on which version of the GD library that PHP is using, it may attempt to search for files that do not begin with a leading '/' by appending '.ttf' to the filename and searching along a library-defined font path.
Angle in degrees in which text will be measured.
0 | lower left corner, X position |
1 | lower left corner, Y position |
2 | lower right corner, X position |
3 | lower right corner, Y position |
4 | upper right corner, X position |
5 | upper right corner, Y position |
6 | upper left corner, X position |
7 | upper left corner, Y position |
This function requires both the GD library and the FreeType library.
See also imagettftext().
imagettftext() draws the string text in the image identified by image, starting at coordinates x, y (top left is 0, 0), at an angle of angle in color color, using the TrueType font file identified by fontfile. Depending on which version of the GD library that PHP is using, when fontfile does not begin with a leading '/', '.ttf' will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.
The coordinates given by x, y will define the basepoint of the first character (roughly the lower-left corner of the character). This is different from the imagestring(), where x, y define the upper-right corner of the first character.
angle is in degrees, with 0 degrees being left-to-right reading text (3 o'clock direction), and higher values representing a counter-clockwise rotation. (i.e., a value of 90 would result in bottom-to-top reading text).
fontfile is the path to the TrueType font you wish to use.
text is the text string which may include UTF-8 character sequences (of the form: {) to access characters in a font beyond the first 255.
color is the color index. Using the negative of a color index has the effect of turning off antialiasing.
imagettftext() returns an array with 8 elements representing four points making the bounding box of the text. The order of the points is lower left, lower right, upper right, upper left. The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner when you see the text horizontally.
This example script will produce a black JPEG 400x30 pixels, with the words "Testing..." in white in the font Arial.
P°φklad 1. imagettftext() example
|
This function requires both the GD library and the FreeType library.
See also imagettfbbox().
This function returns a bit-field corresponding to the image formats supported by the version of GD linked into PHP. The following bits are returned, IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP. To check for PNG support, for example, do this:
imagewbmp() creates the WBMP file in filename from the image image. The image argument is the return from the imagecreate() function.
The filename argument is optional, and if left off, the raw image stream will be output directly. By sending an image/vnd.wap.wbmp content-type using header(), you can create a PHP script that outputs WBMP images directly.
Poznßmka: WBMP support is only available if PHP was compiled against GD-1.8 or later.
Using the optional foreground parameter, you can set the foreground color. Use an identifier obtained from imagecolorallocate(). The default foreground color is black.
See also image2wbmp(), imagepng(), imagegif(), imagejpeg(), imagetypes().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 3>= 3.0.6, PHP 4 )
iptcparse -- Parsuje binßrnφ IPTC http://www.iptc.org/ blok do jednotliv²ch tag∙.Tato funkce parsuje binßrnφ IPTC blok do jeho jednotliv²ch tag∙. Vracφ pole, kterΘ pou╛φvß tagmarker jako index, a jeho hodnotu jako hodnotu. Vracφ FALSE p°i chyb∞, nebo pokud nenajde ╛ßdnß IPTC data. P°φklad viz GetImageSize().
Converts the jpegname JPEG file to WBMP format, and saves it as wbmpname. With the d_height and d_width you specify the height and width of the destination image.
Poznßmka: WBMP support is only available if PHP was compiled against GD-1.8 or later.
See also png2wbmp().
Converts the pngname PNG file to WBMP format, and saves it as wbmpname. With the d_height and d_width you specify the height and width of the destination image.
Poznßmka: WBMP support is only available if PHP was compiled against GD-1.8 or later.
See also jpeg2wbmp().
These functions are not limited to the IMAP protocol, despite their name. The underlying c-client library also supports NNTP, POP3 and local mailbox access methods.
This extension requires the c-client library to be installed. Grab the latest version from ftp://ftp.cac.washington.edu/imap/ and compile it.
It's important that you do not copy the IMAP source files directly into the system include directory as there may be conflicts. Instead, create a new directory inside the system include directory, such as /usr/local/imap-2000b/ (location and name depend on your setup and IMAP version), and inside this new directory create additional directories named lib/ and include/. From the c-client directory from your IMAP source tree, copy all the *.h files into include/ and all the *.c files into lib/. Additionally when you compiled IMAP, a file named c-client.a was created. Also put this in the lib/ directory but rename it as libc-client.a.
Poznßmka: To build the c-client library with SSL or/and Kerberos support read the docs supplied with the package.
To get these functions to work, you have to compile PHP with --with-imap[=DIR], where DIR is the c-client install prefix. From our example above, you would use --with-imap=/usr/local/imap-2000b. This location depends on where you created this directory according to the description above. Windows users may include the php_imap.dll DLL in php.ini
Poznßmka: Depending how the c-client was configured, you might also need to add --with-imap-ssl=/path/to/openssl/ and/or --with-kerberos=/path/to/kerberos into the PHP configure line.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
This document can't go into detail on all the topics touched by the provided functions. Further information is provided by the documentation of the c-client library source (docs/internal.txt). and the following RFC documents:
RFC2821: Simple Mail Transfer Protocol (SMTP).
RFC2822: Standard for ARPA internet text messages.
RFC2060: Internet Message Access Protocol (IMAP) Version 4rev1.
RFC1939: Post Office Protocol Version 3 (POP3).
RFC977: Network News Transfer Protocol (NNTP).
RFC2076: Common Internet Message Headers.
RFC2045 , RFC2046 , RFC2047 , RFC2048 & RFC2049: Multipurpose Internet Mail Extensions (MIME).
Convert an 8bit string to a quoted-printable string (according to RFC2045, section 6.7).
Returns a quoted-printable string.
See also imap_qprint().
(PHP 3>= 3.0.12, PHP 4 )
imap_alerts -- This function returns all IMAP alert messages (if any) that have occurred during this page request or since the alert stack was resetThis function returns an array of all of the IMAP alert messages generated since the last imap_alerts() call, or the beginning of the page. When imap_alerts() is called, the alert stack is subsequently cleared. The IMAP specification requires that these messages be passed to the user.
imap_append() appends a string message to the specified mailbox mbox. If the optional options is specified, writes the options to that mailbox also.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
When talking to the Cyrus IMAP server, you must use "\r\n" as your end-of-line terminator instead of "\n" or the operation will fail.
P°φklad 1. imap_append() example
|
imap_base64() function decodes BASE-64 encoded text (see RFC2045, Section 6.8). The decoded message is returned as a string.
See also imap_binary(), base64_encode() and base64_decode().
Convert an 8bit string to a base64 string (according to RFC2045, Section 6.8).
Returns a base64 string.
See also imap_base64().
imap_body() returns the body of the message, numbered msg_number in the current mailbox. The optional flags are a bit mask with one or more of the following:
FT_UID - The msgno is a UID
FT_PEEK - Do not set the \Seen flag if not already set
FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.
imap_body() will only return a verbatim copy of the message body. To extract single parts of a multipart MIME-encoded message you have to use imap_fetchstructure() to analyze its structure and imap_fetchbody() to extract a copy of a single body component.
(PHP 3>= 3.0.4, PHP 4 )
imap_bodystruct -- Read the structure of a specified body section of a specific message
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns information about the current mailbox. Returns FALSE on failure.
The imap_check() function checks the current mailbox status on the server and returns the information in an object with following properties:
Date - current system time formatted according to RFC822
Driver - protocol used to access this mailbox: POP3, IMAP, NNTP
Mailbox - the mailbox name
Nmsgs - number of messages in the mailbox
Recent - number of recent messages in the mailbox
P°φklad 1. imap_check() example
this will output :
|
This function causes a store to delete the specified flag to the flags set for the messages in the specified sequence. The flags which you can unset are "\\Seen", "\\Answered", "\\Flagged", "\\Deleted", and "\\Draft" (as defined by RFC2060).
The options are a bit mask with one or more of the following:
Closes the imap stream. Takes an optional flag CL_EXPUNGE, which will silently expunge the mailbox before closing, removing all messages marked for deletion.
imap_createmailbox() creates a new mailbox specified by mbox. Names containing international characters should be encoded by imap_utf7_encode()
Returns TRUE on success and FALSE on error.
See also imap_renamemailbox(), imap_deletemailbox() and imap_open() for the format of mbox names.
P°φklad 1. imap_createmailbox() example
|
Returns TRUE.
imap_delete() marks messages listed in msg_number for deletion. The optional flags parameter only has a single option, FT_UID, which tells the function to treat the msg_number argument as a UID. Messages marked for deletion will stay in the mailbox until either imap_expunge() is called or imap_close() is called with the optional parameter CL_EXPUNGE.
Poznßmka: POP3 mailboxes do not have their message flags saved between connections, so imap_expunge() must be called during the same connection in order for messages marked for deletion to actually be purged.
P°φklad 1. imap_delete() example
|
imap_deletemailbox() deletes the specified mailbox (see imap_open() for the format of mbox names).
Returns TRUE on success and FALSE on error.
See also imap_createmailbox(), imap_renamemailbox(), and imap_open() for the format of mbox.
(PHP 3>= 3.0.12, PHP 4 )
imap_errors -- This function returns all of the IMAP errors (if any) that have occurred during this page request or since the error stack was reset.This function returns an array of all of the IMAP error messages generated since the last imap_errors() call, or the beginning of the page. When imap_errors() is called, the error stack is subsequently cleared.
imap_expunge() deletes all the messages marked for deletion by imap_delete(), imap_mail_move(), or imap_setflag_full().
Returns TRUE.
(PHP 3>= 3.0.4, PHP 4 )
imap_fetch_overview -- Read an overview of the information in the headers of the given messageThis function fetches mail headers for the given sequence and returns an overview of their contents. sequence will contain a sequence of message indices or UIDs, if flags contains FT_UID. The returned value is an array of objects describing one message header each:
subject - the messages subject
from - who sent it
date - when was it sent
message_id - Message-ID
references - is a reference to this message id
size - size in bytes
uid - UID the message has in the mailbox
msgno - message sequence number in the maibox
recent - this message is flagged as recent
flagged - this message is flagged
answered - this message is flagged as answered
deleted - this message is flagged for deletion
seen - this message is flagged as already read
draft - this message is flagged as being a draft
P°φklad 1. imap_fetch_overview() example
|
This function causes a fetch of a particular section of the body of the specified messages as a text string and returns that text string. The section specification is a string of integers delimited by period which index into a body part list as per the IMAP4 specification. Body parts are not decoded by this function.
The options for imap_fetchbody() is a bitmask with one or more of the following:
FT_UID - The msg_number is a UID
FT_PEEK - Do not set the \Seen flag if not already set
FT_INTERNAL - The return string is in "internal" format, without any attempt to canonicalize CRLF.
See also: imap_fetchstructure().
This function causes a fetch of the complete, unfiltered RFC2822 format header of the specified message as a text string and returns that text string.
The options are:
FT_UID The msgno argument is a UID
FT_INTERNAL The return string is in "internal" format,
without any attempt to canonicalize to CRLF
newlines
FT_PREFETCHTEXT The RFC822.TEXT should be pre-fetched at the
same time. This avoids an extra RTT on an
IMAP connection if a full message text is
desired (e.g. in a "save to local file"
operation)
This function fetches all the structured information for a given message. The optional flags parameter only has a single option, FT_UID, which tells the function to treat the msg_number argument as a UID. The returned object includes the envelope, internal date, size, flags and body structure along with a similar object for each mime attachment. The structure of the returned objects is as follows:
Tabulka 1. Returned Objects for imap_fetchstructure()
type | Primary body type |
encoding | Body transfer encoding |
ifsubtype | TRUE if there is a subtype string |
subtype | MIME subtype |
ifdescription | TRUE if there is a description string |
description | Content description string |
ifid | TRUE if there is an identification string |
id | Identification string |
lines | Number of lines |
bytes | Number of bytes |
ifdisposition | TRUE if there is a disposition string |
disposition | Disposition string |
ifdparameters | TRUE if the dparameters array exists |
dparameters | An array of objects where each object has an "attribute" and a "value" property corresponding to the parameters on the Content-disposition MIMEheader. |
ifparameters | TRUE if the parameters array exists |
parameters | An array of objects where each object has an "attribute" and a "value" property. |
parts | An array of objects identical in structure to the top-level object, each of which corresponds to a MIME body part. |
See also: imap_fetchbody().
Returns an array with integer values limit and usage for the given mailbox. The value of limit represents the total amount of space allowed for this mailbox. The usage value represents the mailboxes current level of capacity. Will return FALSE in the case of failure.
This function is currently only available to users of the c-client2000 or greater library.
NOTE: For this function to work, the mail stream is required to be opened as the mail-admin user. For a non-admin user version of this function, please see the imap_get_quotaroot() function of PHP.
imap_stream should be the value returned from an imap_open() call. NOTE: This stream is required to be opened as the mail admin user for the get_quota function to work. quota_root should normally be in the form of user.name where name is the mailbox you wish to retrieve information about.
P°φklad 1. imap_get_quota() example
|
As of PHP version 4.3, the function more properly reflects the functionality as dictated by the RFC 2087. The array return value has changed to support an unlimited number of returned resources (i.e. messages, or sub-folders) with each named resource receiving an individual array key. Each key value then contains an another array with the usage and limit values within it. The example below shows the updated returned output.
For backwards compatibility reasons, the originial access methods are still available for use, although it is suggested to update.
P°φklad 2. imap_get_quota() 4.3 or greater example
|
See also imap_open(), imap_set_quota() and imap_get_quotaroot().
Returns an array of integer values pertaining to the specified user mailbox. All values contain a key based upon the resource name, and a corresponding array with the usage and limit values within.
The limit value represents the total amount of space allowed for this user's total mailbox usage. The usage value represents the user's current total mailbox capacity. This function will return FALSE in the case of call failure, and an array of information about the connection upon an un-parsable response from the server.
This function is currently only available to users of the c-client2000 or greater library.
imap_stream should be the value returned from an imap_open() call. This stream should be opened as the user whose mailbox you wish to check. quota_root should normally be in the form of which mailbox (i.e. INBOX).
P°φklad 1. imap_get_quotaroot() example
|
See also imap_open(), imap_set_quota() and imap_get_quota().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 3>= 3.0.12, PHP 4 )
imap_getmailboxes -- Read the list of mailboxes, returning detailed information on each oneReturns an array of objects containing mailbox information. Each object has the attributes name, specifying the full name of the mailbox; delimiter, which is the hierarchy delimiter for the part of the hierarchy this mailbox is in; and attributes. Attributes is a bitmask that can be tested against:
LATT_NOINFERIORS - This mailbox has no "children" (there are no mailboxes below this one).
LATT_NOSELECT - This is only a container, not a mailbox - you cannot open it.
LATT_MARKED - This mailbox is marked. Only used by UW-IMAPD.
LATT_UNMARKED - This mailbox is not marked. Only used by UW-IMAPD.
Mailbox names containing international Characters outside the printable ASCII range will be encoded and may be decoded by imap_utf7_decode().
ref should normally be just the server specification as described in imap_open(), and pattern specifies where in the mailbox hierarchy to start searching. If you want all mailboxes, pass '*' for pattern.
There are two special characters you can pass as part of the pattern: '*' and '%'. '*' means to return all mailboxes. If you pass pattern as '*', you will get a list of the entire mailbox hierarchy. '%' means to return the current level only. '%' as the pattern parameter will return only the top level mailboxes; '~/mail/%' on UW_IMAPD will return every mailbox in the ~/mail directory, but none in subfolders of that directory.
P°φklad 1. imap_getmailboxes() example
|
See also imap_getsubscribed().
This function is identical to imap_getmailboxes(), except that it only returns mailboxes that the user is subscribed to.
This function returns an object of various header elements.
remail, date, Date, subject, Subject, in_reply_to, message_id,
newsgroups, followup_to, references
message flags:
Recent - 'R' if recent and seen,
'N' if recent and not seen,
' ' if not recent
Unseen - 'U' if not seen AND not recent,
' ' if seen OR not seen and recent
Answered -'A' if answered,
' ' if unanswered
Deleted - 'D' if deleted,
' ' if not deleted
Draft - 'X' if draft,
' ' if not draft
Flagged - 'F' if flagged,
' ' if not flagged
NOTE that the Recent/Unseen behavior is a little odd. If you want to
know if a message is Unseen, you must check for
Unseen == 'U' || Recent == 'N'
toaddress (full to: line, up to 1024 characters)
to[] (returns an array of objects from the To line, containing):
personal
adl
mailbox
host
fromaddress (full from: line, up to 1024 characters)
from[] (returns an array of objects from the From line, containing):
personal
adl
mailbox
host
ccaddress (full cc: line, up to 1024 characters)
cc[] (returns an array of objects from the Cc line, containing):
personal
adl
mailbox
host
bccaddress (full bcc line, up to 1024 characters)
bcc[] (returns an array of objects from the Bcc line, containing):
personal
adl
mailbox
host
reply_toaddress (full reply_to: line, up to 1024 characters)
reply_to[] (returns an array of objects from the Reply_to line,
containing):
personal
adl
mailbox
host
senderaddress (full sender: line, up to 1024 characters)
sender[] (returns an array of objects from the sender line, containing):
personal
adl
mailbox
host
return_path (full return-path: line, up to 1024 characters)
return_path[] (returns an array of objects from the return_path line,
containing):
personal
adl
mailbox
host
udate (mail message date in unix time)
fetchfrom (from line formatted to fit fromlength
characters)
fetchsubject (subject line formatted to fit subjectlength characters)
Returns an array of string formatted with header info. One element per mail message.
(PHP 3>= 3.0.12, PHP 4 )
imap_last_error -- This function returns the last IMAP error (if any) that occurred during this page requestThis function returns the full text of the last IMAP error message that occurred on the current page. The error stack is untouched; calling imap_last_error() subsequently, with no intervening errors, will return the same error.
Returns an array containing the names of the mailboxes. See imap_getmailboxes() for a description of ref and pattern.
P°φklad 1. imap_list() example
|
(no version information, might be only in CVS)
imap_listscan -- Read the list of mailboxes, takes a string to search for in the text of the mailboxReturns an array containing the names of the mailboxes that have content in the text of the mailbox. This function is similar to imap_listmailbox(), but it will additionally check for the presence of the string content inside the mailbox data. See imap_getmailboxes() for a description of ref and pattern.
Returns an array of all the mailboxes that you have subscribed.
(PHP 3>= 3.0.5, PHP 4 )
imap_mail_compose -- Create a MIME message based on given envelope and body sections
P°φklad 1. imap_mail_compose() example
|
Returns TRUE on success and FALSE on error.
Copies mail messages specified by msglist to specified mailbox. msglist is a range not just message numbers (as described in RFC2060).
Flags is a bitmask of one or more of
CP_UID - the sequence numbers contain UIDS
CP_MOVE - Delete the messages from the current mailbox after copying
Moves mail messages specified by msglist to specified mailbox mbox. msglist is a range not just message numbers (as described in RFC2060).
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
options is a bitmask and may contain the single option
CP_UID - the sequence numbers contain UIDS
This function allows sending of emails with correct handling of Cc and Bcc receivers. The parameters to, cc and bcc are all strings and are all parsed as rfc822 address lists. The receivers specified in bcc will get the mail, but are excluded from the headers. Use the rpath parameter to specify return path. This is useful when using PHP as a mail client for multiple users.
Returns information about the current mailbox. Returns FALSE on failure.
The imap_mailboxmsginfo() function checks the current mailbox status on the server. It is similar to imap_status(), but will additionally sum up the size of all messages in the mailbox, which will take some additional time to execute. It returns the information in an object with following properties.
Tabulka 1. Mailbox properties
Date | date of last change |
Driver | driver |
Mailbox | name of the mailbox |
Nmsgs | number of messages |
Recent | number of recent messages |
Unread | number of unread messages |
Deleted | number of deleted messages |
Size | mailbox size |
P°φklad 1. imap_mailboxmsginfo() example
|
imap_mime_header_decode() function decodes MIME message header extensions that are non ASCII text (see RFC2047) The decoded elements are returned in an array of objects, where each object has two properties, "charset" & "text". If the element hasn't been encoded, and in other words is in plain US-ASCII,the "charset" property of that element is set to "default".
In the above example we would have two elements, whereas the first element had previously been encoded with ISO-8859-1, and the second element would be plain US-ASCII.
(PHP 3>= 3.0.3, PHP 4 )
imap_msgno -- This function returns the message sequence number for the given UIDThis function returns the message sequence number for the given UID. It is the inverse of imap_uid().
Return the number of messages in the current mailbox.
See also: imap_num_recent() and imap_status().
Returns the number of recent messages in the current mailbox.
See also: imap_num_msg() and imap_status().
Returns an IMAP stream on success and FALSE on error. This function can also be used to open streams to POP3 and NNTP servers, but some functions and features are only available on IMAP servers.
A mailbox name consists of a server part and a mailbox path on this server. The special name INBOX stands for the current users personal mailbox. The server part, which is enclosed in '{' and '}', consists of the servers name or ip address, an optional port (prefixed by ':'), and an optional protocol specification (prefixed by '/'). The server part is mandatory in all mailbox parameters. Mailbox names that contain international characters besides those in the printable ASCII space have to be encoded with imap_utf7_encode().
The options are a bit mask with one or more of the following:
OP_READONLY - Open mailbox read-only
OP_ANONYMOUS - Don't use or update a .newsrc for news (NNTP only)
OP_HALFOPEN - For IMAP and NNTP names, open a connection but don't open a mailbox
CL_EXPUNGE - Expunge mailbox automatically upon mailbox close
To connect to an IMAP server running on port 143 on the local machine, do the following:
To connect to a POP3 server on port 110 on the local server, use: To connect to an SSL IMAP or POP3 server, add /ssl after the protocol specification: To connect to an SSL IMAP or POP3 server with a self-signed certificate, add /ssl/novalidate-cert after the protocol specification: To connect to an NNTP server on port 119 on the local server, use: To connect to a remote server replace "localhost" with the name or the IP address of the server you want to connect to.
P°φklad 1. imap_open() example
|
Returns TRUE if the stream is still alive, FALSE otherwise.
imap_ping() function pings the stream to see it is still active. It may discover new mail; this is the preferred method for a periodic "new mail check" as well as a "keep alive" for servers which have inactivity timeout. (As PHP scripts do not tend to run that long, I can hardly imagine that this function will be useful to anyone.)
Convert a quoted-printable string to an 8 bit string (according to RFC2045, section 6.7).
Returns an 8 bit (binary) string.
See also imap_8bit().
This function renames on old mailbox to new mailbox (see imap_open() for the format of mbox names).
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also imap_createmailbox(), imap_deletemailbox(), and imap_open() for the format of mbox.
This function reopens the specified stream to a new mailbox on an IMAP or NNTP server.
The options are a bit mask with one or more of the following:
OP_READONLY - Open mailbox read-only
OP_ANONYMOUS - Don't use or update a .newsrc for news (NNTP only)
OP_HALFOPEN - For IMAP and NNTP names, open a connection but don't open a mailbox.
CL_EXPUNGE - Expunge mailbox automatically upon mailbox close (see also imap_delete() and imap_expunge())
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function parses the address string as defined in RFC2822 and for each address, returns an array of objects. The objects properties are:
mailbox - the mailbox name (username)
host - the host name
personal - the personal name
adl - at domain source route
P°φklad 1. imap_rfc822_parse_adrlist() example
|
This function returns an object of various header elements, similar to imap_header(), except without the flags and other elements that come from the IMAP server.
(PHP 3>= 3.0.2, PHP 4 )
imap_rfc822_write_address -- Returns a properly formatted email address given the mailbox, host, and personal info.Returns a properly formatted email address as defined in RFC2822 given the mailbox, host, and personal info.
(PHP 3>= 3.0.12, PHP 4 )
imap_search -- This function returns an array of messages matching the given search criteriaThis function performs a search on the mailbox currently opened in the given imap stream. criteria is a string, delimited by spaces, in which the following keywords are allowed. Any multi-word arguments (e.g. FROM "joey smith") must be quoted.
ALL - return all messages matching the rest of the criteria
ANSWERED - match messages with the \\ANSWERED flag set
BCC "string" - match messages with "string" in the Bcc: field
BEFORE "date" - match messages with Date: before "date"
BODY "string" - match messages with "string" in the body of the message
CC "string" - match messages with "string" in the Cc: field
DELETED - match deleted messages
FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
FROM "string" - match messages with "string" in the From: field
KEYWORD "string" - match messages with "string" as a keyword
NEW - match new messages
OLD - match old messages
ON "date" - match messages with Date: matching "date"
RECENT - match messages with the \\RECENT flag set
SEEN - match messages that have been read (the \\SEEN flag is set)
SINCE "date" - match messages with Date: after "date"
SUBJECT "string" - match messages with "string" in the Subject:
TEXT "string" - match messages with text "string"
TO "string" - match messages with "string" in the To:
UNANSWERED - match messages that have not been answered
UNDELETED - match messages that are not deleted
UNFLAGGED - match messages that are not flagged
UNKEYWORD "string" - match messages that do not have the keyword "string"
UNSEEN - match messages which have not been read yet
For example, to match all unanswered messages sent by Mom, you'd use: "UNANSWERED FROM mom". Searches appear to be case insensitive. This list of criteria is from a reading of the UW c-client source code and may be incomplete or inaccurate (see also RFC2060, section 6.4.4).
Valid values for flags are SE_UID, which causes the returned array to contain UIDs instead of messages sequence numbers.
Sets an upper limit quota on a per mailbox basis. This function requires the imap_stream to have been opened as the mail administrator account. It will not work if opened as any other user.
This function is currently only available to users of the c-client2000 or greater library.
imap_stream is the stream pointer returned from a imap_open() call. This stream must be opened as the mail administrator, other wise this function will fail. quota_root is the mailbox to have a quota set. This should follow the IMAP standard format for a mailbox, 'user.name'. quota_limit is the maximum size (in KB) for the quota_root.
Returns TRUE on success and FALSE on error.
See also imap_open() and imap_set_quota().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
This function causes a store to add the specified flag to the flags set for the messages in the specified sequence.
The flags which you can set are "\\Seen", "\\Answered", "\\Flagged", "\\Deleted", and "\\Draft" (as defined by RFC2060).
The options are a bit mask with one or more of the following:
Returns an array of message numbers sorted by the given parameters.
Reverse is 1 for reverse-sorting.
Criteria can be one (and only one) of the following:
SORTDATE message Date
SORTARRIVAL arrival date
SORTFROM mailbox in first From address
SORTSUBJECT message Subject
SORTTO mailbox in first To address
SORTCC mailbox in first cc address
SORTSIZE size of message in octets
The flags are a bitmask of one or more of the following:
(PHP 3>= 3.0.4, PHP 4 )
imap_status -- This function returns status information on a mailbox other than the current oneThis function returns an object containing status information. Valid flags are:
SA_MESSAGES - set status->messages to the number of messages in the mailbox
SA_RECENT - set status->recent to the number of recent messages in the mailbox
SA_UNSEEN - set status->unseen to the number of unseen (new) messages in the mailbox
SA_UIDNEXT - set status->uidnext to the next uid to be used in the mailbox
SA_UIDVALIDITY - set status->uidvalidity to a constant that changes when uids for the mailbox may no longer be valid
SA_ALL - set all of the above
status->flags is also set, which contains a bitmask which can be checked against any of the above constants.
P°φklad 1. imap_status() example
|
Subscribe to a new mailbox.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 3>= 3.0.3, PHP 4 )
imap_uid -- This function returns the UID for the given message sequence numberThis function returns the UID for the given message sequence number. An UID is an unique identifier that will not change over time while a message sequence number may change whenever the content of the mailbox changes. This function is the inverse of imap_msgno().
Poznßmka: This is not supported by POP3 mailboxes.
This function removes the deletion flag for a specified message, which is set by imap_delete() or imap_mail_move().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Unsubscribe from a specified mailbox.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Decodes modified UTF-7 text into ISO-8859-1 string.
Returns a string that is encoded in ISO-8859-1 and consists of the same sequence of characters in text, or FALSE if text contains invalid modified UTF-7 sequence or text contains a character that is not part of ISO-8859-1 character set. This function is needed to decode mailbox names that contain certain characters which are not in range of printable ASCII characters. The modified UTF-7 encoding is defined in RFC 2060, section 5.1.3 (original UTF-7 was defined in RFC1642).
Converts data to modified UTF-7 text. This is needed to encode mailbox names that contain certain characters which are not in range of printable ASCII characters. Note that data is expected to be encoded in ISO-8859-1. The modified UTF-7 encoding is defined in RFC 2060, section 5.1.3 (original UTF-7 was defined in RFC1642).
Returns the modified UTF-7 text.
The Informix driver for Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x and IDS 2000 is implemented in "ifx.ec" and "php3_ifx.h" in the informix extension directory. IDS 7.x support is fairly complete, with full support for BYTE and TEXT columns. IUS 9.x support is partly finished: the new data types are there, but SLOB and CLOB support is still under construction.
Configuration notes: You need a version of ESQL/C to compile the PHP Informix driver. ESQL/C versions from 7.2x on should be OK. ESQL/C is now part of the Informix Client SDK.
Make sure that the "INFORMIXDIR" variable has been set, and that $INFORMIXDIR/bin is in your PATH before you run the "configure" script.
To be able to use the functions defined in this module you must compile your PHP interpreter using the configure line --with_informix[=DIR], where DIR is the Informix base install directory, defaults to nothing.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Poznßmka: Make sure that the Informix environment variables INFORMIXDIR and INFORMIXSERVER are available to the PHP ifx driver, and that the INFORMIX bin directory is in the PATH. Check this by running a script that contains a call to phpinfo() before you start testing. The phpinfo() output should list these environment variables. This is TRUE for both CGI php and Apache mod_php. You may have to set these environment variables in your Apache startup script.
The Informix shared libraries should also be available to the loader (check LD_LIBRARY_PATH or ld.so.conf/ldconfig).
Some notes on the use of BLOBs (TEXT and BYTE columns): BLOBs are normally addressed by BLOB identifiers. Select queries return a "blob id" for every BYTE and TEXT column. You can get at the contents with "string_var = ifx_get_blob($blob_id);" if you choose to get the BLOBs in memory (with: "ifx_blobinfile(0);"). If you prefer to receive the content of BLOB columns in a file, use "ifx_blobinfile(1);", and "ifx_get_blob($blob_id);" will get you the filename. Use normal file I/O to get at the blob contents.
For insert/update queries you must create these "blob id's" yourself with "ifx_create_blob();". You then plug the blob id's into an array, and replace the blob columns with a question mark (?) in the query string. For updates/inserts, you are responsible for setting the blob contents with ifx_update_blob().
The behaviour of BLOB columns can be altered by configuration variables that also can be set at runtime:
configuration variable: ifx.textasvarchar
configuration variable: ifx.byteasvarchar
runtime functions:
ifx_textasvarchar(0): use blob id's for select queries with TEXT columns
ifx_byteasvarchar(0): use blob id's for select queries with BYTE columns
ifx_textasvarchar(1): return TEXT columns as if they were VARCHAR columns, so that you don't need to use blob id's for select queries.
ifx_byteasvarchar(1): return BYTE columns as if they were VARCHAR columns, so that you don't need to use blob id's for select queries.
configuration variable: ifx.blobinfile
runtime function:
ifx_blobinfile_mode(0): return BYTE columns in memory, the blob id lets you get at the contents.
ifx_blobinfile_mode(1): return BYTE columns in a file, the blob id lets you get at the file name.
If you set ifx_text/byteasvarchar to 1, you can use TEXT and BYTE columns in select queries just like normal (but rather long) VARCHAR fields. Since all strings are "counted" in PHP, this remains "binary safe". It is up to you to handle this correctly. The returned data can contain anything, you are responsible for the contents.
If you set ifx_blobinfile to 1, use the file name returned by ifx_get_blob(..) to get at the blob contents. Note that in this case YOU ARE RESPONSIBLE FOR DELETING THE TEMPORARY FILES CREATED BY INFORMIX when fetching the row. Every new row fetched will create new temporary files for every BYTE column.
The location of the temporary files can be influenced by the environment variable "blobdir", default is "." (the current directory). Something like: putenv(blobdir=tmpblob"); will ease the cleaning up of temp files accidentally left behind (their names all start with "blb").
Automatically trimming "char" (SQLCHAR and SQLNCHAR) data: This can be set with the configuration variable
ifx.charasvarchar: if set to 1 trailing spaces will be automatically trimmed, to save you some "chopping".
NULL values: The configuration variable ifx.nullformat (and the runtime function ifx_nullformat()) when set to TRUE will return NULL columns as the string "NULL", when set to FALSE they return the empty string. This allows you to discriminate between NULL columns and empty columns.
Tabulka 1. Informix configuration options
Name | Default | Changeable |
---|---|---|
ifx.allow_persistent | "1" | PHP_INI_SYSTEM |
ifx.max_persistent | "-1" | PHP_INI_SYSTEM |
ifx.max_links | "-1" | PHP_INI_SYSTEM |
ifx.default_host | NULL | PHP_INI_SYSTEM |
ifx.default_user | NULL | PHP_INI_SYSTEM |
ifx.default_password | NULL | PHP_INI_SYSTEM |
ifx.blobinfile | "1" | PHP_INI_ALL |
ifx.textasvarchar | "0" | PHP_INI_ALL |
ifx.byteasvarchar | "0" | PHP_INI_ALL |
ifx.charasvarchar | "0" | PHP_INI_ALL |
ifx.nullformat | "0" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to allow persistent Informix connections.
The maximum number of persistent Informix connections per process.
The maximum number of Informix connections per process, including persistent connections.
The default host to connect to when no host is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in bezpeΦn² re╛im.
The default user id to use when none is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in bezpeΦn² re╛im.
The default password to use when none is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in bezpeΦn² re╛im.
Set to TRUE if you want to return blob columns in a file, FALSE if you want them in memory. You can override the setting at runtime with ifx_blobinfile_mode().
Set to TRUE if you want to return TEXT columns as normal strings in select statements, FALSE if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().
Set to TRUE if you want to return BYTE columns as normal strings in select queries, FALSE if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().
Set to TRUE if you want to trim trailing spaces from CHAR columns when fetching them.
Set to TRUE if you want to return NULL columns as the literal string "NULL", FALSE if you want them returned as the empty string "". You can override this setting at runtime with ifx_nullformat().
result_id is a valid result id returned by ifx_query() or ifx_prepare().
Returns the number of rows affected by a query associated with result_id.
For inserts, updates and deletes the number is the real number (sqlerrd[2]) of affected rows. For selects it is an estimate (sqlerrd[0]). Don't rely on it. The database server can never return the actual number of rows that will be returned by a SELECT because it has not even begun fetching them at this stage (just after the "PREPARE" when the optimizer has determined the query plan).
Useful after ifx_prepare() to limit queries to reasonable result sets.
P°φklad 1. Informix affected rows
|
See also ifx_num_rows().
Set the default blob mode for all select queries. Mode "0" means save Byte-Blobs in memory, and mode "1" means save Byte-Blobs in a file.
Sets the default byte mode for all select-queries. Mode "0" will return a blob id, and mode "1" will return a varchar with text content.
Returns: always TRUE.
ifx_close() closes the link to an Informix database that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed.
Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
ifx_close() will not close persistent links generated by ifx_pconnect().
See also ifx_connect() and ifx_pconnect().
Returns a connection identifier on success, or FALSE on error.
ifx_connect() establishes a connection to an Informix server. All of the arguments are optional, and if they're missing, defaults are taken from values supplied in configuration file (ifx.default_host for the host (Informix libraries will use INFORMIXSERVER environment value if not defined), ifx.default_user for user, ifx.default_password for the password (none if not defined).
In case a second call is made to ifx_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling ifx_close().
See also ifx_pconnect() and ifx_close().
Duplicates the given blob object. bid is the ID of the blob object.
Returns FALSE on error otherwise the new blob object-id.
Creates an blob object.
type: 1 = TEXT, 0 = BYTE
mode: 0 = blob-object holds the content in memory, 1 = blob-object holds the content in file.
param: if mode = 0: pointer to the content, if mode = 1: pointer to the filestring.
Return FALSE on error, otherwise the new blob object-id.
Creates an char object. param should be the char content.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Executes a previously prepared query or opens a cursor for it.
Does NOT free result_id on error.
Also sets the real number of ifx_affected_rows() for non-select statements for retrieval by ifx_affected_rows()
See also: ifx_prepare().
The Informix error codes (SQLSTATE & SQLCODE) formatted as follows :
x [SQLSTATE = aa bbb SQLCODE=cccc]
where x = space : no error
E : error
N : no more data
W : warning
? : undefined
If the "x" character is anything other than space, SQLSTATE and SQLCODE describe the error in more detail.
See the Informix manual for the description of SQLSTATE and SQLCODE
Returns in a string one character describing the general results of a statement and both SQLSTATE and SQLCODE associated with the most recent SQL statement executed. The format of the string is "(char) [SQLSTATE=(two digits) (three digits) SQLCODE=(one digit)]". The first character can be ' ' (space) (success), 'W' (the statement caused some warning), 'E' (an error happened when executing the statement) or 'N' (the statement didn't return any data).
See also: ifx_errormsg()
Returns the Informix error message associated with the most recent Informix error, or, when the optional "errorcode" parameter is present, the error message corresponding to "errorcode".
See also ifx_error().
Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.
Blob columns are returned as integer blob id values for use in ifx_get_blob() unless you have used ifx_textasvarchar(1) or ifx_byteasvarchar(1), in which case blobs are returned as string values. Returns FALSE on error
result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).
position is an optional parameter for a "fetch" operation on "scroll" cursors: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" or a number. If you specify a number, an "absolute" row fetch is executed. This parameter is optional, and only valid for SCROLL cursors.
ifx_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0, with the column name as key.
Subsequent calls to ifx_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
P°φklad 1. Informix fetch rows
|
Returns an associative array with fieldnames as key and the SQL fieldproperties as data for a query with result_id. Returns FALSE on error.
Returns the Informix SQL fieldproperties of every field in the query as an associative array. Properties are encoded as: "SQLTYPE;length;precision;scale;ISNULLABLE" where SQLTYPE = the Informix type like "SQLVCHAR" etc. and ISNULLABLE = "Y" or "N".
Returns an associative array with fieldnames as key and the SQL fieldtypes as data for query with result_id. Returns FALSE on error.
Deletes the blobobject for the given blob object-id bid. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Deletes the charobject for the given char object-id bid. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Releases resources for the query associated with result_id. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Returns the content of the blob object for the given blob object-id bid.
Returns the content of the char object for the given char object-id bid.
result_id is a valid result id returned by ifx_query() or ifx_prepare().
Returns a pseudo-row (associative array) with sqlca.sqlerrd[0] ... sqlca.sqlerrd[5] after the query associated with result_id.
For inserts, updates and deletes the values returned are those as set by the server after executing the query. This gives access to the number of affected rows and the serial insert value. For SELECTs the values are those saved after the PREPARE statement. This gives access to the *estimated* number of affected rows. The use of this function saves the overhead of executing a "select dbinfo('sqlca.sqlerrdx')" query, as it retrieves the values that were saved by the ifx driver at the appropriate moment.
P°φklad 1. Retrieve Informix sqlca.sqlerrd[x] values
|
Returns the number of rows fetched or FALSE on error.
Formats all rows of the result_id query into a HTML table. The optional second argument is a string of <table> tag options
P°φklad 1. Informix results as HTML table
|
Sets the default return value of a NULL-value on a fetch row. Mode "0" returns "", and mode "1" returns "NULL".
Returns the number of columns in query for result_id or FALSE on error
After preparing or executing a query, this call gives you the number of columns in the query.
Gives the number of rows fetched so far for a query with result_id after a ifx_query() or ifx_do() query.
Returns: A positive Informix persistent link identifier on success, or FALSE on error
ifx_pconnect() acts very much like ifx_connect() with two major differences.
This function behaves exactly like ifx_connect() when PHP is not running as an Apache module. First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ifx_close() will not close links established by ifx_pconnect()).
This type of links is therefore called 'persistent'.
See also: ifx_connect().
Returns an integer result_id for use by ifx_do(). Sets affected_rows for retrieval by the ifx_affected_rows() function.
Prepares query on connection conn_id. For "select-type" queries a cursor is declared and opened. The optional cursor_type parameter allows you to make this a "scroll" and/or "hold" cursor. It's a bitmask and can be either IFX_SCROLL, IFX_HOLD, or both or'ed together.
For either query type the estimated number of affected rows is saved for retrieval by ifx_affected_rows().
If you have BLOB (BYTE or TEXT) columns in the query, you can add a blobidarray parameter containing the corresponding "blob ids", and you should replace those columns with a "?" in the query text.
If the contents of the TEXT (or BYTE) column allow it, you can also use "ifx_textasvarchar(1)" and "ifx_byteasvarchar(1)". This allows you to treat TEXT (or BYTE) columns just as if they were ordinary (but long) VARCHAR columns for select queries, and you don't need to bother with blob id's.
With ifx_textasvarchar(0) or ifx_byteasvarchar(0) (the default situation), select queries will return BLOB columns as blob id's (integer value). You can get the value of the blob as a string or file with the blob functions (see below).
See also: ifx_do().
Returns a positive Informix result identifier on success, or FALSE on error.
A "result_id" resource used by other functions to retrieve the query results. Sets "affected_rows" for retrieval by the ifx_affected_rows() function.
ifx_query() sends a query to the currently active database on the server that's associated with the specified link identifier.
Executes query on connection conn_id. For "select-type" queries a cursor is declared and opened. The optional cursor_type parameter allows you to make this a "scroll" and/or "hold" cursor. It's a bitmask and can be either IFX_SCROLL, IFX_HOLD, or both or'ed together. Non-select queries are "execute immediate". IFX_SCROLL and IFX_HOLD are symbolic constants and as such shouldn't be between quotes. I you omit this parameter the cursor is a normal sequential cursor.
For either query type the number of (estimated or real) affected rows is saved for retrieval by ifx_affected_rows().
If you have BLOB (BYTE or TEXT) columns in an update query, you can add a blobidarray parameter containing the corresponding "blob ids", and you should replace those columns with a "?" in the query text.
If the contents of the TEXT (or BYTE) column allow it, you can also use "ifx_textasvarchar(1)" and "ifx_byteasvarchar(1)". This allows you to treat TEXT (or BYTE) columns just as if they were ordinary (but long) VARCHAR columns for select queries, and you don't need to bother with blob id's.
With ifx_textasvarchar(0) or ifx_byteasvarchar(0) (the default situation), select queries will return BLOB columns as blob id's (integer value). You can get the value of the blob as a string or file with the blob functions (see below).
P°φklad 1. Show all rows of the "orders" table as a HTML table
|
P°φklad 2. Insert some values into the "catalog" table
|
See also ifx_connect().
Sets the default text mode for all select-queries. Mode "0" will return a blob id, and mode "1" will return a varchar with text content.
Updates the content of the blob object for the given blob object bid. content is a string with new data. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Updates the content of the char object for the given char object bid. content is a string with new data. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Deletes the slob object on the given slob object-id bid. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Creates an slob object and opens it. Modes: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-mask. You can also use constants named IFX_LO_RDONLY, IFX_LO_WRONLY etc. Return FALSE on error otherwise the new slob object-id.
Deletes the slob object. bid is the Id of the slob object. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Opens an slob object. bid should be an existing slob id. Modes: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-mask. Returns FALSE on error otherwise the new slob object-id.
Reads nbytes of the slob object. bid is a existing slob id and nbytes is the number of bytes read. Return FALSE on error otherwise the string.
Sets the current file or seek position of an open slob object. bid should be an existing slob id. Modes: 0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END and offset is an byte offset. Return FALSE on error otherwise the seek position.
Returns the current file or seek position of an open slob object bid should be an existing slob id. Return FALSE on error otherwise the seek position.
InterBase is a popular database put out by Borland/Inprise. More information about InterBase is available at http://www.interbase.com/. Oh, by the way, InterBase just joined the open source movement!
To enable InterBase support configure PHP --with-interbase[=DIR], where DIR is the InterBase base install directory, which defaults to /usr/interbase.
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy gds32.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). In case you installed the InterBase database server on the same machine PHP is running on, you will have this DLL already. Therefore you don't need to copy gds32.dll from the DLL folder.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. InterBase configuration options
Name | Default | Changeable |
---|---|---|
ibase.allow_persistent | "1" | PHP_INI_SYSTEM |
ibase.max_persistent | "-1" | PHP_INI_SYSTEM |
ibase.max_links | "-1" | PHP_INI_SYSTEM |
ibase.default_user | NULL | PHP_INI_ALL |
ibase.default_password | NULL | PHP_INI_ALL |
ibase.timestampformat | "%m/%d/%Y%H:%M:%S" | PHP_INI_ALL |
ibase.dateformat | "%m/%d/%Y" | PHP_INI_ALL |
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Access mode
Access mode
Isolation level
Isolation level
Isolation level (default)
Lock resolution
Lock resolution (default)
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also ibase_modify_user() and ibase_delete_user().
(no version information, might be only in CVS)
ibase_affected_rows -- Return the number of rows that were affected by the previous queryThis function returns the number of rows that were affected by the previous query that was executed from within the transaction context specified by link_identifier. If link_identifier is a connection resource, its default transaction is used.
See also ibase_query() and ibase_execute().
ibase_blob_add() adds data into a blob created with ibase_blob_create(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_blob_cancel(), ibase_blob_close(), ibase_blob_create() and ibase_blob_import().
This function will discard a BLOB created by ibase_create_blob() if it has not yet been closed by ibase_blob_close(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_blob_close(), ibase_blob_create() and ibase_blob_import().
This function closes a BLOB that has either been opened for reading by ibase_open_blob() or has been opened for writing by ibase_create_blob(). If the BLOB was being read, this function returns TRUE on success, if the BLOB was being written to, this function returns a string containing the BLOB id that has been assigned to it by the database. On failure, this function returns FALSE.
See also ibase_blob_cancel() and ibase_blob_open().
ibase_blob_create() creates a new BLOB for filling with data. It returns a BLOB handle for later use with ibase_blob_add() or FALSE on failure.
See also ibase_blob_add(), ibase_blob_cancel(), ibase_blob_close() and ibase_blob_import().
This function opens a BLOB for reading and sends its contents directly to standard output (the browser, in most cases). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_blob_open(), ibase_blob_close() and ibase_blob_get().
This function returns at most len bytes from a BLOB that has been opened for reading by ibase_blob_open(). Returns FALSE on failure.
<?php $sql = "SELECT blob_value FROM table"; $result = ibase_query($sql); $data = ibase_fetch_object($result); $blob_data = ibase_blob_info($data->BLOB_VALUE); $blob_hndl = ibase_blob_open($data->BLOB_VALUE); echo ibase_blob_get($blob_hndl, $blob_data[0]); ?> |
Poznßmka: It is not possible to read from a BLOB that has been opened for writing by ibase_blob_create().
See also ibase_blob_open(), ibase_blob_close() and ibase_blob_echo().
This function creates a BLOB, reads an entire file into it, closes it and returns the assigned BLOB id. The file handle is a handle returned by fopen(). Returns FALSE on failure.
See also ibase_blob_add(), ibase_blob_cancel(), ibase_blob_close() and ibase_blob_create().
Returns an array containing information about a BLOB. The information returned consists of the length of the BLOB, the number of segments it contains, the size of the largest segment, and whether it is a stream BLOB or a segmented BLOB.
ibase_blob_open() opens an existing BLOB for reading. It returns a BLOB handle for later use with ibase_blob_get() or FALSE on failure.
See also ibase_blob_close(), ibase_blob_echo() and ibase_blob_get().
Closes the link to an InterBase database that's associated with a connection id returned from ibase_connect(). If the connection id is omitted, the last opened link is assumed. Default transaction on link is committed, other transactions are rolled back. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_connect() and ibase_pconnect().
(no version information, might be only in CVS)
ibase_commit_ret -- Commit a transaction without closing itIf called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed. The transaction context will be retained, so statements executed from within this transaction will not be invalidated. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
If called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Establishes a connection to an InterBase server. The database argument has to be a valid path to database file on the server it resides on. If the server is not local, it must be prefixed with either 'hostname:' (TCP/IP), '//hostname/' (NetBEUI) or 'hostname@' (IPX/SPX), depending on the connection protocol used. username and password can also be specified with PHP configuration directives ibase.default_user and ibase.default_password. charset is the default character set for a database. buffers is the number of database buffers to allocate for the server-side cache. If 0 or omitted, server chooses its own default. dialect selects the default SQL dialect for any statement executed within a connection, and it defaults to the highest one supported by client libraries.
In case a second call is made to ibase_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling ibase_close().
P°φklad 1. ibase_connect() example
|
Poznßmka: The optional buffers parameter was added in PHP 4.0.0.
Poznßmka: The optional dialect parameter was added in PHP 4.0.0 and is functional only with InterBase 6 and up.
Poznßmka: The optional role parameter was added in PHP 4.0.0 and is functional only with InterBase 5 and up.
Poznßmka: If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).
See also ibase_pconnect() and ibase_close().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also ibase_add_user() and ibase_modify_user().
This functions drops a database that was opened by either ibase_connect() or ibase_pconnect(). The database is closed and deleted from the server. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_connect() and ibase_pconnect().
Returns the error code that resulted from the most recent InterBase function call. Returns FALSE if no error occurred.
See also ibase_errmsg().
Returns the error message that resulted from the most recent InterBase function call. Returns FALSE if no error occurred.
See also ibase_errcode().
Execute a query prepared by ibase_prepare(). If the query raises an error, returns FALSE. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns TRUE.
This is a lot more effective than using ibase_query() if you are repeating a same kind of query several times with only some parameters changing.
P°φklad 1. ibase_execute() example
|
Poznßmka: In PHP 5.0.0 and up, this function returns the number of rows affected by the query (if > 0 and applicable to the statement type). A query that succeeded, but did not affect any rows (e.g. an UPDATE of a non-existent record) will return TRUE.
See also ibase_query().
ibase_fetch_assoc() returns an associative array that corresponds to the fetched row. Subsequent calls will return the next row in the result set, or FALSE if there are no more rows.
ibase_fetch_assoc() fetches one row of data from the result. If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using ibase_fetch_row() or use alias names in your query.
fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.
See also ibase_fetch_row() and ibase_fetch_object().
Fetches a row as a pseudo-object from a result_id obtained either by ibase_query() or ibase_execute().
<?php $dbh = ibase_connect($host, $username, $password); $stmt = 'SELECT * FROM tblname'; $sth = ibase_query($dbh, $stmt); while ($row = ibase_fetch_object($sth)) { echo $row->email . "\n"; } ibase_close($dbh); ?> |
Subsequent calls to ibase_fetch_object() return the next row in the result set, or FALSE if there are no more rows.
fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.
See also ibase_fetch_row() and ibase_fetch_assoc().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
ibase_fetch_row() fetches one row of data from the result associated with the specified result_identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Subsequent calls to ibase_fetch_row() return the next row in the result set, or FALSE if there are no more rows.
fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.
See also ibase_fetch_assoc() and ibase_fetch_object().
Returns an array with information about a field after a select query has been run. The array is in the form of name, alias, relation, length, type.
<?php $rs = ibase_query("SELECT * FROM tablename"); $coln = ibase_num_fields($rs); for ($i = 0; $i < $coln; $i++) { $col_info = ibase_field_info($rs, $i); echo "name: ". $col_info['name']. "\n"; echo "alias: ". $col_info['alias']. "\n"; echo "relation: ". $col_info['relation']. "\n"; echo "length: ". $col_info['length']. "\n"; echo "type: ". $col_info['type']. "\n"; } ?> |
See also: ibase_num_fields().
(no version information, might be only in CVS)
ibase_free_event_handler -- Cancels a registered event handlerThis function causes the registered event handler specified by event to be cancelled. The callback function will no longer be called for the events it was registered to handle. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ibase_set_event_handler().
Free a query prepared by ibase_prepare(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Frees a result set that has been created by ibase_query() or ibase_execute(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
(no version information, might be only in CVS)
ibase_gen_id -- Increments the named generator and returns its new valueVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also ibase_add_user() and ibase_delete_user().
This function assigns a name to a result set. This name can be used later in UPDATE|DELETE ... WHERE CURRENT OF name statements. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
<?php $result = ibase_query("SELECT field1,field2 FROM table FOR UPDATE"); ibase_name_result($result, "my_cursor"); $updateqry = ibase_prepare("UPDATE table SET field2 = ? WHERE CURRENT OF my_cursor"); for ($i = 0; ibase_fetch_row($result); ++$i) { ibase_execute($updateqry, $i); } ?> |
See also ibase_prepare() and ibase_execute().
Returns an integer containing the number of fields in a result set.
<?php $rs = ibase_query("SELECT * FROM tablename"); $coln = ibase_num_fields($rs); for ($i = 0; $i < $coln; $i++) { $col_info = ibase_field_info($rs, $i); echo "name: " . $col_info['name'] . "\n"; echo "alias: " . $col_info['alias'] . "\n"; echo "relation: " . $col_info['relation'] . "\n"; echo "length: " . $col_info['length'] . "\n"; echo "type: " . $col_info['type'] . "\n"; } ?> |
See also: ibase_field_info().
(no version information, might be only in CVS)
ibase_num_params -- Return the number of parameters in a prepared queryThis function returns the number of parameters in the prepared query specified by query. This is the number of binding arguments that must be present when calling ibase_execute().
See also ibase_prepare() and ibase_param_info().
(no version information, might be only in CVS)
ibase_param_info -- Return information about a parameter in a prepared queryReturns an array with information about a parameter after a query has been prepared. The array is in the form of name, alias, relation, length, type.
See also ibase_field_info() and ibase_num_params().
ibase_pconnect() acts very much like ibase_connect() with two major differences. First, when connecting, the function will first try to find a (persistent) link that's already opened with the same parameters. If one is found, an identifier for it will be returned instead of opening a new connection. Second, the connection to the InterBase server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ibase_close() will not close links established by ibase_pconnect()). This type of link is therefore called 'persistent'.
Poznßmka: buffers was added in PHP4-RC2.
Poznßmka: dialect was added in PHP4-RC2. It is functional only with InterBase 6 and versions higher than that.
Poznßmka: role was added in PHP4-RC2. It is functional only with InterBase 5 and versions higher than that.
See also ibase_close() and ibase_connect() for the meaning of parameters passed to this function. They are exactly the same.
(PHP 3>= 3.0.6, PHP 4 )
ibase_prepare -- Prepare a query for later binding of parameter placeholders and executionPrepare a query for later binding of parameter placeholders and execution (via ibase_execute()).
Performs a query on an InterBase database. If the query raises an error, returns FALSE. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns TRUE.
Poznßmka: In PHP 5.0.0 and up, this function returns the number of rows affected by the query (if > 0 and applicable to the statement type). A query that succeeded, but did not affect any rows (e.g. an UPDATE of a non-existent record) will return TRUE.
Poznßmka: If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).
See also ibase_errmsg(), ibase_fetch_row(), ibase_fetch_object(), and ibase_free_result().
(no version information, might be only in CVS)
ibase_rollback_ret -- Roll back a transaction without closing itIf called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back. The transaction context will be retained, so statements executed from within this transaction will not be invalidated. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
If called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
(no version information, might be only in CVS)
ibase_set_event_handler -- Register a callback function to be called when events are postedThis function registers a PHP user function as event handler for the specified events. The callback is called with the event name and the link resource as arguments whenever one of the specified events is posted by the database. The callback must return FALSE if the event handler should be canceled. Any other return value is ignored.
<?php function event_handler($event_name, $link) { if ($event_name=="NEW ORDER") { // process new order ibase_query($link, "UPDATE orders SET status='handled'"); } else if ($event_name=="DB_SHUTDOWN") { // free event handler return false; } } ibase_set_event_handler($link, "event_handler", "NEW_ORDER", "DB_SHUTDOWN"); ?> |
The return value is an event resource. This resource can be used to free the event handler using ibase_free_event_handler().
See also ibase_free_event_handler() and ibase_wait_event().
(PHP 3>= 3.0.6, PHP 4 )
ibase_timefmt -- Sets the format of timestamp, date and time type columns returned from queriesSets the format of timestamp, date or time type columns returned from queries. Internally, the columns are formatted by c-function strftime(), so refer to it's documentation regarding to the format of the string. columntype is one of the constants IBASE_TIMESTAMP, IBASE_DATE and IBASE_TIME. If omitted, defaults to IBASE_TIMESTAMP for backwards compatibility.
<?php /* InterBase 6 TIME-type columns will be returned in * the form '05 hours 37 minutes'. */ ibase_timefmt("%H hours %M minutes", IBASE_TIME); ?> |
You can also set defaults for these formats with PHP configuration directives ibase.timestampformat, ibase.dateformat and ibase.timeformat.
Poznßmka: columntype was added in PHP 4.0. It has any meaning only with InterBase version 6 and higher.
Poznßmka: A backwards incompatible change happened in PHP 4.0 when PHP configuration directive ibase.timeformat was renamed to ibase.timestampformat and directives ibase.dateformat and ibase.timeformat were added, so that the names would match better their functionality.
Begins a transaction.
trans_args can be a combination of IBASE_READ, IBASE_WRITE, IBASE_COMMITED, IBASE_CONSISTENCY, IBASE_CONCURRENCY, IBASE_REC_VERSION, IBASE_REC_NO_VERSION, IBASE_WAIT and IBASE_NOWAIT.
Poznßmka: The behaviour of this function has been changed in PHP 5.0.0. The first call to ibase_trans() will not return the default transaction of a connection. All transactions started by ibase_trans() will be rolled back at the end of the script if they were not committed or rolled back by either ibase_commit() or ibase_rollback().
Poznßmka: In PHP 5.0.0. and up, this function will accept multiple trans_args and link_identifier arguments. This allows transactions over multiple database connections, which are committed using a 2-phase commit algorithm. This means you can rely on the updates to either succeed in every database, or fail in every database. It does NOT mean you can use tables from different databases in the same query!
If you use transactions over multiple databases, you will have to specify both the link_id and transaction_id in calls to ibase_query() and ibase_prepare().
(no version information, might be only in CVS)
ibase_wait_event -- Wait for an event to be posted by the databaseThis function suspends execution of the script until one of the specified events is posted by the database. The name of the event that was posted is returned. This function accepts up to 15 event arguments.
See also ibase_set_event_handler() and ibase_free_event_handler().
These functions allow you to access Ingres II database servers.
Poznßmka: If you already used PHP extensions to access other database servers, note that Ingres doesn't allow concurrent queries and/or transaction over one connection, thus you won't find any result or transaction handle in this extension. The result of a query must be treated before sending another query, and a transaction must be committed or rolled back before opening another transaction (which is automatically done when sending the first query).
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
To compile PHP with Ingres support, you need the Open API library and header files included with Ingres II.
In order to have these functions available, you must compile PHP with Ingres support by using the --with-ingres[=DIR] option, where DIR is the Ingres base directory, which defaults to /II/ingres. If the II_SYSTEM environment variable isn't correctly set you may have to use --with-ingres=DIR to specify your Ingres installation directory.
When using this extension with Apache, if Apache does not start and complains with "PHP Fatal error: Unable to start ingres_ii module in Unknown on line 0" then make sure the environment variable II_SYSTEM is correctly set. Adding "export II_SYSTEM="/home/ingres/II" in the script that starts Apache, just before launching httpd, should be fine.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Ingres II configuration options
Name | Default | Changeable |
---|---|---|
ingres.allow_persistent | "1" | PHP_INI_SYSTEM |
ingres.max_persistent | "-1" | PHP_INI_SYSTEM |
ingres.max_links | "-1" | PHP_INI_SYSTEM |
ingres.default_database | NULL | PHP_INI_ALL |
ingres.default_user | NULL | PHP_INI_ALL |
ingres.default_password | NULL | PHP_INI_ALL |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_autocommit() is called before opening a transaction (before the first call to ingres_query() or just after a call to ingres_rollback() or ingres_commit()) to switch the "autocommit" mode of the server on or off (when the script begins the autocommit mode is off).
When the autocommit mode is on, every query is automatically committed by the server, as if ingres_commit() was called after every call to ingres_query().
See also ingres_query(), ingres_rollback(), and ingres_commit().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Returns TRUE on success, or FALSE on failure.
ingres_close() closes the connection to the Ingres server that's associated with the specified link. If the link parameter isn't specified, the last opened link is used.
ingres_close() isn't usually necessary, as it won't close persistent connections and all non-persistent connections are automatically closed at the end of the script.
See also ingres_connect() and ingres_pconnect().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_commit() commits the currently open transaction, making all changes made to the database permanent.
This closes the transaction. A new one can be open by sending a query with ingres_query().
You can also have the server commit automatically after every query by calling ingres_autocommit() before opening the transaction.
See also ingres_query(), ingres_rollback(), and ingres_autocommit().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Returns a Ingres II link resource on success, or FALSE on failure.
ingres_connect() opens a connection with the Ingres database designated by database, which follows the syntax [node_id::]dbname[/svr_class].
If some parameters are missing, ingres_connect() uses the values in php.ini for ingres.default_database, ingres.default_user, and ingres.default_password.
The connection is closed when the script ends or when ingres_close() is called on this link.
All the other ingres functions use the last opened link as a default, so you need to store the returned value only if you use more than one link at a time.
See also ingres_pconnect() and ingres_close().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_fetch_array() Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
This function is an extended version of ingres_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use the numeric index of the column or make an alias for the column.
<?php ingres_query("select t1.f1 as foo t2.f1 as bar from t1, t2"); $result = ingres_fetch_array(); $foo = $result["foo"]; $bar = $result["bar"]; ?> |
result_type can be INGRES_NUM for enumerated array, INGRES_ASSOC for associative array, or INGRES_BOTH (default).
Speed-wise, the function is identical to ingres_fetch_object(), and almost as quick as ingres_fetch_row() (the difference is insignificant).
See also ingres_query(), ingres_num_fields(), ingres_field_name(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_fetch_object() Returns an object that corresponds to the fetched row, or FALSE if there are no more rows.
This function is similar to ingres_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).
The optional argument result_type is a constant and can take the following values: INGRES_ASSOC, INGRES_NUM, and INGRES_BOTH.
Speed-wise, the function is identical to ingres_fetch_array(), and almost as quick as ingres_fetch_row() (the difference is insignificant).
See also ingres_query(), ingres_num_fields(), ingres_field_name(), ingres_fetch_array(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_fetch_row() returns an array that corresponds to the fetched row, or FALSE if there are no more rows. Each result column is stored in an array offset, starting at offset 1.
Subsequent call to ingres_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
See also ingres_num_fields(), ingres_query(), ingres_fetch_array(), and ingres_fetch_object().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_length() returns the length of a field. This is the number of bytes used by the server to store the field. For detailed information, see the Ingres/OpenAPI User Guide - Appendix C.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_name() returns the name of a field in a query result, or FALSE on failure.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object() and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_nullable() returns TRUE if the field can be set to the NULL value and FALSE if it can't.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_precision() returns the precision of a field. This value is used only for decimal, float and money SQL data types. For detailed information, see the Ingres/OpenAPI User Guide - Appendix C.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_scale() returns the scale of a field. This value is used only for the decimal SQL data type. For detailed information, see the Ingres/OpenAPI User Guide - Appendix C.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_field_type() returns the type of a field in a query result, or FALSE on failure. Examples of types returned are "IIAPI_BYTE_TYPE", "IIAPI_CHA_TYPE", "IIAPI_DTE_TYPE", "IIAPI_FLT_TYPE", "IIAPI_INT_TYPE", "IIAPI_VCH_TYPE". Some of these types can map to more than one SQL type depending on the length of the field (see ingres_field_length()). For example "IIAPI_FLT_TYPE" can be a float4 or a float8. For detailed information, see the Ingres/OpenAPI User Guide - Appendix C.
index is the number of the field and must be between 1 and the value given by ingres_num_fields().
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_num_fields() returns the number of fields in the results returned by the Ingres server after a call to ingres_query()
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
For delete, insert or update queries, ingres_num_rows() returns the number of rows affected by the query. For other queries, ingres_num_rows() returns the number of rows in the query's result.
Poznßmka: This function is mainly meant to get the number of rows modified in the database. If this function is called before using ingres_fetch_array(), ingres_fetch_object() or ingres_fetch_row() the server will delete the result's data and the script won't be able to get them.
You should instead retrieve the result's data using one of these fetch functions in a loop until it returns FALSE, indicating that no more results are available.
See also ingres_query(), ingres_fetch_array(), ingres_fetch_object(), and ingres_fetch_row().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Returns a Ingres II link resource on success, or FALSE on failure.
See ingres_connect() for parameters details and examples. There are only 2 differences between ingres_pconnect() and ingres_connect() : First, when connecting, the function will first try to find a (persistent) link that's already opened with the same parameters. If one is found, an identifier for it will be returned instead of opening a new connection. Second, the connection to the Ingres server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ingres_close() will not close links established by ingres_pconnect()). This type of link is therefore called 'persistent'.
See also ingres_connect() and ingres_close().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Returns TRUE on success, or FALSE on failure.
ingres_query() sends the given query to the Ingres server. This query must be a valid SQL query (see the Ingres SQL reference guide)
The query becomes part of the currently open transaction. If there is no open transaction, ingres_query() opens a new transaction. To close the transaction, you can either call ingres_commit() to commit the changes made to the database or ingres_rollback() to cancel these changes. When the script ends, any open transaction is rolled back (by calling ingres_rollback()). You can also use ingres_autocommit() before opening a new transaction to have every SQL query immediately committed.
Some types of SQL queries can't be sent with this function:
close (see ingres_close())
commit (see ingres_commit())
connect (see ingres_connect())
disconnect (see ingres_close())
get dbevent
prepare to commit
rollback (see ingres_rollback())
savepoint
set autocommit (see ingres_autocommit())
all cursor related queries are unsupported
See also ingres_fetch_array(), ingres_fetch_object(), ingres_fetch_row(), ingres_commit(), ingres_rollback(), and ingres_autocommit().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ingres_rollback() rolls back the currently open transaction, actually canceling all changes made to the database during the transaction.
This closes the transaction. A new one can be open by sending a query with ingres_query().
See also ingres_query(), ingres_commit(), and ingres_autocommit().
With IRCG you can rapidly stream XML data to thousands of concurrently connected users. This can be used to build powerful, extensible interactive platforms such as online games and webchats. IRCG also features support for a non-streaming mode where a helper application reformats incoming data and supplies static file snippets in special formats such as cHTML (i-mode) or WML (WAP). These static files are then delivered by the high-performance web server.
Up to v4, IRCG runs under these platforms:
AIX
FreeBSD
HP-UX
Irix
Linux
Solaris
Tru64
Windows
Detailed installation instructions can be found at http://www.schumann.cx/ircg/. We urge you to use the provided installation script.
It is not recommended, but you can try enable IRCG support yourself. Provide the path to the ircg-config script, --with-ircg-config=path/to/irc-config and in addition add --with-ircg to your configure line.
Set channel mode flags for channel on server connected to by connection. Mode flags are passed in mode_spec and are applied to the user specified by nick.
Mode flags are set or cleared by specifying a mode character and prepending it with a plus or minus character, respectively. E.g. operator mode is granted by '+o' and revoked by '-o', as passed as mode_spec.
ircg_disconnect() will close a connection to a server previously established with ircg_pconnect().
See also: ircg_pconnect().
ircg_fetch_error_msg() returns the error from a failed connection.
Poznßmka: Error code is stored in first array element, error text in second. The error code is equivalent to IRC reply codes as defined by RFC 2812.
Function ircg_get_username() returns the username for the specified connection connection. Returns FALSE if connection died or is not valid.
Encodes a HTML string html_string for output. This exposes the interface which the IRCG extension uses internally to reformat data coming from an IRC link. The function causes IRC color/font codes to be encoded in HTML and escapes certain entities.
This function adds user nick to the ignore list of connection connection. Afterwards, IRCG will suppress all messages from this user through the associated connection.
See also: ircg_ignore_del().
This function removes user nick from the IRCG ignore list associated with connection.
See also: ircg_ignore_add().
ircg_is_conn_alive() returns TRUE if connection is still alive and working or FALSE, if the connection has died for some reason.
Join the channel channel on the server connected to by connection. IRCG will optionally pass the room key key.
Kick user nick from channel on server connected to by connection. reason should give a short message describing why this action was performed.
Check for the existence of the format message set name. Sets may be registered with ircg_register_format_messages(), a default set named ircg is always available. Returns TRUE, if the set exists and FALSE otherwise.
See also: ircg_register_format_messages()
ircg_msg() will send the message to a channel or user on the server connected to by connection. A recipient starting with # or & will send the message to a channel, anything else will be interpreted as a username.
Setting the optional parameter suppress to a TRUE value will suppress output of your message to your own connection. This so-called loopback is necessary, because the IRC server does not echo PRIVMSG commands back to us.
Change your nickname on the given connection to the one given in nick, if possible.
Will return TRUE on success and FALSE on failure.
Function ircg_nickname_escape() returns an encoded nickname specified by nick which is IRC-compliant.
See also: ircg_nickname_unescape()
Function ircg_nickname_unescape() returns a decoded nickname, which is specified in nick.
See also: ircg_nickname_escape()
This function will send the message text to the user nick on the server connected to by connection. IRC servers and other software will not automatically generate replies to NOTICEs in contrast to other message types.
Leave the channel channel on the server connected to by connection.
ircg_pconnect() will try to establish a connection to an IRC server and return a connection resource handle for further use.
The only mandatory parameter is username, this will set your initial nickname on the server. server_ip and server_port are optional and default to 127.0.0.1 and 6667.
Poznßmka: For now parameter server_ip will not do any hostname lookups and will only accept IP addresses in numerical form. DNS lookups are expensive and should be done in the context of IRCG.
You can customize the output of IRC messages and events by selecting a format message set previously created with ircg_register_format_messages() by specifying the set's name in msg_format.
If you want to handle CTCP messages such as ACTION (/me), you need to define a mapping from CTCP type (e.g. ACTION) to a custom format string. Do this by passing an associative array as ctcp_messages. The keys of the array are the CTCP type and the respective value is the format message.
You can define "ident", "password", and "realname" tokens which are sent to the IRC server by setting these in an associative array. Pass that array as user_settings.
See also: ircg_disconnect(), ircg_is_conn_alive(), ircg_register_format_messages().
With ircg_register_format_messages() you can customize the way your IRC output looks like or which script functions are invoked on the client side.
Plain channel message
Private message received
Private message sent
Some user leaves channel
Some user enters channel
Some user was kicked from the channel
Topic has been changed
Error
Fatal error
Join list end(?)
Self part(?)
Some user changes his nick
Some user quits his connection
Mass join begin
Mass join element
Mass join end
Whois user
Whois server
Whois idle
Whois channel
Whois end
Voice status change on user
Operator status change on user
Banlist
Banlist end
%f - from
%t - to
%c - channel
%r - plain message
%m - encoded message
%j - js encoded message
1 - mod encode
2 - nickname decode
See also: ircg_lookup_format_messages().
Select the current HTTP connection for output in this execution context. Every output sent from the server connected to by connection will be copied to standard output while using default formatting or a format message set specified by ircg_register_format_messages().
See also: ircg_register_format_messages().
Function ircg_set_file() specifies a logfile path in which all output from connection connection will be logged. Returns TRUE on success, otherwise FALSE.
In case of the termination of connection connection IRCG will connect to host at port (Note: host must be an IPv4 address, IRCG does not resolve host-names due to blocking issues), send data to the new host connection and will wait until the remote part closes connection. This can be used to trigger a PHP script for example.
This feature requires IRCG 3.
Change the topic for channel channel on the server connected to by connection to new_topic.
There are two possible ways to bridge PHP and Java: you can either integrate PHP into a Java Servlet environment, which is the more stable and efficient solution, or integrate Java support into PHP. The former is provided by a SAPI module that interfaces with the Servlet server, the latter by this Java extension.
The Java extension provides a simple and effective means for creating and invoking methods on Java objects from PHP. The JVM is created using JNI, and everything runs in-process.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
To include Java support in your PHP build you must add the option --with-java[=DIR] where DIR points to the base install directory of your JDK. This extension can only be built as a shared dl. More build instructions for this extension can be found in php4/ext/java/README.
Note to Win32 Users: In order to enable this module on a Windows environment with PHP <= 4.0.6, you must copy jvm.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32). For PHP > 4.0.6 you do not need any additional dll file.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Java configuration options
Name | Default | Changeable |
---|---|---|
java.class.path | NULL | PHP_INI_ALL |
java.home | NULL | PHP_INI_ALL |
java.library.path | NULL | PHP_INI_ALL |
java.library | JAVALIB | PHP_INI_ALL |
P°φklad 1. Java Example
|
P°φklad 2. AWT Example
|
new Java() will create an instance of a class if a suitable constructor is available. If no parameters are passed and the default constructor is useful as it provides access to classes like java.lang.System which expose most of their functionallity through static methods.
Accessing a member of an instance will first look for bean properties then public fields. In other words, print $date.time will first attempt to be resolved as $date.getTime(), then as $date.time.
Both static and instance members can be accessed on an object with the same syntax. Furthermore, if the java object is of type java.lang.Class, then static members of the class (fields and methods) can be accessed.
Exceptions raised result in PHP warnings, and NULL results. The warnings may be eliminated by prefixing the method call with an "@" sign. The following APIs may be used to retrieve and reset the last error:
Overload resolution is in general a hard problem given the differences in types between the two languages. The PHP Java extension employs a simple, but fairly effective, metric for determining which overload is the best match.
Additionally, method names in PHP are not case sensitive, potentially increasing the number of overloads to select from.
Once a method is selected, the parameters are coerced if necessary, possibly with a loss of data (example: double precision floating point numbers will be converted to boolean).
In the tradition of PHP, arrays and hashtables may pretty much be used interchangably. Note that hashtables in PHP may only be indexed by integers or strings; and that arrays of primitive types in Java can not be sparse. Also note that these constructs are passed by value, so may be expensive in terms of memory and time.
The Java Servlet SAPI builds upon the mechanism defined by the Java extension to enable the entire PHP processor to be run as a servlet. The primary advanatage of this from a PHP perspective is that web servers which support servlets typically take great care in pooling and reusing JVMs. Build instructions for the Servlet SAPI module can be found in php4/sapi/README. Notes:
While this code is intended to be able to run on any servlet engine, it has only been tested on Apache's Jakarta/tomcat to date. Bug reports, success stories and/or patches required to get this code to run on other engines would be appreciated.
PHP has a habit of changing the working directory. sapi/servlet will eventually change it back, but while PHP is running the servlet engine may not be able to load any classes from the CLASSPATH which are specified using a relative directory syntax, or find the work directory used for administration and JSP compilation tasks.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See java_last_exception_get() for an example.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The following example demonstrates the usage of Java's exception handler from within PHP:
P°φklad 1. Java exception handler
|
LDAP is the Lightweight Directory Access Protocol, and is a protocol used to access "Directory Servers". The Directory is a special kind of database that holds information in a tree structure.
The concept is similar to your hard disk directory structure, except that in this context, the root directory is "The world" and the first level subdirectories are "countries". Lower levels of the directory structure contain entries for companies, organisations or places, while yet lower still we find directory entries for people, and perhaps equipment or documents.
To refer to a file in a subdirectory on your hard disk, you might use something like:
/usr/local/myapp/docs
The forwards slash marks each division in the reference, and the sequence is read from left to right.
The equivalent to the fully qualified file reference in LDAP is the "distinguished name", referred to simply as "dn". An example dn might be:
cn=John Smith,ou=Accounts,o=My Company,c=US
The comma marks each division in the reference, and the sequence is read from right to left. You would read this dn as:
country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
In the same way as there are no hard rules about how you organise the directory structure of a hard disk, a directory server manager can set up any structure that is meaningful for the purpose. However, there are some conventions that are used. The message is that you can not write code to access a directory server unless you know something about its structure, any more than you can use a database without some knowledge of what is available.
Lots of information about LDAP can be found at
The Netscape SDK contains a helpful Programmer's Guide in HTML format.
You will need to get and compile LDAP client libraries from either the University of Michigan ldap-3.3 package, Netscape Directory SDK 3.0 or OpenLDAP to compile PHP with LDAP support.
LDAP support in PHP is not enabled by default. You will need to use the --with-ldap[=DIR] configuration option when compiling PHP to enable LDAP support. DIR is the LDAP base install directory.
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy several files from the DLL folder of the PHP/Win32 binary package to the SYSTEM folder of your windows machine. (Ex: C:\WINNT\SYSTEM32, or C:\WINDOWS\SYSTEM). For PHP <= 4.2.0 copy libsasl.dll, for PHP >= 4.3.0 copy libeay32.dll and ssleay32.dll to your SYSTEM folder.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
For further details and definition of the PHP_INI_* constants see ini_set().
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Retrieve information for all entries where the surname starts with "S" from a directory server, displaying an extract with name and email address.
P°φklad 1. LDAP search example
|
Before you can use the LDAP calls you will need to know ..
The name or address of the directory server you will use
The "base dn" of the server (the part of the world directory that is held on this server, which could be "o=My Company,c=US")
Whether you need a password to access the server (many servers will provide read access for an "anonymous bind" but require a password for anything else)
The typical sequence of LDAP calls you will make in an application will follow this pattern:
ldap_connect() // establish connection to server
|
ldap_bind() // anonymous or authenticated "login"
|
do something like search or update the directory
and display the results
|
ldap_close() // "logout"
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The ldap_add() function is used to add entries in the LDAP directory. The DN of the entry to be added is specified by dn. Array entry specifies the information about the entry. The values in the entries are indexed by individual attributes. In case of multiple values for an attribute, they are indexed using integers starting with 0.
P°φklad 1. Complete example with authenticated bind
|
Binds to the LDAP directory with specified RDN and password. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ldap_bind() does a bind operation on the directory. bind_rdn and bind_password are optional. If not specified, anonymous bind is attempted.
P°φklad 1. Using LDAP Bind
|
P°φklad 2. Using LDAP Bind Anonymously
|
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ldap_close() closes the link to the LDAP server that's associated with the specified link_identifier.
This call is internally identical to ldap_unbind(). The LDAP API uses the call ldap_unbind(), so perhaps you should use this in preference to ldap_close().
Poznßmka: This function is an alias of ldap_unbind().
Returns TRUE if value matches otherwise returns FALSE. Returns -1 on error.
ldap_compare() is used to compare value of attribute to value of same attribute in LDAP directory entry specified with dn.
The following example demonstrates how to check whether or not given password matches the one defined in DN specified entry.
P°φklad 1. Complete example of password check
|
Varovßnφ |
ldap_compare() can NOT be used to compare BINARY values! |
Poznßmka: This function was added in 4.0.2.
Returns a positive LDAP link identifier on success, or FALSE on error.
ldap_connect() establishes a connection to a LDAP server on a specified hostname and port. Both the arguments are optional. If no arguments are specified then the link identifier of the already opened link will be returned. If only hostname is specified, then the port defaults to 389.
If you are using OpenLDAP 2.x.x you can specify a URL instead of the hostname. To use LDAP with SSL, compile OpenLDAP 2.x.x with SSL support, configure PHP with SSL, and use ldaps://hostname/ as host parameter. The port parameter is not used when using URLs.
Poznßmka: URL and SSL support were added in 4.0.4.
Returns number of entries in the result or FALSE on error.
ldap_count_entries() returns the number of entries stored in the result of previous search operations. result_identifier identifies the internal ldap result.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ldap_delete() function delete a particular entry in LDAP directory specified by dn.
ldap_dn2ufn() function is used to turn a DN, specified by dn, into a more user-friendly form, stripping off type names.
Returns string error message.
This function returns the string error message explaining the error number errno. While LDAP errno numbers are standardized, different libraries return different or even localized textual error messages. Never check for a specific error message text, but always use an error number to check.
See also ldap_errno() and ldap_error().
Return the LDAP error number of the last LDAP command for this link.
This function returns the standardized error number returned by the last LDAP command for the given link_identifier. This number can be converted into a textual error message using ldap_err2str().
Unless you lower your warning level in your php.ini sufficiently or prefix your LDAP commands with @ (at) characters to suppress warning output, the errors generated will also show up in your HTML output.
P°φklad 1. Generating and catching an error
|
See also ldap_err2str() and ldap_error().
Returns string error message.
This function returns the string error message explaining the error generated by the last LDAP command for the given link_identifier While LDAP errno numbers are standardized, different libraries return different or even localized textual error messages. Never check for a specific error message text, but always use an error number to check.
Unless you lower your warning level in your php.ini sufficiently or prefix your LDAP commands with @ (at) characters to suppress warning output, the errors generated will also show up in your HTML output.
See also ldap_err2str() and ldap_errno().
ldap_explode_dn() function is used to split the DN returned by ldap_get_dn() and breaks it up into its component parts. Each part is known as Relative Distinguished Name, or RDN. ldap_explode_dn() returns an array of all those components. with_attrib is used to request if the RDNs are returned with only values or their attributes as well. To get RDNs with the attributes (i.e. in attribute=value format) set with_attrib to 0 and to get only values set it to 1.
Returns the first attribute in the entry on success and FALSE on error.
Similar to reading entries, attributes are also read one by one from a particular entry. ldap_first_attribute() returns the first attribute in the entry pointed by the result_entry_identifier. Remaining attributes are retrieved by calling ldap_next_attribute() successively. ber_identifier is the identifier to internal memory location pointer. It is passed by reference. The same ber_identifier is passed to the ldap_next_attribute() function, which modifies that pointer.
See also ldap_get_attributes()
Returns the result entry identifier for the first entry on success and FALSE on error.
Entries in the LDAP result are read sequentially using the ldap_first_entry() and ldap_next_entry() functions. ldap_first_entry() returns the entry identifier for first entry in the result. This entry identifier is then supplied to ldap_next_entry() routine to get successive entries from the result.
See also ldap_get_entries().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ldap_free_result() frees up the memory allocated internally to store the result and pointed by the result_identifier. All result memory will be automatically freed when the script terminates.
Typically all the memory allocated for the ldap result gets freed at the end of the script. In case the script is making successive searches which return large result sets, ldap_free_result() could be called to keep the runtime memory usage by the script low.
Returns a complete entry information in a multi-dimensional array on success and FALSE on error.
ldap_get_attributes() function is used to simplify reading the attributes and values from an entry in the search result. The return value is a multi-dimensional array of attributes and values.
Having located a specific entry in the directory, you can find out what information is held for that entry by using this call. You would use this call for an application which "browses" directory entries and/or where you do not know the structure of the directory entries. In many applications you will be searching for a specific attribute such as an email address or a surname, and won't care what other data is held.
return_value["count"] = number of attributes in the entry
return_value[0] = first attribute
return_value[n] = nth attribute
return_value["attribute"]["count"] = number of values for attribute
return_value["attribute"][0] = first value of the attribute
return_value["attribute"][i] = (i+1)th value of the attribute
P°φklad 1. Show the list of attributes held for a particular directory entry
|
See also ldap_first_attribute() and ldap_next_attribute().
Returns the DN of the result entry and FALSE on error.
ldap_get_dn() function is used to find out the DN of an entry in the result.
Returns a complete result information in a multi-dimensional array on success and FALSE on error.
ldap_get_entries() function is used to simplify reading multiple entries from the result, specified with result_identifier, and then reading the attributes and multiple values. The entire information is returned by one function call in a multi-dimensional array. The structure of the array is as follows.
The attribute index is converted to lowercase. (Attributes are case-insensitive for directory servers, but not when used as array indices.)
return_value["count"] = number of entries in the result
return_value[0] : refers to the details of first entry
return_value[i]["dn"] = DN of the ith entry in the result
return_value[i]["count"] = number of attributes in ith entry
return_value[i][j] = jth attribute in the ith entry in the result
return_value[i]["attribute"]["count"] = number of values for
attribute in ith entry
return_value[i]["attribute"][j] = jth value of attribute in ith entry
See also ldap_first_entry() and ldap_next_entry()
Sets retval to the value of the specified option. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The parameter option can be one of: LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN. These are described in draft-ietf-ldapext-ldap-c-api-xx.txt
Poznßmka: This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x, and was added in PHP 4.0.4
See also ldap_set_option().
Returns an array of values for the attribute on success and FALSE on error.
ldap_get_values_len() function is used to read all the values of the attribute in the entry in the result. entry is specified by the result_entry_identifier. The number of values can be found by indexing "count" in the resultant array. Individual values are accessed by integer index in the array. The first index is 0.
This function is used exactly like ldap_get_values() except that it handles binary data and not string data.
Poznßmka: This function was added in 4.0.
Returns an array of values for the attribute on success and FALSE on error.
ldap_get_values() function is used to read all the values of the attribute in the entry in the result. entry is specified by the result_entry_identifier. The number of values can be found by indexing "count" in the resultant array. Individual values are accessed by integer index in the array. The first index is 0.
This call needs a result_entry_identifier, so needs to be preceded by one of the ldap search calls and one of the calls to get an individual entry.
You application will either be hard coded to look for certain attributes (such as "surname" or "mail") or you will have to use the ldap_get_attributes() call to work out what attributes exist for a given entry.
LDAP allows more than one entry for an attribute, so it can, for example, store a number of email addresses for one person's directory entry all labeled with the attribute "mail"
return_value["count"] = number of values for attribute
return_value[0] = first value of attribute
return_value[i] = ith value of attribute
P°φklad 1. List all values of the "mail" attribute for a directory entry
|
Returns a search result identifier or FALSE on error.
ldap_list() performs the search for a specified filter on the directory with the scope LDAP_SCOPE_ONELEVEL.
LDAP_SCOPE_ONELEVEL means that the search should only return information that is at the level immediately below the base_dn given in the call. (Equivalent to typing "ls" and getting a list of files and folders in the current working directory.)
This call takes 5 optional parameters. See ldap_search() notes.
Poznßmka: These optional parameters were added in 4.0.2: attrsonly, sizelimit, timelimit, deref.
P°φklad 1. Produce a list of all organizational units of an organization
|
Poznßmka: From 4.0.5 on it's also possible to do parallel searches. See ldap_search() for details.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function adds attribute(s) to the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level additions are done by the ldap_add() function.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function removes attribute(s) from the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level deletions are done by the ldap_delete() function.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function replaces attribute(s) from the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level modifications are done by the ldap_modify() function.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ldap_modify() function is used to modify the existing entries in the LDAP directory. The structure of the entry is same as in ldap_add().
Returns the next attribute in an entry on success and FALSE on error.
ldap_next_attribute() is called to retrieve the attributes in an entry. The internal state of the pointer is maintained by the ber_identifier. It is passed by reference to the function. The first call to ldap_next_attribute() is made with the result_entry_identifier returned from ldap_first_attribute().
See also ldap_get_attributes()
Returns entry identifier for the next entry in the result whose entries are being read starting with ldap_first_entry(). If there are no more entries in the result then it returns FALSE.
ldap_next_entry() function is used to retrieve the entries stored in the result. Successive calls to the ldap_next_entry() return entries one by one till there are no more entries. The first call to ldap_next_entry() is made after the call to ldap_first_entry() with the result_entry_identifier as returned from the ldap_first_entry().
See also ldap_get_entries()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns a search result identifier or FALSE on error.
ldap_read() performs the search for a specified filter on the directory with the scope LDAP_SCOPE_BASE. So it is equivalent to reading an entry from the directory.
An empty filter is not allowed. If you want to retrieve absolutely all information for this entry, use a filter of "objectClass=*". If you know which entry types are used on the directory server, you might use an appropriate filter such as "objectClass=inetOrgPerson".
This call takes 5 optional parameters. See ldap_search() notes.
Poznßmka: These optional parameters were added in 4.0.2: attrsonly, sizelimit, timelimit, deref.
From 4.0.5 on it's also possible to do parallel searches. See ldap_search() for details.
The entry specified by dn is renamed/moved. The new RDN is specified by newrdn and the new parent/superior entry is specified by newparent. If the parameter deleteoldrdn is TRUE the old RDN value(s) is removed, else the old RDN value(s) is retained as non-distinguished values of the entry. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: This function currently only works with LDAPv3. You may have to use ldap_set_option() prior to binding to use LDAPv3. This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x, and was added in PHP 4.0.5.
Returns a search result identifier or FALSE on error.
ldap_search() performs the search for a specified filter on the directory with the scope of LDAP_SCOPE_SUBTREE. This is equivalent to searching the entire directory. base_dn specifies the base DN for the directory.
There is an optional fourth parameter, that can be added to restrict the attributes and values returned by the server to just those required. This is much more efficient than the default action (which is to return all attributes and their associated values). The use of the fourth parameter should therefore be considered good practice.
The fourth parameter is a standard PHP string array of the required attributes, e.g. array("mail", "sn", "cn") Note that the "dn" is always returned irrespective of which attributes types are requested.
Note too that some directory server hosts will be configured to return no more than a preset number of entries. If this occurs, the server will indicate that it has only returned a partial results set. This occurs also if the sixth parameter sizelimit has been used to limit the count of fetched entries.
The fifth parameter attrsonly should be set to 1 if only attribute types are wanted. If set to 0 both attributes types and attribute values are fetched which is the default behaviour.
With the sixth parameter sizelimit it is possible to limit the count of entries fetched. Setting this to 0 means no limit. NOTE: This parameter can NOT override server-side preset sizelimit. You can set it lower though.
The seventh parameter timelimit sets the number of seconds how long is spend on the search. Setting this to 0 means no limit. NOTE: This parameter can NOT override server-side preset timelimit. You can set it lower though.
The eighth parameter deref specifies how aliases should be handled during the search. It can be one of the following:
LDAP_DEREF_NEVER - (default) aliases are never dereferenced.
LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but not when locating the base object of the search.
LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base object but not during the search.
LDAP_DEREF_ALWAYS - aliases should be dereferenced always.
Poznßmka: These optional parameters were added in 4.0.2: attrsonly, sizelimit, timelimit, deref.
The search filter can be simple or advanced, using boolean operators in the format described in the LDAP documentation (see the Netscape Directory SDK for full information on filters).
The example below retrieves the organizational unit, surname, given name and email address for all people in "My Company" where the surname or given name contains the substring $person. This example uses a boolean filter to tell the server to look for information in more than one attribute.
P°φklad 1. LDAP search
|
From 4.0.5 on it's also possible to do parallel searches. To do this you use an array of link identifiers, rather than a single identifier, as the first argument. If you don't want the same base DN and the same filter for all the searches, you can also use an array of base DNs and/or an array of filters. Those arrays must be of the same size as the link identifier array since the first entries of the arrays are used for one search, the second entries are used for another, and so on. When doing parallel searches an array of search result identifiers is returned, except in case of error, then the entry corresponding to the search will be FALSE. This is very much like the value normally returned, except that a result identifier is always returned when a search was made. There are some rare cases where the normal search returns FALSE while the parallel search returns an identifier.
Sets the value of the specified option to be newval. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. on error.
The parameter option can be one of: LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN, LDAP_OPT_SERVER_CONTROLS, LDAP_OPT_CLIENT_CONTROLS. Here's a brief description, see draft-ietf-ldapext-ldap-c-api-xx.txt for details.
The options LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION and LDAP_OPT_ERROR_NUMBER have integer value, LDAP_OPT_REFERRALS and LDAP_OPT_RESTART have boolean value, and the options LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING and LDAP_OPT_MATCHED_DN have string value. The first example illustrates their use. The options LDAP_OPT_SERVER_CONTROLS and LDAP_OPT_CLIENT_CONTROLS require a list of controls, this means that the value must be an array of controls. A control consists of an oid identifying the control, an optional value, and an optional flag for criticality. In PHP a control is given by an array containing an element with the key oid and string value, and two optional elements. The optional elements are key value with string value and key iscritical with boolean value. iscritical defaults to FALSE if not supplied. See also the second example below.
Poznßmka: This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x, and was added in PHP 4.0.4.
P°φklad 2. Set server controls
|
See also ldap_get_option().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Funkce mail() umo╛≥uje odesφlat maily.
Aby byly tyto funkce dostupnΘ, musφ mφt PHP p°i kompilaci p°φstup ke spustitelnΘmu souboru sendmail na va╣em systΘmu. Pokud pou╛φvßte jin² program, jako qmail nebo postfix, pou╛ijte odpovφdajφcφ nßhradu za sendmail, kterΘ je v danΘm programu k dispozici. PHP bude sendmail hledat nejprve v cest∞ PATH a pak zde: /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib. V°ele doporuΦujeme mφt sendmail dostupn² z cesty PATH. U╛ivatel, kter² PHP zkompiloval, takΘ musφ mφt prßvo p°φstupu ke spustitelnΘmu souboru sendmail.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. KonfiguraΦnφ volby roz╣φ°enφ Mail
Nßzev | V²chozφ | M∞nitelnΘ |
---|---|---|
SMTP | "localhost" | PHP_INI_ALL |
smtp_port | "25" | PHP_INI_ALL |
sendmail_from | NULL | PHP_INI_ALL |
sendmail_path | DEFAULT_SENDMAIL_PATH | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Pou╛φvß se pouze pod Windows: DNS jmΘno nebo IP adresa SMTP serveru, kter² PHP pou╛ije pro posφlßnφ e-mail∙ ve funkci mail().
Pou╛φvß se pouze pod Windows: ╚φslo portu na serveru urΦenΘm v direktiv∞ SMTP, na kter² se mß p°ipojit p°i posφlßnφ e-mail∙ ve funkci mail(). V²chozφ je Φφslo 25. K dispozici pouze od PHP 4.3.0.
Jakß adresa "From:" se mß pou╛φt p°i posφlßnφ e-mailu z PHP pod Windows.
Kde lze najφt program sendmail, obvykle /usr/sbin/sendmail nebo /usr/lib/sendmail. P°φkaz configure se pokusφ tento soubor nalΘzt a nastavit, ale kdy╛ neusp∞je, m∙╛ete ho nastavit zde.
Na systΘmech, na kter²ch se nepou╛φvß sendmail, by m∞la b²t tato direktiva nastavena na nßhradu p°φkazu sendmail, kterou poskytuje dan² systΘm (pokud existuje). Nap°φklad u╛ivatelΘ systΘmu Qmail mohou tuto direktivu za normßlnφch okolnostφ nastavit na /var/qmail/bin/sendmail nebo na /var/qmail/bin/qmail-inject.
P°φkaz qmail-inject nepot°ebuje ╛ßdnΘ p°epφnaΦe, aby e-maily korektn∞ zpracoval.
ezmlm_hash() PoΦφtß hash hodnotu, kterß je pot°eba pro uchovßvßnφ EZMLM mailing list∙ v MySQL databßzi.
mail() automaticky odmailuje vzkaz specifikovan² v message p°φjemci specifikovanΘmu v to. P°idßnφm Φßrky mezi adresami v to m∙╛ete specifikovat vφce p°φjemc∙.
Pokud je p°edßn Φtvrt² argument, jeho hodnota se vlo╛φ na konec hlaviΦek. Toto se obvykle pou╛φvß k p°idßnφ extra hlaviΦek. VφcenßsobnΘ hlaviΦky se odd∞lujφ za°ßdkovßnφm.
P°φklad 3. Odeslßnφ komplexnφho emailu
|
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
This extension has been moved from PHP as of PHP 4.2.0 and now mailparse lives in PECL.
(4.1.0 - 4.1.2 only)
mailparse_determine_best_xfer_encoding -- Figures out the best way of encoding the content read from the file pointer fp, which must be seek-ableVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_msg_extract_part_file -- Extracts/decodes a message section, decoding the transfer encodingVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_msg_extract_part -- Extracts/decodes a message section. If callbackfunc is not specified, the contents will be sent to "stdout"Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_msg_get_part_data -- Returns an associative array of info about the messageVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_msg_get_structure -- Returns an array of mime section names in the supplied messageVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_msg_parse_file -- Parse file and return a resource representing the structureVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_rfc822_parse_addresses -- Parse addresses and returns a hash containing that dataVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.1.0 - 4.1.2 only)
mailparse_stream_encode -- Streams data from source file pointer, apply encoding and write to destfpVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
mailparse_uudecode_all -- Scans the data from fp and extract each embedded uuencoded file. Returns an array listing filename informationVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tyto matematickΘ funkce pracujφ pouze s hodnotami v rozmezφ typ∙ integer a float (v souΦasnosti odpovφdajφ typ∙m long resp. double jazyka C). Pokud pot°ebujete pracovat s v∞t╣φmi Φφsly, pou╛ijte funkce pro prßci s libovoln∞ p°esn²mi Φφsly.
Podφvejte se takΘ na aritmetickΘ operßtory.
Konstanty z tohoto seznamu jsou v╛dy dostupnΘ jako souΦßst jßdra PHP.
Tabulka 1. MatematickΘ konstanty
Konstanta | Hodnota | Popis |
---|---|---|
M_PI | 3.14159265358979323846 | Pφ |
M_E | 2.7182818284590452354 | e |
M_LOG2E | 1.4426950408889634074 | log_2 e |
M_LOG10E | 0.43429448190325182765 | log_10 e |
M_LN2 | 0.69314718055994530942 | log_e 2 |
M_LN10 | 2.30258509299404568402 | log_e 10 |
M_PI_2 | 1.57079632679489661923 | pi/2 |
M_PI_4 | 0.78539816339744830962 | pi/4 |
M_1_PI | 0.31830988618379067154 | 1/pi |
M_2_PI | 0.63661977236758134308 | 2/pi |
M_SQRTPI | 1.77245385090551602729 | sqrt(pi) [4.0.2] |
M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(pi) |
M_SQRT2 | 1.41421356237309504880 | sqrt(2) |
M_SQRT3 | 1.73205080756887729352 | sqrt(3) [4.0.2] |
M_SQRT1_2 | 0.70710678118654752440 | 1/sqrt(2) |
M_LNPI | 1.14472988584940017414 | log_e(pi) [4.0.2] |
M_EULER | 0.57721566490153286061 | Eulerova konstanta [4.0.2] |
Vrßtφ absolutnφ hodnotu parametru number. Pokud je parametr number typu float, nßvratovß hodnota je takΘ typu float, jinak je typu integer (proto╛e float mß obvykle v∞t╣φ rozmezφ hodnot ne╛ integer).
Vrßnφ arcus cosinus parametru arg v radißnech. acos() je inverznφ k funkci cos(), co╛ znamenß, ╛e a==cos(acos(a)) pro ka╛dou hodnotu z definiΦnφho oboru funkce acos().
Vrßtφ inversnφ hyperbolick² cosinus parametru arg, co╛ je hodnota, jejφ╛ hyperbolick² cosinus je arg.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Vrßtφ arcus sinus parametru arg v radißnech. asin() je inverznφ k funkci sin(), co╛ znamenß, ╛e a==sin(asin(a)) pro ka╛dou hodnotu z definiΦnφho oboru funkce asin().
Vrßtφ inversnφ hyperbolick² sinus parametru arg, co╛ je hodnota, jejφ╛ hyperbolick² sinus je arg.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Tato funkce spoΦφtß arcus tangens dvou prom∞nn²ch x a y. Je to skoro totΘ╛ jako spoΦφtßnφ arcus tangens z hodnoty y / x s tφm rozdφlem, ╛e podle znamΘnek obou argument∙ je urΦen kvadrant v²sledku.
Tato funkce vracφ v²sledek v radißnech, v rozmezφ -PI a PI (vΦetn∞).
Vrßtφ arcus tangens parametru arg v radißnech. atan() je inverznφ k funkci tan(), co╛ znamenß, ╛e a==tan(atan(a)) pro ka╛dou hodnotu z definiΦnφho oboru funkce atan().
Vrßtφ inversnφ hyperbolick² tangens parametru arg, co╛ je hodnota, jejφ╛ hyperbolick² tangens je arg.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Vrßtφ °et∞zec obsahujφcφ parametr number reprezentovan² v soustav∞ tobase. Soustava, ve kterΘ je parametr number je urΦena v parametru frombase. Oba parametry frombase a tobase musφ b²t mezi 2 a 36 vΦetn∞. ╚φslice v soustavßch se zßkladem v∞t╣φm ne╛ 10 budou reprezentovßny znaky a-z s tφm, ╛e a znamenß 10, b znamenß 11 a╛ z znamenß 35.
Vrßtφ desφtkovΘ Φφslo ekvivalentnφ binßrnφmu Φφslu uvedenΘmu v parametru binary_string.
bindec() p°evßdφ binßrnφ Φφslo na typ integer. Nejv∞t╣φ Φφslo, kterΘ lze p°evΘst, je 31 bit∙ jediΦek neboli 2147483647 desφtkov∞.
Viz takΘ decbin(), octdec(), hexdec() a base_convert().
Vrßtφ prvnφ v∞t╣φ celΘ Φφslo zφskanΘ p°φpadn²m zaokrouhlenφm parametru value nahoru. Nßvratovß hodnota funkce ceil() je typu float, proto╛e typ float umo╛≥uje ulo╛it v∞t╣φ hodnoty ne╛ typ integer.
Vrßtφ hyperbolick² cosinus parametru arg, kter² je definovßn jako (exp(arg) + exp(-arg))/2.
Vrßtφ °et∞zec obsahujφcφ binßrnφ reprezentaci Φφsla p°edanΘho v parametru number. Nejv∞t╣φ p°evoditelnΘ Φφslo je 4294967295 desφtkov∞, kterΘ se p°evede na 32 jedniΦek.
Viz takΘ bindec(), decoct(), dechex() a base_convert().
Vrßtφ °et∞zec obsahujφcφ hexadecimßlnφ reprezentaci Φφsla p°edanΘho v parametru number. Nejv∞t╣φ p°evoditelnΘ Φφslo je 2147483647 desφtkov∞, kterΘ se p°evede na "7fffffff".
Viz takΘ hexdec(), decbin(), decoct() a base_convert().
Vrßtφ °et∞zec obsahujφcφ osmiΦkovou reprezentaci Φφsla p°edanΘho v parametru number. Nejv∞t╣φ p°evoditelnΘ Φφslo je 2147483647 desφtkov∞, kterΘ se p°evede na "17777777777".
Viz takΘ octdec(), decbin(), dechex() a base_convert().
Tato funkce p°evede parametr number ve stupnφch na odpovφdajφcφ hodnotu v radißnech.
Viz takΘ rad2deg().
(PHP 4 >= 4.1.0)
expm1 -- Vrßtφ exp(number) - 1 vypoΦφtan² zp∙sobem, kter² je p°esn² i v p°φpad∞, ╛e je hodonota parametru blφzkß nuleVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vrßtφ prvnφ men╣φ celΘ Φφslo zφskanΘ p°φpadn²m zaokrouhlenφm parametru value dol∙. Nßvratovß hodnota funkce ceil() je typu float, proto╛e typ float umo╛≥uje ulo╛it v∞t╣φ hodnoty ne╛ typ integer.
Vrßtφ neceloΦφseln² zbytek d∞lenφ d∞lence (x) d∞litelem (y). Zbytek (r) je definovßn jako: x = i * y + r, pro n∞jakΘ celΘ Φφslo i. Pokud je parametr y nenulov², mß v²sledek r znamΘnko podle parametru x a absolutnφ hodnotu men╣φ ne╛ parametr y.
Vrßtφ nejv∞t╣φ hodnotu, kterou m∙╛e vrßtit funkce rand().
Viz takΘ rand(), srand() a mt_getrandmax().
Vrßtφ desφtkovΘ Φφslo ekvivalentnφ hexadecimßlnφmu Φφslu uvedenΘmu v parametru hex_string. hexdec() p°evßdφ hexadecimßlnφ Φφslo na typ integer. Nejv∞t╣φ Φφslo, kterΘ lze p°evΘst, je 7fffffff neboli 2147483647 desφtkov∞.
hexdec() zam∞nφ v╣echny nehexadecimßlnφ znaky Φφslicφ 0. V tomto p°φpad∞ jsou nuly vlevo ignorovßny, ale nuly vpravo jsou zapoΦφtßny.
Viz takΘ dechex(), bindec(), octdec() a base_convert().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vrßtφ TRUE, pokud je parametr val koneΦnΘ Φφslo v rozsahu povolenΘm v PHP pro typ float na danΘ platform∞.
Viz takΘ is_infinite() a is_nan().
Vrßtφ TRUE, pokud je parametr val nekoneΦnΘ Φφslo (kladnΘ nebo zßpornΘ), t.j. nap°φklad v²sledek log(0) nebo libovolnß hodnota p°φli╣ velkß pro typ float na danΘ platform∞.
Viz takΘ is_finite() a is_nan().
Vrßtφ TRUE, pokud je parametr val 'neΦφslo', t.j. nap°φklad v²sledek acos(1.01).
Viz takΘ is_finite() a is_infinite().
lcg_value() vrßtφ pseudonßhodnΘ Φφslo v rozmezφ (0, 1). Funkce kombinuje dva kongruenΦnφ generßtory s periodou 2^31 - 85 a 2^31 - 249. Perioda tΘto funkce odpovφdß souΦinu obou prvoΦφsel.
(PHP 4 >= 4.1.0)
log1p -- Vrßtφ log(1 + number) vypoΦφtan² zp∙sobem, kter² je p°esn² i v p°φpad∞, ╛e je hodonota parametru blφzkß nuleVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Pokud je p°edßn voliteln² parametr base, vrßtφ funkce logbase arg, jinak vrßtφ p°irozen² logaritmus parametru arg.
Poznßmka: Parametr base je k dizpocici od PHP 4.3.0.
Logaritmus o zßkladu b Φφsla n lze samoz°ejm∞ vypoΦφtat jako logb(n) = log(n)/log(b), kde log je p°irozen² logaritmus.
Viz takΘ exp().
Funkce max() vrßtφ Φφseln∞ nejv∞t╣φ hodnotu z p°edan²ch parametr∙.
Pokud je prvnφ a jedin² parametr pole, vrßtφ funkce max() nejv∞t╣φ hodnotu z tohoto pole. Pokud je prvnφ parametr Φφslo, °et∞zec nebo desetinnΘ Φφslo, je nutnΘ funkci zavolat alespo≥ s dv∞mi parametry. Funkce max() v tomto p°φpad∞ vrßtφ hodnotu nejv∞t╣φho parametru. Lze porovnat neomezenΘ mno╛stvφ hodnot.
Poznßmka: PHP pracuje s neΦφseln²m parametrem typu string jako s hodnotou 0, ale pokud bude tato hodnota shledßna nejv∞t╣φ, vrßtφ funkce p°edan² °et∞zec. Pokud se jako 0 vyhodnotφ vφce parametr∙, pracuje funkce max() s parametrem, kter² je uveden jako prvnφ (nejvφce vlevo).
P°φklad 1. P°φklady pou╛itφ funkce max()
|
Funkce min() vrßtφ Φφseln∞ nejmen╣φ hodnotu z p°edan²ch parametr∙.
Pokud je prvnφ a jedin² parametr pole, vrßtφ funkce min() nejmen╣φ hodnotu z tohoto pole. Pokud je prvnφ parametr Φφslo, °et∞zec nebo desetinnΘ Φφslo, je nutnΘ funkci zavolat alespo≥ s dv∞mi parametry. Funkce min() v tomto p°φpad∞ vrßtφ hodnotu nejmen╣φho parametru. Lze porovnat neomezenΘ mno╛stvφ hodnot.
Poznßmka: PHP pracuje s neΦφseln²m parametrem typu string jako s hodnotou 0, ale pokud bude tato hodnota shledßna nejmen╣φ, vrßtφ funkce p°edan² °et∞zec. Pokud se jako 0 vyhodnotφ vφce parametr∙, pracuje funkce min() s parametrem, kter² je uveden jako prvnφ (nejvφce vlevo).
P°φklad 1. Example uses of min()
|
Vrßtφ nejv∞t╣φ hodnotu, kterou m∙╛e vrßtit funkce mt_rand().
Viz takΘ mt_rand(), mt_srand() a getrandmax().
╪ada generßtor∙ nßhodn²ch Φφsel ze star╣φch knihoven libc mß podez°elΘ nebo neznßmΘ charakteristiky a je pomalß. PHP standardn∞ pou╛φvß ve funkci rand() generßtor nßhodn²ch Φφsel knihovny libc. Funkce mt_rand() tuto funkci pln∞ nahrazuje. Pou╛φvß generßtor nßhodn²ch Φφsel znßm²ch charakteristik Mersenne Twister, kter² generuje nßhodnß Φφsla pou╛itelnß pro r∙znΘ obory kryptografie (detaily viz na domßcφ strßnce). TakΘ je pr∙m∞rn∞ Φty°ikrßt rychlej╣φ ne╛ funkce z knihovny libc.
Pokud je funkce mt_rand() zavolßna bez nepovinn²ch parametr∙ min a max, vrßtφ pseudonßhodnΘ Φφslo v rozmezφ 0 a╛ RAND_MAX. Pokud chcete nap°φklad nßhodnΘ Φφslo v rozmezφ 5 a 15 (vΦetn∞), pou╛ijte mt_rand (5, 15).
Poznßmka: Od PHP 4.2.0 nenφ t°eba inicializovat generßtor nßhodn²ch Φφsel funkcφ srand() nebo mt_srand(), proto╛e se tak nynφ stane automaticky.
Poznßmka: Parametr max odpovφdal v PHP star╣φch ne╛ 3.0.7 v²znamu range. Pro zφskßnφ nßhodnΘho Φφsla v rozmezφ 5 a╛ 15 zavolejte v t∞chto verzφch mt_rand (5, 11).
Viz takΘ mt_srand(), mt_getrandmax() a rand().
Inicializuje generßtor nßhodn²ch Φφsel parametrem seed. Parametr seed je od PHP 4.2.0 nepovinn². Pokud nenφ uveden, je vygenerovßna co nejnßhodn∞j╣φ inicializace.
<?php // inicializace mikrosekundami function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } mt_srand(make_seed()); $randval = mt_rand(); ?> |
Poznßmka: Od PHP 4.2.0 nenφ t°eba inicializovat generßtor nßhodn²ch Φφsel funkcφ srand() nebo mt_srand(), proto╛e se tak nynφ stane automaticky.
Viz takΘ mt_rand(), mt_getrandmax() a srand().
Vrßtφ desφtkovΘ Φφslo ekvivalentnφ osmiΦkovΘmu Φφslu uvedenΘmu v parametru binary_string. Nejv∞t╣φ Φφslo, kterΘ lze p°evΘst, je 17777777777 neboli 2147483647 desφtkov∞.
Viz takΘ decoct(), bindec(), hexdec() a base_convert().
Vrßtφ p°ibli╛nou hodnotu pφ. Vrßcenß hodnota typu float mß p°esnost v zßvislosti na nastavenφ direktivy precision z php.ini, jejφ╛ v²chozφ nastavenφ je 14. Krom∞ toho lze takΘ pou╛φt konstantu M_PI, jejφ╛ hodnota je stejnß jako nßvratovß hodnota funkce pi().
Vrßtφ parametr base umocn∞n² hodnotou parametru exp. Pokud je to mo╛nΘ, vrßtφ tato funkce integer.
Pokud mocninu nelze vypoΦφtat, vyvolß funkce pow() varovßnφ a vrßtφ FALSE.
Varovßnφ |
V PHP 4.0.6 a star╣φch byla nßvratovß hodnota funkce pow() v╛dy typu float a funkce nevyvolßvala varovßnφ. |
Tato funkce p°evede parametr number v radißnech na odpovφdajφcφ hodnotu ve stupnφch.
Viz takΘ deg2rad().
Pokud je funkce rand() zavolßna bez nepovinn²ch parametr∙ min a max, vrßtφ pseudonßhodnΘ Φφslo v rozmezφ 0 a╛ RAND_MAX. Pokud chcete nap°φklad nßhodnΘ Φφslo v rozmezφ 5 a 15 (vΦetn∞), pou╛ijte rand (5, 15).
Poznßmka: Na n∞kter²ch platformßch (nap°. Windows) je RAND_MAX pouze 32768. Pokud pot°ebujete rozsah v∞t╣φ ne╛ 32768, pou╛ijte mφsto tΘto funkce rad∞ji funkci mt_rand().
Poznßmka: Od PHP 4.2.0 nenφ t°eba inicializovat generßtor nßhodn²ch Φφsel funkcφ srand() nebo mt_srand(), proto╛e se tak nynφ stane automaticky.
Poznßmka: Parametr max odpovφdal v PHP star╣φch ne╛ 3.0.7 v²znamu range. Pro zφskßnφ nßhodnΘho Φφsla v rozmezφ 5 a╛ 15 zavolejte v t∞chto verzφch rand (5, 11).
Viz takΘ srand(), getrandmax() a mt_rand().
Vrßtφ hodnotu parametru val zaokrouhlenou podle parametru precision (poΦet Φφsel za desetinnou teΦkou). Parametr precision m∙╛e b²t takΘ zßporn² nebo nulov² (v²chozφ).
Poznßmka: PHP ve v²chozφm nastavenφ nep°evßdφ sprßvn∞ °et∞zce ve tvaru "12,300.2". Viz p°evod z °et∞zc∙.
Poznßmka: Parametr precision je k dispozici od PHP 4.
Viz takΘ ceil(), floor() a number_format().
Funkce sin() vrßtφ sinus parametru arg. Parametr arg je v radißnech.
Vrßtφ hyperbolick² sinus parametru arg, kter² je definovßn jako (exp(arg) - exp(-arg))/2.
Vrßtφ odmocninu parametru arg.
<?php // P°esnost zßvisφ na direktiv∞ precision echo sqrt(9); // 3 echo sqrt(10); // 3.16227766 ... ?> |
Viz takΘ pow().
Inicializuje generßtor nßhodn²ch Φφsel parametrem seed. Parametr seed je od PHP 4.2.0 nepovinn². Pokud nenφ uveden, je vygenerovßna co nejnßhodn∞j╣φ inicializace.
<?php // inicializace mikrosekundami function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } srand(make_seed()); $randval = rand(); ?> |
Poznßmka: Od PHP 4.2.0 nenφ t°eba inicializovat generßtor nßhodn²ch Φφsel funkcφ srand() nebo mt_srand(), proto╛e se tak nynφ stane automaticky.
Viz takΘ rand(), getrandmax() a mt_srand().
There are many languages in which all characters can be expressed by single byte. Multi-byte character codes are used to express many characters for many languages. mbstring is developed to handle Japanese characters. However, many mbstring functions are able to handle character encoding other than Japanese.
A multi-byte character encoding represents single character with consecutive bytes. Some character encoding has shift(escape) sequences to start/end multi-byte character strings. Therefore, a multi-byte character string may be destroyed when it is divided and/or counted unless multi-byte character encoding safe method is used. This module provides multi-byte character safe string functions and other utility functions such as conversion functions.
Since PHP is basically designed for ISO-8859-1, some multi-byte character encoding does not work well with PHP. Therefore, it is important to set mbstring.language to appropriate language (i.e. "Japanese" for Japanese) and mbstring.internal_encoding to a character encoding that works with PHP.
PHP 4 Character Encoding Requirements
Per byte encoding
Single byte characters in range of 00h-7fh which is compatible with ASCII
Multi-byte characters without 00h-7fh
These are examples of internal character encoding that works with PHP and does NOT work with PHP.
Character encodings work with PHP: ISO-8859-*, EUC-JP, UTF-8 Character encodings do NOT work with PHP: JIS, SJIS |
Character encoding, that does not work with PHP, may be converted with mbstring's HTTP input/output conversion feature/function.
Poznßmka: SJIS should not be used for internal encoding unless the reader is familiar with parser/compiler, character encoding and character encoding issues.
Poznßmka: If you use databases with PHP, it is recommended that you use the same character encoding for both database and internal encoding for ease of use and better performance.
If you are using PostgreSQL, it supports character encoding that is different from backend character encoding. See the PostgreSQL manual for details.
mbstring is an extended module. You must enable the module with the configure script. Refer to the Install section for details.
The following configure options are related to the mbstring module.
--enable-mbstring=LANG: Enable mbstring functions. This option is required to use mbstring functions.
As of PHP 4.3.0, mbstring extension provides enhanced support for Simplified Chinese, Traditional Chinese, Korean, and Russian in addition to Japanese. To enable that feature, you will have to supply either one of the following options to the LANG parameter; --enable-mbstring=cn for Simplified Chinese support, --enable-mbstring=tw for Traditional Chinese support, --enable-mbstring=kr for Korean support, --enable-mbstring=ru for Russian support, and --enable-mbstring=ja for Japanese support.
Also --enable-mbstring=all is convenient for you to enable all the supported languages listed above.
Poznßmka: Japanese language support is also enabled by --enable-mbstring without any options for the sake of backwards compatibility.
--enable-mbstr-enc-trans : Enable HTTP input character encoding conversion using mbstring conversion engine. If this feature is enabled, HTTP input character encoding may be converted to mbstring.internal_encoding automatically.
Poznßmka: As of PHP 4.3.0, the option --enable-mbstr-enc-trans will be eliminated and replaced with mbstring.encoding_translation. HTTP input character encoding conversion is enabled when this is set to On (the default is Off).
--enable-mbregex: Enable regular expression functions with multibyte character support.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Multi-Byte String configuration options
Name | Default | Changeable |
---|---|---|
mbstring.language | NULL | PHP_INI_ALL |
mbstring.detect_order | NULL | PHP_INI_ALL |
mbstring.http_input | NULL | PHP_INI_ALL |
mbstring.http_output | NULL | PHP_INI_ALL |
mbstring.internal_encoding | NULL | PHP_INI_ALL |
mbstring.script_encoding | NULL | PHP_INI_ALL |
mbstring.substitute_character | NULL | PHP_INI_ALL |
mbstring.func_overload | "0" | PHP_INI_SYSTEM |
mbstring.encoding_translation | "0" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
mbstring.language defines default language used in mbstring. Note that this option defines mbstring.internal_encoding and mbstring.internal_encoding should be placed after mbstring.language in php.ini
mbstring.encoding_translation enables HTTP input character encoding detection and translation into internal character encoding.
mbstring.internal_encoding defines default internal character encoding.
mbstring.http_input defines default HTTP input character encoding.
mbstring.http_output defines default HTTP output character encoding.
mbstring.detect_order defines default character code detection order. See also mb_detect_order().
mbstring.substitute_character defines character to substitute for invalid character encoding.
mbstring.func_overloadoverload(replace) single byte functions by mbstring functions. mail(), ereg(), etc. are overloaded by mb_send_mail(), mb_ereg(), etc. Possible values are 0, 1, 2, 4 or a combination of them. For example, 7 for overload everything. 0: No overload, 1: Overload mail() function, 2: Overload str*() functions, 4: Overload ereg*() functions.
Web Browsers are supposed to use the same character encoding when submitting form. However, browsers may not use the same character encoding. See mb_http_input() to detect character encoding used by browsers.
If enctype is set to multipart/form-data in HTML forms, mbstring does not convert character encoding in POST data. The user must convert them in the script, if conversion is needed.
Although, browsers are smart enough to detect character encoding in HTML. charset is better to be set in HTTP header. Change default_charset according to character encoding.
P°φklad 1. php.ini setting example
|
P°φklad 2. php.ini setting for EUC-JP users
|
P°φklad 3. php.ini setting for SJIS users
|
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
HTTP input/output character encoding conversion may convert binary data also. Users are supposed to control character encoding conversion if binary data is used for HTTP input/output.
Poznßmka: For PHP 4.3.2 or earlier, if enctype for HTML form is set to multipart/form-data, mbstring does not convert character encoding in POST data. If it is the case, strings are needed to be converted to internal character encoding.
Poznßmka: Since PHP 4.3.3, if enctype for HTML form is set to multipart/form-data, and, mbstring.encoding_translation is set to On in php.ini POST variables and uploaded filename will be converted to internal character encoding. But, characters specified in 'name' of HTML form will not be converted.
HTTP Input
There is no way to control HTTP input character conversion from PHP script. To disable HTTP input character conversion, it has to be done in php.ini.
When using PHP as an Apache module, it is possible to override PHP ini setting per Virtual Host in httpd.conf or per directory with .htaccess. Refer to the Configuration section and Apache Manual for details.
HTTP Output
There are several ways to enable output character encoding conversion. One is using php.ini, another is using ob_start() with mb_output_handler() as ob_start callback function.
Poznßmka: For PHP3-i18n users, mbstring's output conversion differs from PHP3-i18n. Character encoding is converted using output buffer.
Currently, the following character encoding is supported by the mbstring module. Character encoding may be specified for mbstring functions' encoding parameter.
The following character encoding is supported in this PHP extension:
UCS-4, UCS-4BE, UCS-4LE, UCS-2, UCS-2BE, UCS-2LE, UTF-32, UTF-32BE, UTF-32LE, UCS-2LE, UTF-16, UTF-16BE, UTF-16LE, UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, ISO-2022-JP, JIS, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-13, ISO-8859-14, ISO-8859-15, byte2be, byte2le, byte4be, byte4le, BASE64, 7bit, 8bit and UTF7-IMAP.
As of PHP 4.3.0, the following character encoding support will be added experimentally : EUC-CN, CP936, HZ, EUC-TW, CP950, BIG-5, EUC-KR, UHC (CP949), ISO-2022-KR, Windows-1251 (CP1251), Windows-1252 (CP1252), CP866, KOI8-R.
php.ini entry, which accepts encoding name, accepts "auto" and "pass" also. mbstring functions, which accepts encoding name, and accepts "auto".
If "pass" is set, no character encoding conversion is performed.
If "auto" is set, it is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS".
See also mb_detect_order()
Poznßmka: "Supported character encoding" does not mean that it works as internal character code.
Because almost PHP application written for language using single-byte character encoding, there are some difficulties for multibyte string handling including Japanese. Almost PHP string functions such as substr() do not support multibyte string.
Multibyte extension (mbstring) has some PHP string functions with multibyte support (ex. substr() supports mb_substr()).
Multibyte extension (mbstring) also supports 'function overloading' to add multibyte string functionality without code modification. Using function overloading, some PHP string functions will be overloaded multibyte string functions. For example, mb_substr() is called instead of substr() if function overloading is enabled. Function overload makes easy to port application supporting only single-byte encoding for multibyte application.
mbstring.func_overload in php.ini should be set some positive value to use function overloading. The value should specify the category of overloading functions, should be set 1 to enable mail function overloading. 2 to enable string functions, 4 to regular expression functions. For example, if is set for 7, mail, strings, regex functions should be overloaded. The list of overloaded functions are shown in below.
Tabulka 2. Functions to be overloaded
value of mbstring.func_overload | original function | overloaded function |
---|---|---|
1 | mail() | mb_send_mail() |
2 | strlen() | mb_strlen() |
2 | strpos() | mb_strpos() |
2 | strrpos() | mb_strrpos() |
2 | substr() | mb_substr() |
2 | strtolower() | mb_strtolower() |
2 | strtoupper() | mb_strtoupper() |
2 | substr_count() | mb_substr_count() |
4 | ereg() | mb_ereg() |
4 | eregi() | mb_eregi() |
4 | ereg_replace() | mb_ereg_replace() |
4 | eregi_replace() | mb_eregi_replace() |
4 | split() | mb_split() |
Most Japanese characters need more than 1 byte per character. In addition, several character encoding schemes are used under a Japanese environment. There are EUC-JP, Shift_JIS(SJIS) and ISO-2022-JP(JIS) character encoding. As Unicode becomes popular, UTF-8 is used also. To develop Web applications for a Japanese environment, it is important to use the character set for the task in hand, whether HTTP input/output, RDBMS and E-mail.
Storage for a character can be up to six bytes
A multi-byte character is usually twice of the width compared to single-byte characters. Wider characters are called "zen-kaku" - meaning full width, narrower characters are called "han-kaku" - meaning half width. "zen-kaku" characters are usually fixed width.
Some character encoding defines shift(escape) sequence for entering/exiting multi-byte character strings.
ISO-2022-JP must be used for SMTP/NNTP.
"i-mode" web site is supposed to use SJIS.
Multi-byte character encoding and its related issues are very complex. It is impossible to cover in sufficient detail here. Please refer to the following URLs and other resources for further readings.
Unicode/UTF/UCS/etc
Japanese/Korean/Chinese character information
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf
mb_convert_case() returns case folded version of string converted in the way specified by mode.
mode can be one of MB_CASE_UPPER, MB_CASE_LOWER or MB_CASE_TITLE.
encoding specifies the encoding of str; if omitted, the internal character encoding value will be used.
The return value is str with the appropriate case folding applied.
By contrast to the standard case folding functions such as strtolower() and strtoupper(), case folding is performed on the basis of the Unicode character properties. Thus the behaviour of this function is not affected by locale settings and it can convert any characters that have 'alphabetic' property, such as A-umlaut (─).
For more information about the Unicode properties, please see http://www.unicode.org/unicode/reports/tr21/.
P°φklad 1. mb_convert_case() example
|
See also mb_strtolower(), mb_strtoupper(), strtolower() and strtoupper().
mb_convert_encoding() converts character encoding of string str from from-encoding to to-encoding.
str : String to be converted.
from-encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.
P°φklad 1. mb_convert_encoding() example
|
See also mb_detect_order().
(PHP 4 >= 4.0.6)
mb_convert_kana -- Convert "kana" one from another ("zen-kaku", "han-kaku" and more)mb_convert_kana() performs "han-kaku" - "zen-kaku" conversion for string str. It returns converted string. This function is only useful for Japanese.
option is conversion option. Default value is "KV".
encoding is character encoding. If it is omitted, internal character encoding is used.
Specify with combination of following options. Default value is KV.
Tabulka 1. Applicable Conversion Options
Option | Meaning |
---|---|
r | Convert "zen-kaku" alphabets to "han-kaku" |
R | Convert "han-kaku" alphabets to "zen-kaku" |
n | Convert "zen-kaku" numbers to "han-kaku" |
N | Convert "han-kaku" numbers to "zen-kaku" |
a | Convert "zen-kaku" alphabets and numbers to "han-kaku" |
A | Convert "han-kaku" alphabets and numbers to "zen-kaku" (Characters included in "a", "A" options are U+0021 - U+007E excluding U+0022, U+0027, U+005C, U+007E) |
s | Convert "zen-kaku" space to "han-kaku" (U+3000 -> U+0020) |
S | Convert "han-kaku" space to "zen-kaku" (U+0020 -> U+3000) |
k | Convert "zen-kaku kata-kana" to "han-kaku kata-kana" |
K | Convert "han-kaku kata-kana" to "zen-kaku kata-kana" |
h | Convert "zen-kaku hira-gana" to "han-kaku kata-kana" |
H | Convert "han-kaku kata-kana" to "zen-kaku hira-gana" |
c | Convert "zen-kaku kata-kana" to "zen-kaku hira-gana" |
C | Convert "zen-kaku hira-gana" to "zen-kaku kata-kana" |
V | Collapse voiced sound notation and convert them into a character. Use with "K","H" |
mb_convert_variables() convert character encoding of variables vars in encoding from-encoding to encoding to-encoding. It returns character encoding before conversion for success, FALSE for failure.
mb_convert_variables() join strings in Array or Object to detect encoding, since encoding detection tends to fail for short strings. Therefore, it is impossible to mix encoding in single array or object.
It from-encoding is specified by array or comma separated string, it tries to detect encoding from from-coding. When encoding is omitted, detect_order is used.
vars (3rd and larger) is reference to variable to be converted. String, Array and Object are accepted. mb_convert_variables() assumes all parameters have the same encoding.
mb_decode_mimeheader() decodes encoded-word string str in MIME header.
It returns decoded string in internal character encoding.
See also mb_encode_mimeheader().
Convert numeric string reference of string str in specified block to character. It returns converted string.
convmap is array to specifies code area to convert.
encoding is character encoding. If it is omitted, internal character encoding is used.
P°φklad 1. convmap example
|
See also mb_encode_numericentity().
mb_detect_encoding() detects character encoding in string str. It returns detected character encoding.
encoding-list is list of character encoding. Encoding order may be specified by array or comma separated list string.
If encoding_list is omitted, detect_order is used.
P°φklad 1. mb_detect_encoding() example
|
See also mb_detect_order().
mb_detect_order() sets automatic character encoding detection order to encoding-list. It returns TRUE for success, FALSE for failure.
encoding-list is array or comma separated list of character encoding. ("auto" is expanded to "ASCII, JIS, UTF-8, EUC-JP, SJIS")
If encoding-list is omitted, it returns current character encoding detection order as array.
This setting affects mb_detect_encoding() and mb_send_mail().
Poznßmka: mbstring currently implements following encoding detection filters. If there is an invalid byte sequence for following encoding, encoding detection will fail.
Poznßmka: UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP
For ISO-8859-*, mbstring always detects as ISO-8859-*.
For UTF-16, UTF-32, UCS2 and UCS4, encoding detection will fail always.
P°φklad 2. mb_detect_order() examples
|
See also mb_internal_encoding(), mb_http_input(), mb_http_output() and mb_send_mail().
mb_encode_mimeheader() converts string str to encoded-word for header field. It returns converted string in ASCII encoding.
charset is character encoding name. Default is ISO-2022-JP.
transfer-encoding is transfer encoding. It should be one of "B" (Base64) or "Q" (Quoted-Printable). Default is "B".
linefeed is end of line marker. Default is "\r\n" (CRLF).
See also mb_decode_mimeheader().
mb_encode_numericentity() converts specified character codes in string str from HTML numeric character reference to character code. It returns converted string.
convmap is array specifies code area to convert.
encoding is character encoding.
P°φklad 1. convmap example
|
P°φklad 2. mb_encode_numericentity() example
|
See also mb_decode_numericentity().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_match() returns TRUE if string matches regular expression pattern, FALSE if not.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_replace() scans string for matches to pattern, then replaces the matched text with replacement and returns the result string or FALSE on error. Multibyte character can be used in pattern.
Matching condition can be set by option parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. If e is specified, replacement string will be evaluated as PHP expression.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_eregi_replace().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_getpos() returns the point to start regular expression match for mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). The position is represented by bytes from the head of string.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_setpos().
(4.2.0 - 4.3.2 only)
mb_ereg_search_getregs -- Retrieve the result from the last multibyte regular expression matchVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_getregs() returns an array including the sub-string of matched part by last mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). If there are some maches, the first element will have the matched sub-string, the second element will have the first part grouped with brackets, the third element will have the second part grouped with brackets, and so on. It returns FALSE on error;
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_init().
(4.2.0 - 4.3.2 only)
mb_ereg_search_init -- Setup string and regular expression for multibyte regular expression matchVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_init() sets string and pattern for multibyte regular expression. These values are used for mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). It returns TRUE for success, FALSE for error.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_regs().
(4.2.0 - 4.3.2 only)
mb_ereg_search_pos -- Return position and length of matched part of multibyte regular expression for predefined multibyte stringVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_pos() returns an array including position of matched part for multibyte regular expression. The first element of the array will be the beginning of matched part, the second element will be length (bytes) of matched part. It returns FALSE on error.
The string for match is specified by mb_ereg_search_init(). It it is not specified, the previous one will be used.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_init().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_regs() executes the multibyte regular expression match, and if there are some matched part, it returns an array including substring of matched part as first element, the first grouped part with brackets as second element, the second grouped part as third element, and so on. It returns FALSE on error.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_init().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search_setpos() sets the starting point of match for mb_ereg_search().
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_init().
(4.2.0 - 4.3.2 only)
mb_ereg_search -- Multibyte regular expression match for predefined multibyte stringVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_search() returns TRUE if the multibyte string matches with the regular expression, FALSE for otherwise. The string for matching is set by mb_ereg_search_init(). If pattern is not specified, the previous one is used.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_search_init().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg() executes the regular expression match with multibyte support, and returns 1 if matches are found. If the optional third parameter was specified, the function returns the byte length of matched part, and the array regs will contain the substring of matched string. The functions returns 1 if it matches with the empty string. If no matches found or error happend, FALSE will be returned.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_eregi()
(4.2.0 - 4.3.2 only)
mb_eregi_replace -- Replace regular expression with multibyte support ignoring caseVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_ereg_replace() scans string for matches to pattern, then replaces the matched text with replacement and returns the result string or FALSE on error. Multibyte character can be used in pattern. The case will be ignored.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg_replace().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_eregi() executes the regular expression match with multibyte support, and returns 1 if matches are found. This function ignore case. If the optional third parameter was specified, the function returns the byte length of matched part, and the array regs will contain the substring of matched string. The functions returns 1 if it matches with the empty string. If no matches found or error happend, FALSE will be returned.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_get_info() returns internal setting parameter of mbstring.
If type isn't specified or is specified to "all", an array having the elements "internal_encoding", "http_output", "http_input", "func_overload" will be returned.
If type is specified for "http_output", "http_input", "internal_encoding", "func_overload", the specified setting parameter will be returned.
See also mb_internal_encoding(), mb_http_output().
mb_http_input() returns result of HTTP input character encoding detection.
type: Input string specifies input type. "G" for GET, "P" for POST, "C" for COOKIE. If type is omitted, it returns last input type processed.
Return Value: Character encoding name. If mb_http_input() does not process specified HTTP input, it returns FALSE.
See also mb_internal_encoding(), mb_http_output(), mb_detect_order().
If encoding is set, mb_http_output() sets HTTP output character encoding to encoding. Output after this function is converted to encoding. mb_http_output() returns TRUE for success and FALSE for failure.
If encoding is omitted, mb_http_output() returns current HTTP output character encoding.
See also mb_internal_encoding(), mb_http_input(), mb_detect_order().
mb_internal_encoding() sets internal character encoding to encoding If parameter is omitted, it returns current internal encoding.
encoding is used for HTTP input character encoding conversion, HTTP output character encoding conversion and default character encoding for string functions defined by mbstring module.
encoding: Character encoding name
Return Value: If encoding is set,mb_internal_encoding() returns TRUE for success, otherwise returns FALSE. If encoding is omitted, it returns current character encoding name.
See also mb_http_input(), mb_http_output() and mb_detect_order().
mb_language() sets language. If language is omitted, it returns current language as string.
language setting is used for encoding e-mail messages. Valid languages are "Japanese", "ja","English","en" and "uni" (UTF-8). mb_send_mail() uses this setting to encode e-mail.
Language and its setting is ISO-2022-JP/Base64 for Japanese, UTF-8/Base64 for uni, ISO-8859-1/quoted printable for English.
Return Value: If language is set and language is valid, it returns TRUE. Otherwise, it returns FALSE. When language is omitted, it returns language name as string. If no language is set previously, it returns FALSE.
See also mb_send_mail().
mb_output_handler() is ob_start() callback function. mb_output_handler() converts characters in output buffer from internal character encoding to HTTP output character encoding.
4.1.0 or later version, this handler adds charset HTTP header when following conditions are met:
Does not set Content-Type by header()
Default MIME type begins with text/
http_output setting is other than pass
contents : Output buffer contents
status : Output buffer status
Return Value: String converted
Poznßmka: If you want to output some binary data such as image from PHP script with PHP 4.3.0 or later, Content-Type: header must be send using header() before any binary data was send to client (e.g. header("Content-Type: image/png")). If Content-Type: header was send, output character encoding conversion will not be performed.
Note that if 'Content-Type: text/*' was send using header(), the sending data is regarded as text, encoding conversion will be performed using character encoding settings.
If you want to output some binary data such as image from PHP script with PHP 4.2.x or earlier, you must set output encoding to "pass" using mb_http_output().
See also ob_start().
mb_parse_str() parses GET/POST/COOKIE data and sets global variables. Since PHP does not provide raw POST/COOKIE data, it can only used for GET data for now. It preses URL encoded data, detects encoding, converts coding to internal encoding and set values to result array or global variables.
encoded_string: URL encoded data.
result: Array contains decoded and character encoding converted values.
Return Value: It returns TRUE for success or FALSE for failure.
See also mb_detect_order(), mb_internal_encoding().
mb_preferred_mime_name() returns MIME charset string for character encoding encoding. It returns charset string.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_regex_encoding() returns the character encoding used by multibyte regex functions.
If the optional parameter encoding is specified, it is set to the character encoding for multibyte regex. The default value is the internal character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_internal_encoding(), mb_ereg()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_regex_set_options() sets the default options described by options for multibyte regex functions.
Returns the previous options. If options is omitted, it returns the string that describes the current options.
Poznßmka: This function is supported in PHP 4.3.0 or higher.
See also mb_split(), mb_ereg() and mb_eregi()
mb_send_mail() sends email. Headers and message are converted and encoded according to mb_language() setting. mb_send_mail() is wrapper function of mail(). See mail() for details.
to is mail addresses send to. Multiple recipients can be specified by putting a comma between each address in to. This parameter is not automatically encoded.
subject is subject of mail.
message is mail message.
additional_headers is inserted at the end of the header. This is typically used to add extra headers. Multiple extra headers are separated with a newline ("\n").
additional_parameter is a MTA command line parameter. It is useful when setting the correct Return-Path header when using sendmail.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also mail(), mb_encode_mimeheader(), and mb_language().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
mb_split() split multibyte string using regular expression pattern and returns the result as an array.
If optional parameter limit is specified, it will be split in limit elements as maximum.
The internal encoding or the character encoding specified in mb_regex_encoding() will be used as character encoding.
Poznßmka: This function is supported in PHP 4.2.0 or higher.
See also: mb_regex_encoding(), mb_ereg().
mb_strcut() returns the portion of str specified by the start and length parameters.
mb_strcut() performs equivalent operation as mb_substr() with different method. If start position is multi-byte character's second byte or larger, it starts from first byte of multi-byte character.
It subtracts string from str that is shorter than length AND character that is not part of multi-byte string or not being middle of shift sequence.
encoding is character encoding. If it is not set, internal character encoding is used.
See also mb_substr(), mb_internal_encoding().
mb_strimwidth() truncates string str to specified width. It returns truncated string.
If trimmarker is set, trimmarker is appended to return value.
start is start position offset. Number of characters from the beginning of string. (First character is 0)
trimmarker is string that is added to the end of string when string is truncated.
encoding is character encoding. If it is omitted, internal encoding is used.
See also mb_strwidth() and mb_internal_encoding().
mb_strlen() returns number of characters in string str having character encoding encoding. A multi-byte character is counted as 1.
encoding is character encoding for str. If encoding is omitted, internal character encoding is used.
See also mb_internal_encoding(), strlen().
mb_strpos() returns the numeric position of the first occurrence of needle in the haystack string. If needle is not found, it returns FALSE.
mb_strpos() performs multi-byte safe strpos() operation based on number of characters. needle position is counted from the beginning of the haystack. First character's position is 0. Second character position is 1, and so on.
If encoding is omitted, internal character encoding is used. mb_strrpos() accepts string for needle where strrpos() accepts only character.
offset is search offset. If it is not specified, 0 is used.
encoding is character encoding name. If it is omitted, internal character encoding is used.
See also mb_strpos(), mb_internal_encoding(), strpos()
mb_strrpos() returns the numeric position of the last occurrence of needle in the haystack string. If needle is not found, it returns FALSE.
mb_strrpos() performs multi-byte safe strrpos() operation based on number of characters. needle position is counted from the beginning of haystack. First character's position is 0. Second character position is 1.
If encoding is omitted, internal encoding is assumed. mb_strrpos() accepts string for needle where strrpos() accepts only character.
encoding is character encoding. If it is not specified, internal character encoding is used.
See also mb_strpos(), mb_internal_encoding(), strrpos().
mb_strtolower() returns str with all alphabetic characters converted to lowercase.
encoding specifies the encoding of str; if omitted, the internal character encoding value will be used.
For more information about the Unicode properties, please see http://www.unicode.org/unicode/reports/tr21/.
By contrast to strtolower(), 'alphabetic' is determined by the Unicode character properties. Thus the behaviour of this function is not affected by locale settings and it can convert any characters that have 'alphabetic' property, such as A-umlaut (─).
See also strtolower(), mb_strtoupper() and mb_convert_case().
mb_strtoupper() returns str with all alphabetic characters converted to uppercase.
encoding specifies the encoding of str; if omitted, the internal character encoding value will be used.
By contrast to strtoupper(), 'alphabetic' is determined by the Unicode character properties. Thus the behaviour of this function is not affected by locale settings and it can convert any characters that have 'alphabetic' property, such as a-umlaut (Σ).
For more information about the Unicode properties, please see http://www.unicode.org/unicode/reports/tr21/.
See also strtoupper(), mb_strtolower() and mb_convert_case().
mb_strwidth() returns width of string str.
Multi-byte character usually twice of width compare to single byte character.
Tabulka 1. Characters width
Chars | Width |
---|---|
U+0000 - U+0019 | 0 |
U+0020 - U+1FFF | 1 |
U+2000 - U+FF60 | 2 |
U+FF61 - U+FF9F | 1 |
U+FFA0 - | 2 |
encoding is character encoding. If it is omitted, internal encoding is used.
See also: mb_strimwidth(), mb_internal_encoding().
mb_substitute_character() specifies substitution character when input character encoding is invalid or character code is not exist in output character encoding. Invalid characters may be substituted NULL(no output), string or integer value (Unicode character code value).
This setting affects mb_detect_encoding() and mb_send_mail().
substchar : Specify Unicode value as integer or specify as string as follows
"none" : no output
"long" : Output character code value (Example: U+3000,JIS+7E7E)
Return Value: If substchar is set, it returns TRUE for success, otherwise returns FALSE. If substchar is not set, it returns Unicode value or "none"/"long".
mb_substr_count() returns the number of times the needle substring occurs in the haystack string.
encoding specifies the encoding for needle and haystack. If omitted, internal character encoding is used.
See also substr_count(), mb_strpos(), mb_substr().
mb_substr() returns the portion of str specified by the start and length parameters.
mb_substr() performs multi-byte safe substr() operation based on number of characters. Position is counted from the beginning of str. First character's position is 0. Second character position is 1, and so on.
If encoding is omitted, internal encoding is assumed.
encoding is character encoding. If it is omitted, internal character encoding is used.
See also mb_strcut(), mb_internal_encoding().
MCAL stands for Modular Calendar Access Library.
Libmcal is a C library for accessing calendars. It's written to be very modular, with pluggable drivers. MCAL is the calendar equivalent of the IMAP module for mailboxes.
With mcal support, a calendar stream can be opened much like the mailbox stream with the IMAP support. Calendars can be local file stores, remote ICAP servers, or other formats that are supported by the mcal library.
Calendar events can be pulled up, queried, and stored. There is also support for calendar triggers (alarms) and recurring events.
With libmcal, central calendar servers can be accessed, removing the need for any specific database or local file programming.
Most of the functions use an internal event structure that is unique for each stream. This alleviates the need to pass around large objects between functions. There are convenience functions for setting, initializing, and retrieving the event structure values.
Poznßmka: PHP had an ICAP extension previously, but the original library and the PHP extension is not supported anymore. The suggested replacement is MCAL.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
This extension requires the mcal library to be installed. Grab the latest version from http://mcal.chek.com/ and compile and install it.
After you installed the mcal library, to get these functions to work, you have to compile PHP -with-mcal[=DIR].
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
mcal_append_event() stores the global event into an MCAL calendar for the stream mcal_stream.
Returns the id of the newly inserted event.
Creates a new calendar named calendar.
mcal_date_compare() Compares the two given dates, returns <0, 0, >0 if a<b, a==b, a>b respectively.
(PHP 3>= 3.0.13, PHP 4 )
mcal_date_valid -- Returns TRUE if the given year, month, day is a valid datemcal_date_valid() Returns TRUE if the given year, month and day is a valid date, FALSE if not.
mcal_day_of_week() returns the day of the week of the given date. Possible return values range from 0 for Sunday through 6 for Saturday.
mcal_day_of_year() returns the day of the year of the given date.
mcal_days_in_month() returns the number of days in the month month, taking into account if the considered year is a leap year or not.
Deletes the calendar named calendar.
mcal_delete_event() deletes the calendar event specified by the event_id.
Returns TRUE.
(PHP 3>= 3.0.15, PHP 4 )
mcal_event_add_attribute -- Adds an attribute and a value to the streams global event structuremcal_event_add_attribute() adds an attribute to the stream's global event structure with the value given by "value".
mcal_event_init() initializes a streams global event structure. this effectively sets all elements of the structure to 0, or the default settings.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_alarm -- Sets the alarm of the streams global event structuremcal_event_set_alarm() sets the streams global event structure's alarm to the given minutes before the event.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_category -- Sets the category of the streams global event structuremcal_event_set_category() sets the streams global event structure's category to the given string.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_class -- Sets the class of the streams global event structuremcal_event_set_class() sets the streams global event structure's class to the given value. The class is either 1 for public, or 0 for private.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_description -- Sets the description of the streams global event structuremcal_event_set_description() sets the streams global event structure's description to the given string.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_end -- Sets the end date and time of the streams global event structuremcal_event_set_end() sets the streams global event structure's end date and time to the given values.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_recur_daily -- Sets the recurrence of the streams global event structuremcal_event_set_recur_daily() sets the streams global event structure's recurrence to the given value to be reoccurring on a daily basis, ending at the given date.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_recur_monthly_mday -- Sets the recurrence of the streams global event structuremcal_event_set_recur_monthly_mday() sets the streams global event structure's recurrence to the given value to be reoccurring on a monthly by month day basis, ending at the given date.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_recur_monthly_wday -- Sets the recurrence of the streams global event structuremcal_event_set_recur_monthly_wday() sets the streams global event structure's recurrence to the given value to be reoccurring on a monthly by week basis, ending at the given date.
(PHP 3>= 3.0.15, PHP 4 )
mcal_event_set_recur_none -- Sets the recurrence of the streams global event structuremcal_event_set_recur_none() sets the streams global event structure to not recur (event->recur_type is set to MCAL_RECUR_NONE).
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_recur_weekly -- Sets the recurrence of the streams global event structuremcal_event_set_recur_weekly() sets the streams global event structure's recurrence to the given value to be reoccurring on a weekly basis, ending at the given date.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_recur_yearly -- Sets the recurrence of the streams global event structuremcal_event_set_recur_yearly() sets the streams global event structure's recurrence to the given value to be reoccurring on a yearly basis,ending at the given date.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_start -- Sets the start date and time of the streams global event structuremcal_event_set_start() sets the streams global event structure's start date and time to the given values.
Returns TRUE.
(PHP 3>= 3.0.13, PHP 4 )
mcal_event_set_title -- Sets the title of the streams global event structuremcal_event_set_title() sets the streams global event structure's title to the given string.
Returns TRUE.
(no version information, might be only in CVS)
mcal_expunge -- Deletes all events marked for being expunged.mcal_expunge() deletes all events which have been previously marked for deletion.
(PHP 3>= 3.0.13, PHP 4 )
mcal_fetch_current_stream_event -- Returns an object containing the current streams event structuremcal_fetch_current_stream_event() returns the current stream's event structure as an object containing:
int id - ID of that event.
int public - TRUE if the event if public, FALSE if it is private.
string category - Category string of the event.
string title - Title string of the event.
string description - Description string of the event.
int alarm - number of minutes before the event to send an alarm/reminder.
object start - Object containing a datetime entry.
object end - Object containing a datetime entry.
int recur_type - recurrence type
int recur_interval - recurrence interval
datetime recur_enddate - recurrence end date
int recur_data - recurrence data
int year - year
int month - month
int mday - day of month
int hour - hour
int min - minutes
int sec - seconds
int alarm - minutes before event to send an alarm
mcal_fetch_event() fetches an event from the calendar stream specified by id.
Returns an event object consisting of:
int id - ID of that event.
int public - TRUE if the event if public, FALSE if it is private.
string category - Category string of the event.
string title - Title string of the event.
string description - Description string of the event.
int alarm - number of minutes before the event to send an alarm/reminder.
object start - Object containing a datetime entry.
object end - Object containing a datetime entry.
int recur_type - recurrence type
int recur_interval - recurrence interval
datetime recur_enddate - recurrence end date
int recur_data - recurrence data
int year - year
int month - month
int mday - day of month
int hour - hour
int min - minutes
int sec - seconds
int alarm - minutes before event to send an alarm
0 - Indicates that this event does not recur
1 - This event recurs daily
2 - This event recurs on a weekly basis
3 - This event recurs monthly on a specific day of the month (e.g. the 10th of the month)
4 - This event recurs monthly on a sequenced day of the week (e.g. the 3rd Saturday)
5 - This event recurs on an annual basis
mcal_is_leap_year() returns 1 if the given year is a leap year, 0 if not.
(PHP 3>= 3.0.13, PHP 4 )
mcal_list_alarms -- Return a list of events that has an alarm triggered at the given datetimeReturns an array of event ID's that has an alarm going off between the start and end dates, or if just a stream is given, uses the start and end dates in the global event structure.
mcal_list_events() function takes in an optional beginning date and an end date for a calendar stream. An array of event id's that are between the given dates or the internal event dates are returned.
Returns an array of ID's that are between the start and end dates, or if just a stream is given, uses the start and end dates in the global event structure.
mcal_list_events() takes in an beginning date and an optional end date for a calendar stream. An array of event id's that are between the given dates or the internal event dates are returned.
mcal_next_recurrence() returns an object filled with the next date the event occurs, on or after the supplied date. Returns empty date field if event does not occur or something is invalid. Uses weekstart to determine what day is considered the beginning of the week.
Returns an MCAL stream on success, FALSE on error.
mcal_open() opens up an MCAL connection to the specified calendar store. If the optional options is specified, passes the options to that mailbox also. The streams internal event structure is also initialized upon connection.
Returns an MCAL stream on success, FALSE on error.
mcal_popen() opens up an MCAL connection to the specified calendar store. If the optional options is specified, passes the options to that mailbox also. The streams internal event structure is also initialized upon connection.
Renames the calendar old_name to new_name.
Reopens an MCAL stream to a new calendar.
mcal_reopen() reopens an MCAL connection to the specified calendar store. If the optional options is specified, passes the options to that mailbox also.
mcal_snooze() turns off an alarm for a calendar event specified by the stream_id and event_id.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
mcal_store_event() stores the modifications to the current global event for the given stream.
Returns the event id of the modified event on success and FALSE on error.
(PHP 3>= 3.0.13, PHP 4 )
mcal_time_valid -- Returns TRUE if the given year, month, day is a valid timemcal_time_valid() Returns TRUE if the given hour, minutes and seconds is a valid time, FALSE if not.
This is an interface to the mcrypt library, which supports a wide variety of block algorithms such as DES, TripleDES, Blowfish (default), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 and GOST in CBC, OFB, CFB and ECB cipher modes. Additionally, it supports RC6 and IDEA which are considered "non-free".
These functions work using mcrypt. To use it, download libmcrypt-x.x.tar.gz from http://mcrypt.sourceforge.net/ and follow the included installation instructions. Windows users will find all the needed compiled mcrypt binaries at http://ftp.emini.dk/pub/php/win32/mcrypt/.
If you linked against libmcrypt 2.4.x or higher, the following additional block algorithms are supported: CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT and the following stream ciphers: ENIGMA (crypt), PANAMA, RC4 and WAKE. With libmcrypt 2.4.x or higher another cipher mode is also available; nOFB.
You need to compile PHP with the --with-mcrypt[=DIR] parameter to enable this extension. DIR is the mcrypt install directory. Make sure you compile libmcrypt with the option --disable-posix-threads.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Mcrypt configuration options
Name | Default | Changeable |
---|---|---|
mcrypt.algorithms_dir | NULL | PHP_INI_ALL |
mcrypt.modes_dir | NULL | PHP_INI_ALL |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Mcrypt can operate in four block cipher modes (CBC, OFB, CFB, and ECB). If linked against libmcrypt-2.4.x or higher the functions can also operate in the block cipher mode nOFB and in STREAM mode. Below you find a list with all supported encryption modes together with the constants that are defines for the encryption mode. For a more complete reference and discussion see Applied Cryptography by Schneier (ISBN 0-471-11709-9).
MCRYPT_MODE_ECB (electronic codebook) is suitable for random data, such as encrypting other keys. Since data there is short and random, the disadvantages of ECB have a favorable negative effect.
MCRYPT_MODE_CBC (cipher block chaining) is especially suitable for encrypting files where the security is increased over ECB significantly.
MCRYPT_MODE_CFB (cipher feedback) is the best mode for encrypting byte streams where single bytes must be encrypted.
MCRYPT_MODE_OFB (output feedback, in 8bit) is comparable to CFB, but can be used in applications where error propagation cannot be tolerated. It's insecure (because it operates in 8bit mode) so it is not recommended to use it.
MCRYPT_MODE_NOFB (output feedback, in nbit) is comparable to OFB, but more secure because it operates on the block size of the algorithm.
MCRYPT_MODE_STREAM is an extra mode to include some stream algorithms like WAKE or RC4.
Some other mode and random device constants:
Here is a list of ciphers which are currently supported by the mcrypt extension. For a complete list of supported ciphers, see the defines at the end of mcrypt.h. The general rule with the mcrypt-2.2.x API is that you can access the cipher from PHP with MCRYPT_ciphername. With the libmcrypt-2.4.x and libmcrypt-2.5.x API these constants also work, but it is possible to specify the name of the cipher as a string with a call to mcrypt_module_open().
MCRYPT_3DES
MCRYPT_ARCFOUR_IV (libmcrypt > 2.4.x only)
MCRYPT_ARCFOUR (libmcrypt > 2.4.x only)
MCRYPT_BLOWFISH
MCRYPT_CAST_128
MCRYPT_CAST_256
MCRYPT_CRYPT
MCRYPT_DES
MCRYPT_DES_COMPAT (libmcrypt 2.2.x only)
MCRYPT_ENIGMA (libmcrypt > 2.4.x only, alias for MCRYPT_CRYPT)
MCRYPT_GOST
MCRYPT_IDEA (non-free)
MCRYPT_LOKI97 (libmcrypt > 2.4.x only)
MCRYPT_MARS (libmcrypt > 2.4.x only, non-free)
MCRYPT_PANAMA (libmcrypt > 2.4.x only)
MCRYPT_RIJNDAEL_128 (libmcrypt > 2.4.x only)
MCRYPT_RIJNDAEL_192 (libmcrypt > 2.4.x only)
MCRYPT_RIJNDAEL_256 (libmcrypt > 2.4.x only)
MCRYPT_RC2
MCRYPT_RC4 (libmcrypt 2.2.x only)
MCRYPT_RC6 (libmcrypt > 2.4.x only)
MCRYPT_RC6_128 (libmcrypt 2.2.x only)
MCRYPT_RC6_192 (libmcrypt 2.2.x only)
MCRYPT_RC6_256 (libmcrypt 2.2.x only)
MCRYPT_SAFER64
MCRYPT_SAFER128
MCRYPT_SAFERPLUS (libmcrypt > 2.4.x only)
MCRYPT_SERPENT(libmcrypt > 2.4.x only)
MCRYPT_SERPENT_128 (libmcrypt 2.2.x only)
MCRYPT_SERPENT_192 (libmcrypt 2.2.x only)
MCRYPT_SERPENT_256 (libmcrypt 2.2.x only)
MCRYPT_SKIPJACK (libmcrypt > 2.4.x only)
MCRYPT_TEAN (libmcrypt 2.2.x only)
MCRYPT_THREEWAY
MCRYPT_TRIPLEDES (libmcrypt > 2.4.x only)
MCRYPT_TWOFISH (for older mcrypt 2.x versions, or mcrypt > 2.4.x )
MCRYPT_TWOFISH128 (TWOFISHxxx are available in newer 2.x versions, but not in the 2.4.x versions)
MCRYPT_TWOFISH192
MCRYPT_TWOFISH256
MCRYPT_WAKE (libmcrypt > 2.4.x only)
MCRYPT_XTEA (libmcrypt > 2.4.x only)
You must (in CFB and OFB mode) or can (in CBC mode) supply an initialization vector (IV) to the respective cipher function. The IV must be unique and must be the same when decrypting/encrypting. With data which is stored encrypted, you can take the output of a function of the index under which the data is stored (e.g. the MD5 key of the filename). Alternatively, you can transmit the IV together with the encrypted data (see chapter 9.3 of Applied Cryptography by Schneier (ISBN 0-471-11709-9) for a discussion of this topic).
Mcrypt can be used to encrypt and decrypt using the above mentioned ciphers. If you linked against libmcrypt-2.2.x, the four important mcrypt commands (mcrypt_cfb(), mcrypt_cbc(), mcrypt_ecb(), and mcrypt_ofb()) can operate in both modes which are named MCRYPT_ENCRYPT and MCRYPT_DECRYPT, respectively.
If you linked against libmcrypt 2.4.x or 2.5.x, these functions are still available, but it is recommended that you use the advanced functions.
P°φklad 2. Encrypt an input value with TripleDES under 2.4.x and higher in ECB mode
|
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or higher. The mode should be either MCRYPT_ENCRYPT or MCRYPT_DECRYPT.
This function should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements.
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or higher. The mode should be either MCRYPT_ENCRYPT or MCRYPT_DECRYPT.
This function should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements.
(PHP 3>= 3.0.8, PHP 4 )
mcrypt_create_iv -- Create an initialization vector (IV) from a random sourcemcrypt_create_iv() is used to create an IV.
mcrypt_create_iv() takes two arguments, size determines the size of the IV, source specifies the source of the IV.
The source can be MCRYPT_RAND (system random number generator), MCRYPT_DEV_RANDOM (read data from /dev/random) and MCRYPT_DEV_URANDOM (read data from /dev/urandom). If you use MCRYPT_RAND, make sure to call srand() before to initialize the random number generator.
The IV is only meant to give an alternative seed to the encryption routines. This IV does not need to be secret at all, though it can be desirable. You even can send it along with your ciphertext without loosing security.
More information can be found at http://www.ciphersbyritter.com/GLOSSARY.HTM#IV, http://fn2.freenet.edmonton.ab.ca/~jsavard/crypto/co0409.htm and in chapter 9.3 of Applied Cryptography by Schneier (ISBN 0-471-11709-9) for a discussion of this topic.
mcrypt_decrypt() decrypts the data and returns the unencrypted data.
Cipher is one of the MCRYPT_ciphername constants of the name of the algorithm as string.
Key is the key with which the data is encrypted. If it's smaller that the required keysize, it is padded with '\0'.
Data is the data that will be decrypted with the given cipher and mode. If the size of the data is not n * blocksize, the data will be padded with '\0'.
Mode is one of the MCRYPT_MODE_modename constants of one of "ecb", "cbc", "cfb", "ofb", "nofb" or "stream".
The IV parameter is used for the initialisation in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all bytes set to '\0'.
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or higher. The mode should be either MCRYPT_ENCRYPT or MCRYPT_DECRYPT.
This function should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements.
This function returns the name of the algorithm.
P°φklad 1. mcrypt_enc_get_algorithms_name() example
|
This function returns the block size of the algorithm specified by the encryption descriptor td in bytes.
This function returns the size of the iv of the algorithm specified by the encryption descriptor in bytes. If it returns '0' then the IV is ignored in the algorithm. An IV is used in cbc, cfb and ofb modes, and in some algorithms in stream mode.
This function returns the maximum supported key size of the algorithm specified by the encryption descriptor td in bytes.
This function returns the name of the mode.
(PHP 4 >= 4.0.2)
mcrypt_enc_get_supported_key_sizes -- Returns an array with the supported keysizes of the opened algorithmReturns an array with the key sizes supported by the algorithm specified by the encryption descriptor. If it returns an empty array then all key sizes between 1 and mcrypt_enc_get_key_size() are supported by the algorithm.
(PHP 4 >= 4.0.2)
mcrypt_enc_is_block_algorithm_mode -- Checks whether the encryption of the opened mode works on blocksThis function returns TRUE if the mode is for use with block algorithms, otherwise it returns FALSE. (e.g. FALSE for stream, and TRUE for cbc, cfb, ofb).
(PHP 4 >= 4.0.2)
mcrypt_enc_is_block_algorithm -- Checks whether the algorithm of the opened mode is a block algorithmThis function returns TRUE if the algorithm is a block algorithm, or FALSE if it is a stream algorithm.
This function returns TRUE if the mode outputs blocks of bytes or FALSE if it outputs bytes. (e.g. TRUE for cbc and ecb, and FALSE for cfb and stream).
This function runs the self test on the algorithm specified by the descriptor td. If the self test succeeds it returns FALSE. In case of an error, it returns TRUE.
mcrypt_encrypt() encrypts the data and returns the encrypted data.
Cipher is one of the MCRYPT_ciphername constants of the name of the algorithm as string.
Key is the key with which the data will be encrypted. If it's smaller that the required keysize, it is padded with '\0'. It is better not to use ASCII strings for keys. It is recommended to use the mhash functions to create a key from a string.
Data is the data that will be encrypted with the given cipher and mode. If the size of the data is not n * blocksize, the data will be padded with '\0'. The returned crypttext can be larger that the size of the data that is given by data.
Mode is one of the MCRYPT_MODE_modename constants of one of "ecb", "cbc", "cfb", "ofb", "nofb" or "stream".
The IV parameter is used for the initialisation in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all bytes set to '\0'.
P°φklad 1. mcrypt_encrypt() Example
The above example will print out:
|
See also mcrypt_module_open() for a more advanced API and an example.
This function terminates encryption specified by the encryption descriptor (td). It clears all buffers, but does not close the module. You need to call mcrypt_module_close() yourself. (But PHP does this for you at the end of the script.) Returns FALSE on error, or TRUE on success.
See for an example mcrypt_module_open() and the entry on mcrypt_generic_init().
Varovßnφ |
This function is deprecated, use mcrypt_generic_deinit() instead. It can cause crashes when used with mcrypt_module_close() due to multiple buffer frees. |
This function terminates encryption specified by the encryption descriptor (td). Actually it clears all buffers, and closes all the modules used. Returns FALSE on error, or TRUE on success.
The maximum length of the key should be the one obtained by calling mcrypt_enc_get_key_size() and every value smaller than this is legal. The IV should normally have the size of the algorithms block size, but you must obtain the size by calling mcrypt_enc_get_iv_size(). IV is ignored in ECB. IV MUST exist in CFB, CBC, STREAM, nOFB and OFB modes. It needs to be random and unique (but not secret). The same IV must be used for encryption/decryption. If you do not want to use it you should set it to zeros, but this is not recommended.
The function returns a negative value on error, -3 when the key length was incorrect, -4 when there was a memory allocation problem and any other return value is an unknown error. If an error occurs a warning will be displayed accordingly.
You need to call this function before every call to mcrypt_generic() or mdecrypt_generic().
See for an example mcrypt_module_open() and the entry on mcrypt_generic_deinit().
This function encrypts data. The data is padded with "\0" to make sure the length of the data is n * blocksize. This function returns the encrypted data. Note that the length of the returned string can in fact be longer then the input, due to the padding of the data.
If you want to store the encrypted data in a database make sure to store the entire string as returned by mcrypt_generic, or the string will not entirely decrypt properly. If your original string is 10 characters long and the block size is 8 (use mcrypt_enc_get_block_size() to determine the blocksize), you would need at least 16 characters in your database field. Note the string returned by mdecrypt_generic() will be 16 characters as well...use rtrim()($str, "\0") to remove the padding.
If you are for example storing the data in a MySQL database remember that varchar fields automatically have trailing spaces removed during insertion. As encrypted data can end in a space (ASCII 32), the data will be damaged by this removal. Store data in a tinyblob/tinytext (or larger) field instead.
The encryption handle should always be initialized with mcrypt_generic_init() with a key and an IV before calling this function. Where the encryption is done, you should free the encryption buffers by calling mcrypt_generic_deinit(). See mcrypt_module_open() for an example.
See also mdecrypt_generic(), mcrypt_generic_init(), and mcrypt_generic_deinit().
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or 2.5.x.
mcrypt_get_block_size() is used to get the size of a block of the specified cipher (in combination with an encryption mode).
This example shows how to use this function when linked against libmcrypt 2.4.x and 2.5.x.
See also: mcrypt_get_key_size() and mcrypt_encrypt().
mcrypt_get_cipher_name() is used to get the name of the specified cipher.
mcrypt_get_cipher_name() takes the cipher number as an argument (libmcrypt 2.2.x) or takes the cipher name as an argument (libmcrypt 2.4.x or higher) and returns the name of the cipher or FALSE, if the cipher does not exist.
(PHP 4 >= 4.0.2)
mcrypt_get_iv_size -- Returns the size of the IV belonging to a specific cipher/mode combinationThe first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or higher.
mcrypt_get_iv_size() returns the size of the Initialisation Vector (IV) in bytes. On error the function returns FALSE. If the IV is ignored in the specified cipher/mode combination zero is returned.
cipher is one of the MCRYPT_ciphername constants of the name of the algorithm as string.
mode is one of the MCRYPT_MODE_modename constants or one of "ecb", "cbc", "cfb", "ofb", "nofb" or "stream". The IV is ignored in ECB mode as this mode does not require it. You will need to have the same IV (think: starting point) both at encryption and decryption stages, otherwise your encryption will fail.
td is the resource that is returned by mcrypt_module_open().
P°φklad 1. mcrypt_create_iv() example
|
See also mcrypt_get_block_size(), and mcrypt_create_iv().
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or 2.5.x.
mcrypt_get_key_size() is used to get the size of a key of the specified cipher (in combination with an encryption mode).
This example shows how to use this function when linked against libmcrypt 2.4.x and 2.5.x.
P°φklad 1. mcrypt_get_block_size() example
|
See also: mcrypt_get_block_size() and mcrypt_encrypt().
mcrypt_list_algorithms() is used to get an array of all supported algorithms in the lib_dir parameter.
mcrypt_list_algorithms() takes an optional lib_dir parameter which specifies the directory where all algorithms are located. If not specifies, the value of the mcrypt.algorithms_dir php.ini directive is used.
mcrypt_list_modes() is used to get an array of all supported modes in the lib_dir.
mcrypt_list_modes() takes as optional parameter a directory which specifies the directory where all modes are located. If not specifies, the value of the mcrypt.modes_dir php.ini directive is used.
P°φklad 1. mcrypt_list_modes() Example
The above example will produce a list with all supported algorithms in the default mode directory. If it is not set with the ini directive mcrypt.modes_dir, the default directory of mcrypt is used (which is /usr/local/lib/libmcrypt). |
This function closes the specified encryption handle.
See mcrypt_module_open() for an example.
(PHP 4 >= 4.0.2)
mcrypt_module_get_algo_block_size -- Returns the blocksize of the specified algorithmThis function returns the block size of the algorithm specified in bytes. The optional lib_dir parameter can contain the location where the mode module is on the system.
(PHP 4 >= 4.0.2)
mcrypt_module_get_algo_key_size -- Returns the maximum supported keysize of the opened modeThis function returns the maximum supported key size of the algorithm specified in bytes. The optional lib_dir parameter can contain the location where the mode module is on the system.
(PHP 4 >= 4.0.2)
mcrypt_module_get_supported_key_sizes -- Returns an array with the supported keysizes of the opened algorithmReturns an array with the key sizes supported by the specified algorithm. If it returns an empty array then all key sizes between 1 and mcrypt_module_get_algo_key_size() are supported by the algorithm. The optional lib_dir parameter can contain the location where the mode module is on the system.
See also mcrypt_enc_get_supported_key_sizes() which is used on open encryption modules.
(PHP 4 >= 4.0.2)
mcrypt_module_is_block_algorithm_mode -- This function returns if the the specified module is a block algorithm or notThis function returns TRUE if the mode is for use with block algorithms, otherwise it returns FALSE. (e.g. FALSE for stream, and TRUE for cbc, cfb, ofb). The optional lib_dir parameter can contain the location where the mode module is on the system.
(PHP 4 >= 4.0.2)
mcrypt_module_is_block_algorithm -- This function checks whether the specified algorithm is a block algorithmThis function returns TRUE if the specified algorithm is a block algorithm, or FALSE is it is a stream algorithm. The optional lib_dir parameter can contain the location where the algorithm module is on the system.
(PHP 4 >= 4.0.2)
mcrypt_module_is_block_mode -- This function returns if the the specified mode outputs blocks or notThis function returns TRUE if the mode outputs blocks of bytes or FALSE if it outputs just bytes. (e.g. TRUE for cbc and ecb, and FALSE for cfb and stream). The optional lib_dir parameter can contain the location where the mode module is on the system.
This function opens the module of the algorithm and the mode to be used. The name of the algorithm is specified in algorithm, e.g. "twofish" or is one of the MCRYPT_ciphername constants. The module is closed by calling mcrypt_module_close(). Normally it returns an encryption descriptor, or FALSE on error.
The algorithm_directory and mode_directory are used to locate the encryption modules. When you supply a directory name, it is used. When you set one of these to the empty string (""), the value set by the mcrypt.algorithms_dir or mcrypt.modes_dir ini-directive is used. When these are not set, the default directories that are used are the ones that were compiled in into libmcrypt (usually /usr/local/lib/libmcrypt).
The first line in the example above will try to open the DES cipher from the default directory and the EBC mode from the directory /usr/lib/mcrypt-modes. The second example uses strings as name for the cipher an dmode, this only works when the extension is linked against libmcrypt 2.4.x or 2.5.x.
P°φklad 2. Using mcrypt_module_open() in encryption
|
The first line in the example above will try to open the DES cipher from the default directory and the EBC mode from the directory /usr/lib/mcrypt-modes. The second example uses strings as name for the cipher and mode, this only works when the extension is linked against libmcrypt 2.4.x or 2.5.x.
See also mcrypt_module_close(), mcrypt_generic(), mdecrypt_generic(), mcrypt_generic_init(), and mcrypt_generic_deinit().
This function runs the self test on the algorithm specified. The optional lib_dir parameter can contain the location of where the algorithm module is on the system.
The function returns TRUE if the self test succeeds, or FALSE when if fails.
The first prototype is when linked against libmcrypt 2.2.x, the second when linked against libmcrypt 2.4.x or higher. The mode should be either MCRYPT_ENCRYPT or MCRYPT_DECRYPT.
This function should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements.
This function decrypts data. Note that the length of the returned string can in fact be longer then the unencrypted string, due to the padding of the data.
P°φklad 1. mdecrypt_generic() example
|
The above example shows how to check if the data before the encryption is the same as the data after the decryption. It is very important to reinitialize the encryption buffer with mcrypt_generic_init() before you try to decrypt the data.
The decryption handle should always be initialized with mcrypt_generic_init() with a key and an IV before calling this function. Where the encryption is done, you should free the encryption buffers by calling mcrypt_generic_deinit(). See mcrypt_module_open() for an example.
See also mcrypt_generic(), mcrypt_generic_init(), and mcrypt_generic_deinit().
These functions interface the MCVE API (libmcve), allowing you to work directly with MCVE from your PHP scripts. MCVE is Main Street Softworks' solution to direct credit card processing for Linux / Unix ( http://www.mainstreetsoftworks.com/ ). It lets you directly address the credit card clearing houses via your *nix box, modem and/or internet connection (bypassing the need for an additional service such as Authorize.Net or Pay Flow Pro). Using the MCVE module for PHP, you can process credit cards directly through MCVE via your PHP scripts. The following references will outline the process.
Poznßmka: MCVE is the replacement for RedHat's CCVS. They contracted with RedHat in late 2001 to migrate all existing clientele to the MCVE platform.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
To enable MCVE Support in PHP, first verify your LibMCVE installation directory. You will then need to configure PHP with the --with-mcve option. If you use this option without specifying the path to your MCVE installation, PHP will attempt to look in the default LibMCVE Install location (/usr/local). If MCVE is in a non-standard location, run configure with: --with-mcve=$mcve_path, where $mcve_path is the path to your MCVE installation. Please note that MCVE support requires that $mcve_path/lib and $mcve_path/include exist, and include mcve.h under the include directory and libmcve.so and/or libmcve.a under the lib directory.
Since MCVE has true server/client separation, there are no additional requirements for running PHP with MCVE support. To test your MCVE extension in PHP, you may connect to testbox.mcve.com on port 8333 for IP, or port 8444 for SSL using the MCVE PHP API. Use 'vitale' for your username, and 'test' for your password. Additional information about test facilities are available at http://www.mainstreetsoftworks.com/.
Additional documentation about MCVE's PHP API can be found at http://www.mainstreetsoftworks.com/docs/phpapi.pdf. Main Street's documentation is complete and should be the primary reference for functions.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_completeauthorizations -- Number of complete authorizations in queue, returning an array of their identifiers
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_getcellbynum -- Get a specific cell from a comma delimited response by column number
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
mcve_maxconntimeout -- The maximum amount of time the API will attempt a connection to MCVE
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_parsecommadelimited -- Parse the comma delimited response so mcve_getcell, etc will work
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
mcve_setssl_files -- Set certificate key files and certificates if server requires client certificate verification
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_transactionauth -- Get the authorization number returned for the transaction (alpha-numeric)
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_transactionitem -- Get the ITEM number in the associated batch for this transaction
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
mcve_transactiontext -- Get verbiage (text) return from MCVE or processing institution
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
mcve_verifyconnection -- Set whether or not to PING upon connect to verify connection
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tyto funkce jsou urΦeny pro prßci s mhash. Mhash lze pou╛φt pro vytvo°enφ kontrolnφch souΦt∙, otisk∙ zprßv, autentizaΦnφch k≤d∙ zprßv atd.
Toto je rozhranφ ke knihovn∞ mhash. mhash podporuje ╣irokou ╣kßlu hash algoritm∙ jako nap°. MD5, SHA1, GOST a mnoho jin²ch. Kompletnφ seznam podporovan²ch hash algoritm∙ naleznete v dokumentaci knohovny mhash. ObecnΘ pravidlo je, ╛e k hash algoritmu lze z PHP p°istupovat p°es MHASH_N┴ZEVHASHE. Nap°φklad pro hash TIGER pou╛ijte PHP konstantu MHASH_TIGER.
Pokud chcete tyto funkce pou╛φvat, stßhn∞te si mhash distribuci z jeho webov²ch strßnek a postupujte podle p°ilo╛en²ch instrukcφ k instalaci.
K aktivaci tohoto modulu budete muset zkompilovat PHP s volbou --with-mhash. DIR je instalaΦnφ adresß° mhash.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Zde je seznam hash∙ podporovan²ch mhashem v souΦasnΘ dob∞. Pokud zde nenφ n∞kter² hash jmenovßn, ale v dokumentaci mhashe je uveden jako podporovan², m∙╛ete bezpeΦn∞ p°edpoklßdat, ╛e je tato dokumentace zastaralß.
MHASH_MD5
MHASH_SHA1
MHASH_HAVAL256
MHASH_HAVAL192
MHASH_HAVAL160
MHASH_HAVAL128
MHASH_RIPEMD160
MHASH_GOST
MHASH_TIGER
MHASH_CRC32
MHASH_CRC32B
P°φklad 1. VypoΦφtat MD5 otisk a hmac a vypsat je v hexadecimßlnφm tvaru
This will produce:
|
mhash_count() vracφ nejvy╣╣φ dostupnΘ hash id. Hashe jsou ΦφslovanΘ od 0 po toto hash id.
mhash_get_block_size() se pou╛φvß ke zji╣t∞nφ velikosti bloku argumentu hash.
mhash_get_block_size() p°ijφmß jeden argument, hash a vracφ velikost v bytech nebo FALSE, pokud hash neexistuje.
mhash_get_hash_name() se pou╛φvß ke zji╣t∞nφ nßzvu zadanΘho hashe.
mhash_get_hash_name() p°ijφmß id hashe jako argument a vracφ nßzev tohoto hashe nebo FALSE, pokud tento hash neexistuje.
MD5 |
mhash_keygen_s2k() generuje klφΦ, kter² je bytes dlouh², z p°edanΘho hesla. Toto je Salted S2K algoritmus specifikovan² v OpenPGP dokumentu (RFC 2440). Tento algoritmus pou╛ije k vytvo°enφ klφΦe hash algoritmus. salt musφ b²t pro ka╛d² generovan² klφΦ jin² a dostateΦn∞ nßhodn², aby vytvo°il r∙znΘ klφΦe. Salt musφ b²t p°i kontrole klφΦ∙ znßm, tudφ╛ je dobr² nßpad ho p°ipojit ke klφΦi. Salt ma pevnou dΘlku 8 byt∙ a pokud dodßte mΘn∞ byt∙, bude dopln∞n nulami. Pamatujte, ╛e u╛ivatelsky urΦenß hesla nejsou vhodnß k pou╛itφ jako klφΦe, proto╛e u╛ivatelΘ obvykle volφ klφΦe, kterΘ mohou napsat na klßvesnici. Tato hesla vyu╛φvajφ pouze 6 a╛ 7 byt∙ na znak (nebo mΘn∞). Je velmi vhodnΘ na u╛ivateli urΦenΘ klφΦe pou╛φt n∞jakou transformaci (jako je tato funkce).
mhash() aplikuje hash funkci urΦenou argumentem hash na data a vracφ v²sledn² hash (takΘ naz²van² digest). Pokud je p°edßn key, vracφ v²sledn² HMAC. HMAC is keyed hashing for message authentication, or simply a message digest that depends on the specified key. Not all algorithms supported in mhash can be used in HMAC mode. In case of an error returns FALSE.
The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file. While this is not a bullet proof approach the heuristics used do a very good job.
This extension is derived from Apache mod_mime_magic, which is itself based on the file command maintained by Ian F. Darwin. See the source code for further historic and copyright information.
You must compile PHP with the configure switch --with-mime-magic to get support for mime-type functions. The extension needs a copy of the simplified magic file that is distributed with the Apache httpd.
Poznßmka: The configure option has been changed from --enable-mime-magic to --with-mime-magic since PHP 4.3.2
Poznßmka: This extension is not capable of handling the fully decorated magic file that generally comes with standard Linux distro's and is supposed to be used with recent versions of file command.
Note to Win32 Users: In order to use this module on a Windows environment, you must set the path to the bundled magic.mime file in your php.ini.
Remember to substitute the $PHP_INSTALL_DIR for your actual path to PHP in the above example. e.g. c:\php
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Mimetype configuration options
Name | Default | Changeable |
---|---|---|
mime_magic.magicfile | "/usr/share/misc/magic.mime" | PHP_INI_SYSTEM |
Requirements for Win32 platforms.
The extension requires the MS SQL Client Tools to be installed on the system where PHP is installed. The Client Tools can be installed from the MS SQL Server CD or by copying ntwdblib.dll from \winnt\system32 on the server to \winnt\system32 on the PHP box. Copying ntwdblib.dll will only provide access. Configuration of the client will require installation of all the tools.
Requirements for Unix/Linux platforms.
To use the MSSQL extension on Unix/Linux, you first need to build and install the FreeTDS library. Source code and installation instructions are available at the FreeTDS home page: http://www.freetds.org/
Poznßmka: In Windows, the DBLIB from Microsoft is used. Functions that return a column name are based on the dbcolname() function in DBLIB. DBLIB was developed for SQL Server 6.x where the max identifier length is 30. For this reason, the maximum column length is 30 characters. On platforms where FreeTDS is used (Linux), this is not a problem.
The MSSQL extension is enabled by adding extension=php_mssql.dll to php.ini.
To get these functions to work, you have to compile PHP with --with-mssql[=DIR], where DIR is the FreeTDS install prefix. And FreeTDS should be compiled using --enable-msdblib.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. MS SQL Server configuration options
Name | Default | Changeable |
---|---|---|
mssql.allow_persistent | "1" | PHP_INI_SYSTEM |
mssql.max_persistent | "-1" | PHP_INI_SYSTEM |
mssql.max_links | "-1" | PHP_INI_SYSTEM |
mssql.min_error_severity | "10" | PHP_INI_ALL |
mssql.min_message_severity | "10" | PHP_INI_ALL |
mssql.compatability_mode | "0" | PHP_INI_ALL |
mssql.connect_timeout | "5" | PHP_INI_ALL |
mssql.timeout | "60" | PHP_INI_ALL |
mssql.textsize | "-1" | PHP_INI_ALL |
mssql.textlimit | "-1" | PHP_INI_ALL |
mssql.batchsize | "0" | PHP_INI_ALL |
mssql.datetimeconvert | "1" | PHP_INI_ALL |
mssql.secure_connection | "0" | PHP_INI_SYSTEM |
mssql.max_procs | "25" | PHP_INI_ALL |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also mssql_execute(), mssql_free_statement(), and mssql_init().
mssql_close() closes the link to a MS SQL Server database that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
mssql_close() will not close persistent links generated by mssql_pconnect().
See also mssql_connect(), and mssql_pconnect().
Returns: A positive MS SQL link identifier on success, or FALSE on error.
mssql_connect() establishes a connection to a MS SQL server. The servername argument has to be a valid servername that is defined in the 'interfaces' file.
In case a second call is made to mssql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling mssql_close().
See also mssql_pconnect(), mssql_close().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
mssql_data_seek() moves the internal row pointer of the MS SQL result associated with the specified result identifier to point to the specified row number, first row being number 0. The next call to mssql_fetch_row() would return that row.
See also mssql_data_seek().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: If the stored procedure returns parameters or a return value these will be available after the call to mssql_execute() unless the stored procedure returns more than one result set. In that case use mssql_next_result() to shift through the results. When the last result has been processed the output parameters and return values will be available.
See also mssql_bind(), mssql_free_statement(), and mssql_init().
(PHP 3, PHP 4 )
mssql_fetch_array -- Fetch a result row as an associative array, a numeric array, or bothReturns: An array that corresponds to the fetched row, or FALSE if there are no more rows.
mssql_fetch_array() is an extended version of mssql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
An important thing to note is that using mssql_fetch_array() is NOT significantly slower than using mssql_fetch_row(), while it provides a significant added value.
Poznßmka: Nßzvy polφ vrßcenΘ touto funkcφ rozli╣ujφ velikost pφsmen.
For further details, also see mssql_fetch_row().
(PHP 4 >= 4.2.0)
mssql_fetch_assoc -- Returns an associative array of the current row in the result set specified by result_idVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns an object containing field information.
mssql_fetch_field() can be used in order to obtain information about fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by mssql_fetch_field() is retrieved.
The properties of the object are:
name - column name. if the column is a result of a function, this property is set to computed#N, where #N is a serial number.
column_source - the table from which the column was taken
max_length - maximum length of the column
numeric - 1 if the column is numeric
type - the column type.
See also mssql_field_seek().
Returns: An object with properties that correspond to the fetched row, or FALSE if there are no more rows.
mssql_fetch_object() is similar to mssql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).
Poznßmka: Nßzvy polφ vrßcenΘ touto funkcφ rozli╣ujφ velikost pφsmen.
Speed-wise, the function is identical to mssql_fetch_array(), and almost as quick as mssql_fetch_row() (the difference is insignificant).
See also mssql_fetch_array(), and mssql_fetch_row().
Returns: An array that corresponds to the fetched row, or FALSE if there are no more rows.
mssql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Subsequent call to mssql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
See also mssql_fetch_array(), mssql_fetch_object(), mssql_data_seek(), mssql_fetch_lengths(), and mssql_result().
This function returns the length of field no. offset in result result. If offset is omitted, the current field is used.
Note to Win32 Users: Due to a limitation in the underlying API used by PHP (MS DbLib C API), the length of VARCHAR fields is limited to 255. If you need to store more data, use a TEXT field instead.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Seeks to the specified field offset. If the next call to mssql_fetch_field() won't include a field offset, this field would be returned.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also mssql_fetch_field().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
mssql_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script ends. You may call mssql_free_result() with the result identifier as an argument and the associated result memory will be freed.
mssql_free_statement() only needs to be called if you are worried about using too much memory while your script is running. All statement memory will automatically be freed when the script ends. You may call mssql_free_statement() with the statement identifier as an argument and the associated statement memory will be freed.
See also mssql_bind(), mssql_execute(), and mssql_init()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also mssql_bind(), mssql_execute(), and mssql_free_statement()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
When sending more than one SQL statement to the server or executing a stored procedure with multiple results, it will cause the server to return multiple result sets. This function will test for additional results available form the server. If an additional result set exists it will free the existing result set and prepare to fetch the rows from the new result set. The function will return TRUE if an additional result set was available or FALSE otherwise.
P°φklad 1. mssql_next_result() example
|
mssql_num_fields() returns the number of fields in a result set.
See also mssql_query(), mssql_fetch_field(), and mssql_num_rows().
mssql_num_rows() returns the number of rows in a result set.
See also mssql_query() and mssql_fetch_row().
Returns: A positive MS SQL persistent link identifier on success, or FALSE on error.
mssql_pconnect() acts very much like mssql_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mssql_close() will not close links established by mssql_pconnect()).
This type of links is therefore called 'persistent'.
Returns: A positive MS SQL result identifier on success, or FALSE on error.
mssql_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if mssql_connect() was called, and use it.
See also mssql_select_db() and mssql_connect().
mssql_result() returns the contents of one cell from a MS SQL result set. The field argument can be the field's offset, the field's name or the field's table dot field's name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), it uses the alias instead of the column name.
When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mssql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.
Recommended high-performance alternatives: mssql_fetch_row(), mssql_fetch_array(), and mssql_fetch_object().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
mssql_select_db() sets the current active database on the server that's associated with the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if mssql_connect() was called, and use it.
Every subsequent call to mssql_query() will be made on the active database.
In order to select a database containing a space or a hyphen ("-") you need to enclose the database name in brackets, like is shown in the example below:
See also: mssql_connect(), mssql_pconnect(), and mssql_query()
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
First of all: Ming is not an acronym. Ming is an open-source (LGPL) library which allows you to create SWF ("Flash") format movies. Ming supports almost all of Flash 4's features, including: shapes, gradients, bitmaps (pngs and jpegs), morphs ("shape tweens"), text, buttons, actions, sprites ("movie clips"), streaming mp3, and color transforms --the only thing that's missing is sound events.
Note that all values specifying length, distance, size, etc. are in "twips", twenty units per pixel. That's pretty much arbitrary, though, since the player scales the movie to whatever pixel size is specified in the embed/object tag, or the entire frame if not embedded.
Ming offers a number of advantages over the existing PHP/libswf module. You can use Ming anywhere you can compile the code, whereas libswf is closed-source and only available for a few platforms, Windows not one of them. Ming provides some insulation from the mundane details of the SWF file format, wrapping the movie elements in PHP objects. Also, Ming is still being maintained; if there's a feature that you want to see, just let us know ming@opaque.net.
Ming was added in PHP 4.0.5.
To use Ming with PHP, you first need to build and install the Ming library. Source code and installation instructions are available at the Ming home page: http://ming.sourceforge.net/ along with examples, a small tutorial, and the latest news.
Download the ming archive. Unpack the archive. Go in the Ming directory. make. make install.
This will build libming.so and install it into /usr/lib/, and copy ming.h into /usr/include/. Edit the PREFIX= line in the Makefile to change the installation directory.
Now either just add extension=php_ming.so to your php.ini file, or put dl('php_ming.so'); at the head of all of your Ming scripts.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Tyto t°φdy jsou definovßny roz╣φ°enφm a budou dostupnΘ pouze v p°φpad∞, ╛e PHP bude zkompilovßno s tφmto roz╣φ°enφm nebo bude roz╣φ°enφ zavedeno dynamicky za b∞hu.
Ming introduces 13 new objects in PHP, all with matching methods and attributes. To use them, you need to know about objects.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfaction() creates a new Action, and compiles the given script into an SWFAction object.
The script syntax is based on the C language, but with a lot taken out- the SWF bytecode machine is just too simpleminded to do a lot of things we might like. For instance, we can't implement function calls without a tremendous amount of hackery because the jump bytecode has a hardcoded offset value. No pushing your calling address to the stack and returning- every function would have to know exactly where to return to.
So what's left? The compiler recognises the following tokens:
break
for
continue
if
else
do
while
There is no typed data; all values in the SWF action machine are stored as strings. The following functions can be used in expressions:
Returns the number of milliseconds (?) elapsed since the movie started.
Returns a pseudo-random number in the range 0-seed.
Returns the length of the given expression.
Returns the given number rounded down to the nearest integer.
Returns the concatenation of the given expressions.
Returns the ASCII code for the given character
Returns the character for the given ASCII code
Returns the substring of length length at location location of the given string string.
Additionally, the following commands may be used:
Duplicate the named movie clip (aka sprite). The new movie clip has name name and is at depth depth.
Removes the named movie clip.
Write the given expression to the trace log. Doubtful that the browser plugin does anything with this.
Start dragging the movie clip target. The lock argument indicates whether to lock the mouse (?)- use 0 (FALSE) or 1 (TRUE). Optional parameters define a bounding area for the dragging.
Stop dragging my heart around. And this movie clip, too.
Call the named frame as a function.
Load the given URL into the named target. The target argument corresponds to HTML document targets (such as "_top" or "_blank"). The optional method argument can be POST or GET if you want to submit variables back to the server.
Load the given URL into the named target. The target argument can be a frame name (I think), or one of the magical values "_level0" (replaces current movie) or "_level1" (loads new movie on top of current movie).
Go to the next frame.
Go to the last (or, rather, previous) frame.
Start playing the movie.
Stop playing the movie.
Toggle between high and low quality.
Stop playing all sounds.
Go to frame number num. Frame numbers start at 0.
Go to the frame named name. Which does a lot of good, since I haven't added frame labels yet.
Sets the context for action. Or so they say- I really have no idea what this does.
Movie clips (all together now- aka sprites) have properties. You can read all of them (or can you?), you can set some of them, and here they are:
x
y
xScale
yScale
currentFrame - (read-only)
totalFrames - (read-only)
alpha - transparency level
visible - 1=on, 0=off (?)
width - (read-only)
height - (read-only)
rotation
target - (read-only) (???)
framesLoaded - (read-only)
name
dropTarget - (read-only) (???)
url - (read-only) (???)
highQuality - 1=high, 0=low (?)
focusRect - (???)
soundBufTime - (???)
This simple example will move the red square across the window.
P°φklad 1. swfaction() example
|
This simple example tracks down your mouse on the screen.
P°φklad 2. swfaction() example
|
Same as above, but with nice colored balls...
P°φklad 3. swfaction() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbitmap->getheight() returns the bitmap's height in pixels.
See also swfbitmap->getwidth().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbitmap->getwidth() returns the bitmap's width in pixels.
See also swfbitmap->getheight().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbitmap() creates a new SWFBitmap object from the Jpeg or DBL file named filename. alphafilename indicates a MSK file to be used as an alpha mask for a Jpeg image.
Poznßmka: We can only deal with baseline (frame 0) jpegs, no baseline optimized or progressive scan jpegs!
SWFBitmap has the following methods : swfbitmap->getwidth() and swfbitmap->getheight().
You can't import png images directly, though- have to use the png2dbl utility to make a dbl ("define bits lossless") file from the png. The reason for this is that I don't want a dependency on the png library in ming- autoconf should solve this, but that's not set up yet.
P°φklad 1. Import PNG files
|
And you can put an alpha mask on a jpeg fill.
P°φklad 2. swfbitmap() example
|
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->addaction() adds the action action to this button for the given conditions. The following flags are valid: SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SWFBUTTON_MOUSEUP, SWFBUTTON_MOUSEUPOUTSIDE, SWFBUTTON_MOUSEDOWN, SWFBUTTON_DRAGOUT and SWFBUTTON_DRAGOVER.
See also swfbutton->addshape() and swfaction().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->addshape() adds the shape shape to this button. The following flags' values are valid: SWFBUTTON_UP, SWFBUTTON_OVER, SWFBUTTON_DOWN or SWFBUTTON_HIT. SWFBUTTON_HIT isn't ever displayed, it defines the hit region for the button. That is, everywhere the hit shape would be drawn is considered a "touchable" part of the button.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->setaction() sets the action to be performed when the button is clicked. Alias for addAction(shape, SWFBUTTON_MOUSEUP). action is a swfaction().
See also swfbutton->addshape() and swfaction().
(no version information, might be only in CVS)
SWFbutton->setdown -- Alias for addShape(shape, SWFBUTTON_DOWN))Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->setdown() alias for addShape(shape, SWFBUTTON_DOWN).
See also swfbutton->addshape() and swfaction().
(no version information, might be only in CVS)
SWFbutton->setHit -- Alias for addShape(shape, SWFBUTTON_HIT)Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->sethit() alias for addShape(shape, SWFBUTTON_HIT).
See also swfbutton->addshape() and swfaction().
(no version information, might be only in CVS)
SWFbutton->setOver -- Alias for addShape(shape, SWFBUTTON_OVER)Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->setover() alias for addShape(shape, SWFBUTTON_OVER).
See also swfbutton->addshape() and swfaction().
(no version information, might be only in CVS)
SWFbutton->setUp -- Alias for addShape(shape, SWFBUTTON_UP)Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton->setup() alias for addShape(shape, SWFBUTTON_UP).
See also swfbutton->addshape() and swfaction().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfbutton() creates a new Button. Roll over it, click it, see it call action code. Swank.
SWFButton has the following methods : swfbutton->addshape(), swfbutton->setup(), swfbutton->setover() swfbutton->setdown(), swfbutton->sethit() swfbutton->setaction() and swfbutton->addaction().
This simple example will show your usual interactions with buttons : rollover, rollon, mouseup, mousedown, noaction.
P°φklad 1. swfbutton() example
|
This simple example will enables you to drag draw a big red button on the windows. No drag-and-drop, just moving around.
P°φklad 2. swfbutton->addaction() example
|
(no version information, might be only in CVS)
SWFDisplayItem->addColor -- Adds the given color to this item's color transform.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->addcolor() adds the color to this item's color transform. The color is given in its RGB form.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
(no version information, might be only in CVS)
SWFDisplayItem->move -- Moves object in relative coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->move() moves the current object by (dx,dy) from its current position.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->moveto().
(no version information, might be only in CVS)
SWFDisplayItem->moveTo -- Moves object in global coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->moveto() moves the current object to (x,y) in global coordinates.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->move().
(no version information, might be only in CVS)
SWFDisplayItem->multColor -- Multiplies the item's color transform.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->multcolor() multiplies the item's color transform by the given values.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
This simple example will modify your picture's atmospher to Halloween (use a landscape or bright picture).
P°φklad 1. swfdisplayitem->multcolor() example
|
(no version information, might be only in CVS)
SWFDisplayItem->remove -- Removes the object from the movieVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->remove() removes this object from the movie's display list.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfmovie->add().
(no version information, might be only in CVS)
SWFDisplayItem->Rotate -- Rotates in relative coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->rotate() rotates the current object by ddegrees degrees from its current rotation.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->rotateto().
(no version information, might be only in CVS)
SWFDisplayItem->rotateTo -- Rotates the object in global coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->rotateto() set the current object rotation to degrees degrees in global coordinates.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
This example bring three rotating string from the background to the foreground. Pretty nice.
P°φklad 1. swfdisplayitem->rotateto() example
|
See also swfdisplayitem->rotate().
(no version information, might be only in CVS)
SWFDisplayItem->scale -- Scales the object in relative coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->scale() scales the current object by (dx,dy) from its current size.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->scaleto().
(no version information, might be only in CVS)
SWFDisplayItem->scaleTo -- Scales the object in global coordinates.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->scaleto() scales the current object to (x,y) in global coordinates.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->scale().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->rotate() sets the object's z-order to depth. Depth defaults to the order in which instances are created (by adding a shape/text to a movie)- newer ones are on top of older ones. If two objects are given the same depth, only the later-defined one can be moved.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->setname() sets the object's name to name, for targetting with action script. Only useful on sprites.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->setratio() sets the object's ratio to ratio. Obviously only useful for morphs.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
This simple example will morph nicely three concentric circles.
P°φklad 1. swfdisplayitem->setname() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->skewx() adds ddegrees to current x-skew.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->skewx(), swfdisplayitem->skewy() and swfdisplayitem->skewyto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->skewxto() sets the x-skew to degrees. For degrees is 1.0, it means a 45-degree forward slant. More is more forward, less is more backward.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->skewx(), swfdisplayitem->skewy() and swfdisplayitem->skewyto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->skewy() adds ddegrees to current y-skew.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->skewyto(), swfdisplayitem->skewx() and swfdisplayitem->skewxto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem->skewyto() sets the y-skew to degrees. For degrees is 1.0, it means a 45-degree forward slant. More is more upward, less is more downward.
The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().
See also swfdisplayitem->skewy(), swfdisplayitem->skewx() and swfdisplayitem->skewxto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfdisplayitem() creates a new swfdisplayitem object.
Here's where all the animation takes place. After you define a shape, a text object, a sprite, or a button, you add it to the movie, then use the returned handle to move, rotate, scale, or skew the thing.
SWFDisplayItem has the following methods : swfdisplayitem->move(), swfdisplayitem->moveto(), swfdisplayitem->scaleto(), swfdisplayitem->scale(), swfdisplayitem->rotate(), swfdisplayitem->rotateto(), swfdisplayitem->skewxto(), swfdisplayitem->skewx(), swfdisplayitem->skewyto() swfdisplayitem->skewyto(), swfdisplayitem->setdepth() swfdisplayitem->remove(), swfdisplayitem->setname() swfdisplayitem->setratio(), swfdisplayitem->addcolor() and swfdisplayitem->multcolor().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffill->moveto() moves fill's origin to (x,y) in global coordinates.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffill->rotateto() sets fill's rotation to degrees degrees.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffill->scaleto() sets fill's scale to x in the x-direction, y in the y-direction.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffill->skewxto() sets fill x-skew to x. For x is 1.0, it is a 45-degree forward slant. More is more forward, less is more backward.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffill->skewyto() sets fill y-skew to y. For y is 1.0, it is a 45-degree upward slant. More is more upward, less is more downward.
The swffill() object allows you to transform (scale, skew, rotate) bitmap and gradient fills. swffill() objects are created by the swfshape->addfill() methods.
SWFFill has the following methods : swffill->moveto() and swffill->scaleto(), swffill->rotateto(), swffill->skewxto() and swffill->skewyto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swffont->getwidth() returns the string string's width, using font's default scaling. You'll probably want to use the swftext() version of this method which uses the text object's scale.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
If filename is the name of an FDB file (i.e., it ends in ".fdb"), load the font definition found in said file. Otherwise, create a browser-defined font reference.
FDB ("font definition block") is a very simple wrapper for the SWF DefineFont2 block which contains a full description of a font. One may create FDB files from SWT Generator template files with the included makefdb utility- look in the util directory off the main ming distribution directory.
Browser-defined fonts don't contain any information about the font other than its name. It is assumed that the font definition will be provided by the movie player. The fonts _serif, _sans, and _typewriter should always be available. For example:
<?php $f = newSWFFont("_sans"); ?> |
swffont() returns a reference to the font definition, for use in the swftext->setfont() and the swftextfield->setfont() methods.
SWFFont has the following methods : swffont->getwidth().
(no version information, might be only in CVS)
SWFGradient->addEntry -- Adds an entry to the gradient list.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfgradient->addentry() adds an entry to the gradient list. ratio is a number between 0 and 1 indicating where in the gradient this color appears. Thou shalt add entries in order of increasing ratio.
red, green, blue is a color (RGB mode). Last parameter a is optional.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfgradient() creates a new SWFGradient object.
After you've added the entries to your gradient, you can use the gradient in a shape fill with the swfshape->addfill() method.
SWFGradient has the following methods : swfgradient->addentry().
This simple example will draw a big black-to-white gradient as background, and a reddish disc in its center.
P°φklad 1. swfgradient() example
|
(no version information, might be only in CVS)
SWFMorph->getshape1 -- Gets a handle to the starting shapeVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmorph->getshape1() gets a handle to the morph's starting shape. swfmorph->getshape1() returns an swfshape() object.
(no version information, might be only in CVS)
SWFMorph->getshape2 -- Gets a handle to the ending shapeVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmorph->getshape2() gets a handle to the morph's ending shape. swfmorph->getshape2() returns an swfshape() object.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmorph() creates a new SWFMorph object.
Also called a "shape tween". This thing lets you make those tacky twisting things that make your computer choke. Oh, joy!
The methods here are sort of weird. It would make more sense to just have newSWFMorph(shape1, shape2);, but as things are now, shape2 needs to know that it's the second part of a morph. (This, because it starts writing its output as soon as it gets drawing commands- if it kept its own description of its shapes and wrote on completion this and some other things would be much easier.)
SWFMorph has the following methods : swfmorph->getshape1() and swfmorph->getshape1().
This simple example will morph a big red square into a smaller blue black-bordered square.
P°φklad 1. swfmorph() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->add() adds instance to the current movie. instance is any type of data : Shapes, text, fonts, etc. must all be added to the movie to make this work.
For displayable types (shape, text, button, sprite), this returns an swfdisplayitem(), a handle to the object in a display list. Thus, you can add the same shape to a movie multiple times and get separate handles back for each separate instance.
See also all other objects (adding this later), and swfmovie->remove()
See examples in : swfdisplayitem->rotateto() and swfshape->addfill().
(no version information, might be only in CVS)
SWFMovie->nextframe -- Moves to the next frame of the animation.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->nextframe() moves to the next frame of the animation.
(no version information, might be only in CVS)
SWFMovie->output -- Dumps your lovingly prepared movie out.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->output() dumps your lovingly prepared movie out. In PHP, preceding this with the command
<?php header('Content-type: application/x-shockwave-flash'); ?> |
See also swfmovie->save().
See examples in : swfmovie->streammp3(), swfdisplayitem->rotateto(), swfaction()... Any example will use this method.
(no version information, might be only in CVS)
swfmovie->remove -- Removes the object instance from the display list.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->remove() removes the object instance instance from the display list.
See also swfmovie->add().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->save() saves your movie to the file named filename.
See also output().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->setbackground() sets the background color. Why is there no rgba version? Think about it. (Actually, that's not such a dumb question after all- you might want to let the HTML background show through. There's a way to do that, but it only works on IE4. Search the http://www.macromedia.com/ site for details.)
(no version information, might be only in CVS)
SWFMovie->setdimension -- Sets the movie's width and height.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->setdimension() sets the movie's width to width and height to height.
(no version information, might be only in CVS)
SWFMovie->setframes -- Sets the total number of frames in the animation.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->setframes() sets the total number of frames in the animation to numberofframes.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->setrate() sets the frame rate to rate, in frame per seconds. Animation will slow down if the player can't render frames fast enough- unless there's a streaming sound, in which case display frames are sacrificed to keep sound from skipping.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie->streammp3() streams the mp3 file mp3FileName. Not very robust in dealing with oddities (can skip over an initial ID3 tag, but that's about it). Like swfshape->addjpegfill(), this isn't a stable function- we'll probably need to make a separate SWFSound object to contain sound types.
Note that the movie isn't smart enough to put enough frames in to contain the entire mp3 stream- you'll have to add (length of song * frames per second) frames to get the entire stream in.
Yes, now you can use ming to put that rock and roll devil worship music into your SWF files. Just don't tell the RIAA.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfmovie() creates a new movie object, representing an SWF version 4 movie.
SWFMovie has the following methods : swfmovie->output(),swfmovie->save(), swfmovie->add(), swfmovie->remove(), swfmovie->nextframe(), swfmovie->setbackground(), swfmovie->setrate(), swfmovie->setdimension(), swfmovie->setframes() and swfmovie->streammp3().
See examples in : swfdisplayitem->rotateto(), swfshape->setline(), swfshape->addfill()... Any example will use this object.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->addfill() adds a solid fill to the shape's list of fill styles. swfshape->addfill() accepts three different types of arguments.
red, green, blue is a color (RGB mode). Last parameter a is optional.
The bitmap argument is an swfbitmap() object. The flags argument can be one of the following values : SWFFILL_CLIPPED_BITMAP or SWFFILL_TILED_BITMAP. Default is SWFFILL_TILED_BITMAP. I think.
The gradient argument is an swfgradient() object. The flags argument can be one of the following values : SWFFILL_RADIAL_GRADIENT or SWFFILL_LINEAR_GRADIENT. Default is SWFFILL_LINEAR_GRADIENT. I'm sure about this one. Really.
swfshape->addfill() returns an swffill() object for use with the swfshape->setleftfill() and swfshape->setrightfill() functions described below.
See also swfshape->setleftfill() and swfshape->setrightfill().
This simple example will draw a frame on a bitmap. Ah, here's another buglet in the flash player- it doesn't seem to care about the second shape's bitmap's transformation in a morph. According to spec, the bitmap should stretch along with the shape in this example..
P°φklad 1. swfshape->addfill() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->drawcurve() draws a quadratic curve (using the current line style,set by swfshape->setline()) from the current pen position to the relative position (anchorx,anchory) using relative control point (controlx,controly). That is, head towards the control point, then smoothly turn to the anchor point.
See also swfshape->drawlineto(), swfshape->drawline(), swfshape->movepento() and swfshape->movepen().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->drawcurveto() draws a quadratic curve (using the current line style, set by swfshape->setline()) from the current pen position to (anchorx,anchory) using (controlx,controly) as a control point. That is, head towards the control point, then smoothly turn to the anchor point.
See also swfshape->drawlineto(), swfshape->drawline(), swfshape->movepento() and swfshape->movepen().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->drawline() draws a line (using the current line style set by swfshape->setline()) from the current pen position to displacement (dx,dy).
See also swfshape->movepento(), swfshape->drawcurveto(), swfshape->movepen() and swfshape->drawlineto().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->setrightfill() draws a line (using the current line style, set by swfshape->setline()) from the current pen position to point (x,y) in the shape's coordinate space.
See also swfshape->movepento(), swfshape->drawcurveto(), swfshape->movepen() and swfshape->drawline().
(no version information, might be only in CVS)
SWFShape->movePen -- Moves the shape's pen (relative).Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->setrightfill() move the shape's pen from coordinates (current x,current y) to (current x + dx, current y + dy) in the shape's coordinate space.
See also swfshape->movepento(), swfshape->drawcurveto(), swfshape->drawlineto() and swfshape->drawline().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->setrightfill() move the shape's pen to (x,y) in the shape's coordinate space.
See also swfshape->movepen(), swfshape->drawcurveto(), swfshape->drawlineto() and swfshape->drawline().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
What this nonsense is about is, every edge segment borders at most two fills. When rasterizing the object, it's pretty handy to know what those fills are ahead of time, so the swf format requires these to be specified.
swfshape->setleftfill() sets the fill on the left side of the edge- that is, on the interior if you're defining the outline of the shape in a counter-clockwise fashion. The fill object is an SWFFill object returned from one of the addFill functions above.
This seems to be reversed when you're defining a shape in a morph, though. If your browser crashes, just try setting the fill on the other side.
Shortcut for swfshape->setleftfill($s->addfill($r, $g, $b [, $a]));.
See also swfshape->setrightfill().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape->setline() sets the shape's line style. width is the line's width. If width is 0, the line's style is removed (then, all other arguments are ignored). If width > 0, then line's color is set to red, green, blue. Last parameter a is optional.
swfshape->setline() accepts 1, 4 or 5 arguments (not 3 or 2).
You must declare all line styles before you use them (see example).
This simple example will draw a big "!#%*@", in funny colors and gracious style.
P°φklad 1. swfshape->setline() example
|
(no version information, might be only in CVS)
SWFShape->setRightFill -- Sets right rasterizing color.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also swfshape->setleftfill().
Shortcut for swfshape->setrightfill($s->addfill($r, $g, $b [, $a]));.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfshape() creates a new shape object.
SWFShape has the following methods : swfshape->setline(), swfshape->addfill(), swfshape->setleftfill(), swfshape->setrightfill(), swfshape->movepento(), swfshape->movepen(), swfshape->drawlineto(), swfshape->drawline(), swfshape->drawcurveto() and swfshape->drawcurve().
This simple example will draw a big red elliptic quadrant.
P°φklad 1. swfshape() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfsprite->add() adds a swfshape(), a swfbutton(), a swftext(), a swfaction() or a swfsprite() object.
For displayable types (swfshape(), swfbutton(), swftext(), swfaction() or swfsprite()), this returns a handle to the object in a display list.
(no version information, might be only in CVS)
SWFSprite->nextframe -- Moves to the next frame of the animation.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfsprite->setframes() moves to the next frame of the animation.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfsprite->remove() remove a swfshape(), a swfbutton(), a swftext(), a swfaction() or a swfsprite() object from the sprite.
(no version information, might be only in CVS)
SWFSprite->setframes -- Sets the total number of frames in the animation.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfsprite->setframes() sets the total number of frames in the animation to numberofframes.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swfsprite() are also known as a "movie clip", this allows one to create objects which are animated in their own timelines. Hence, the sprite has most of the same methods as the movie.
swfsprite() has the following methods : swfsprite->add(), swfsprite->remove(), swfsprite->nextframe() and swfsprite->setframes().
This simple example will spin gracefully a big red square.
P°φklad 1. swfsprite() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->addstring() draws the string string at the current pen (cursor) location. Pen is at the baseline of the text; i.e., ascending text is in the -y direction.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->addstring() returns the rendered width of the string string at the text object's current font, scale, and spacing settings.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->moveto() moves the pen (or cursor, if that makes more sense) to (x,y) in text object's coordinate space. If either is zero, though, value in that dimension stays the same. Annoying, should be fixed.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->setspacing() changes the current text color. Default is black. I think. Color is represented using the RGB system.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->setfont() sets the current font to font.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->setheight() sets the current font height to height. Default is 240.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext->setspacing() sets the current font spacing to spacingspacing. Default is 1.0. 0 is all of the letters written at the same point. This doesn't really work that well because it inflates the advance across the letter, doesn't add the same amount of spacing between the letters. I should try and explain that better, prolly. Or just fix the damn thing to do constant spacing. This was really just a way to figure out how letter advances work, anyway.. So nyah.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftext() creates a new SWFText object, fresh for manipulating.
SWFText has the following methods : swftext->setfont(), swftext->setheight(), swftext->setspacing(), swftext->setcolor(), swftext->moveto(), swftext->addstring() and swftext->getwidth().
This simple example will draw a big yellow "PHP generates Flash with Ming" text, on white background.
P°φklad 1. swftext() example
|
(no version information, might be only in CVS)
SWFTextField->addstring -- Concatenates the given string to the text fieldVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setname() concatenates the string string to the text field.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->align() sets the text field alignment to alignement. Valid values for alignement are : SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER and SWFTEXTFIELD_ALIGN_JUSTIFY.
(no version information, might be only in CVS)
SWFTextField->setbounds -- Sets the text field width and heightVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setbounds() sets the text field width to width and height to height. If you don't set the bounds yourself, Ming makes a poor guess at what the bounds are.
(no version information, might be only in CVS)
SWFTextField->setcolor -- Sets the color of the text field.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setcolor() sets the color of the text field. Default is fully opaque black. Color is represented using RGB system.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setfont() sets the text field font to the [browser-defined?] font font.
(no version information, might be only in CVS)
SWFTextField->setHeight -- Sets the font height of this text field font.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setheight() sets the font height of this text field font to the given height height. Default is 240.
(no version information, might be only in CVS)
SWFTextField->setindentation -- Sets the indentation of the first line.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setindentation() sets the indentation of the first line in the text field, to width.
(no version information, might be only in CVS)
SWFTextField->setLeftMargin -- Sets the left margin width of the text field.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setleftmargin() sets the left margin width of the text field to width. Default is 0.
(no version information, might be only in CVS)
SWFTextField->setLineSpacing -- Sets the line spacing of the text field.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setlinespacing() sets the line spacing of the text field to the height of height. Default is 40.
(no version information, might be only in CVS)
SWFTextField->setMargins -- Sets the margins width of the text field.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setmargins() set both margins at once, for the man on the go.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setname() sets the variable name of this text field to name, for form posting and action scripting purposes.
(no version information, might be only in CVS)
SWFTextField->setrightMargin -- Sets the right margin width of the text field.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield->setrightmargin() sets the right margin width of the text field to width. Default is 0.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
swftextfield() creates a new text field object. Text Fields are less flexible than swftext() objects- they can't be rotated, scaled non-proportionally, or skewed, but they can be used as form entries, and they can use browser-defined fonts.
The optional flags change the text field's behavior. It has the following possibles values :
SWFTEXTFIELD_DRAWBOX draws the outline of the textfield
SWFTEXTFIELD_HASLENGTH
SWFTEXTFIELD_HTML allows text markup using HTML-tags
SWFTEXTFIELD_MULTILINE allows multiple lines
SWFTEXTFIELD_NOEDIT indicates that the field shouldn't be user-editable
SWFTEXTFIELD_NOSELECT makes the field non-selectable
SWFTEXTFIELD_PASSWORD obscures the data entry
SWFTEXTFIELD_WORDWRAP allows text to wrap
<?php $t = newSWFTextField(SWFTEXTFIELD_PASSWORD | SWFTEXTFIELD_NOEDIT); ?> |
SWFTextField has the following methods : swftextfield->setfont(), swftextfield->setbounds(), swftextfield->align(), swftextfield->setheight(), swftextfield->setleftmargin(), swftextfield->setrightmargin(), swftextfield->setmargins(), swftextfield->setindentation(), swftextfield->setlinespacing(), swftextfield->setcolor(), swftextfield->setname() and swftextfield->addstring().
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Misc. Configuration Options
Name | Default | Changeable |
---|---|---|
ignore_user_abort | "0" | PHP_INI_ALL |
highlight.string | #DD0000 | PHP_INI_ALL |
highlight.comment | #FF9900 | PHP_INI_ALL |
highlight.keyword | #007700 | PHP_INI_ALL |
highlight.bg | #FFFFFF | PHP_INI_ALL |
highlight.default | #0000BB | PHP_INI_ALL |
highlight.html | #000000 | PHP_INI_ALL |
browscap | NULL | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
TRUE by default. If changed to FALSE scripts will be terminated as soon as they try to output something after a client has aborted their connection.
See also ignore_user_abort().
Colors for Syntax Highlighting mode. Anything that's acceptable in <font color="??????"> would work.
Name (e.g.: browscap.ini) and location of browser capabilities file. See also get_browser().
Vrßtφ TRUE, pokud se klient odpojil. ┌plnΘ vysv∞tlenφ viz popis v Obsluha spojenφ v kapitole Vlastnosti.
Vracφ bitovΘ pole stavu spojenφ. ┌plnΘ vysv∞tlenφ viz popis v Obsluha spojenφ v kapitole Vlastnosti.
Returns TRUE if script timed out. ┌plnΘ vysv∞tlenφ viz popis v Obsluha spojenφ v kapitole Vlastnosti.
constant() will return the value of the constant indicated by name.
constant() is useful if you need to retrieve the value of a constant, but do not know it's name. i.e. It is stored in a variable or returned by a function.
Definuje pojmenovanou konstantu, kterß je podobnß prom∞nnΘ s v²jimkou toho, ╛e:
Konstanty nemajφ znak dolaru ('$') p°ed jmΘnem;
Konstanty jsou dostupnΘ odkudkoliv bez ohledu na pravidla rozsahu platnosti prom∞nn²ch;
Konstanty se nedajφ p°edefinovßvat a ru╣it; a
Konstanty se mohou nab²vat pouze skalßrnφch hodnot.
Nßzev konstanty je dßn argumentem name; hodnota je dßna argumentem value.
Dßle je dostupn² volitelnφ t°etφ argument case_insensitive. Pokud mß hodnotu 1, konstanta bude definovßna case-insensitive. V²chozφ chovßnφ je case-sensitive; tj. CONSTANT and Constant reprezentujφ r∙znΘ hodnoty.
define() vracφ TRUE p°i ·sp∞chu a FALSE pokud dojde k chyb∞.
Vracφ TRUE, pokud byla definovßna pojmenovanß konstanta danß argumentem name, jinak FALSE.
Tento jazykov² konstrukt vytiskne vzkaz a ukonΦφ parsovßnφ skriptu. Nemß nßvratovou hodnotu.
Viz takΘ exit().
eval() vyhodnotφ °et∞zec p°edan² v code_str jako PHP k≤d. Krom∞ jinΘho se dß vyu╛φt na uklßdßnφ k≤du v textovΘm sloupci databßze pro pozd∞j╣φ vykonßnφ.
P°i pou╛φvßnφ eval() byste m∞li mφt na pam∞ti n∞kolik faktor∙. Pamatujte si, ╛e p°edßvan² °et∞zec musφ b²t platn² PHP k≤d, vΦetn∞ v∞cφ jako ukonΦovßnφ v²raz∙ st°ednφkem, aby parser nezem°el na °ßdku po eval(), a °ßdnΘ escapovßnφ v code_str.
TakΘ pamatujte, ze hodnoty p°i°azenΘ prom∞nn²m v eval() t∞mto prom∞nn²m z∙stanou i v hlavnφm skriptu.
V²raz return okam╛it∞ ukonΦφ vyhodnocovßnφ p°edanΘho °et∞zce. V PHP 4 m∙╛ete pou╛φt return k vrßcenφ hodnoty, kterß se stane v²sledkem eval() funkce, zatφmco v PHP 3 byl eval() typu void nic nevracel.
V²╣e uveden² p°φklad ukß╛e:
This is a $string with my $name in it. This is a cup with my coffee in it. |
Tento jazykov² konstrkut ukonΦφ parsovßnφ skriptu. Nevracφ ╛ßdnou hodnotu.
Viz takΘ die().
get_browser() se pokusφ urΦit schopnosti u╛ivatelova browseru. Toho je dosa╛eno vyhledßnφm informacφ o browseru v souboru browscap.ini. Standardne se pou╛ije $HTTP_USER_AGENT; nicmΘn∞, m∙╛ete to zm∞nit (tj. vyhledat informace o jinΘm browseru) p°edßnφm volitelnΘho argumentu user_agent.
Informace se vracejφ jako objekt, kter² obsahuje r∙znΘ datovΘ elementy, kterΘ reprezentujφ nap°φklad hlavnφ a vedlej╣φ Φφslo verze a ID °et∞zec; TRUE/false hodnoty vlastnostφ jako podpora rßmc∙, JavaScript a cookies, atd.
Jakkoli browscap.ini obsahuje informace o mnoha browserech, aktußlnost databßze zßvisφ na u╛ivatelsk²ch updatech. Formßt souboru je pom∞rn∞ snadno pochopiteln².
Nßsledujφcφ p°φklad ukazuje, jak by se daly vypsat v╣echny informace zφskanΘ o u╛ivatelov∞ browseru.
V²stup z v²╣e uvedenΘho skriptu by vypadal asi takto:
Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr> <b>browser_name_pattern:</b> Mozilla/4\.5.*<br> <b>parent:</b> Netscape 4.0<br> <b>platform:</b> Unknown<br> <b>majorver:</b> 4<br> <b>minorver:</b> 5<br> <b>browser:</b> Netscape<br> <b>version:</b> 4<br> <b>frames:</b> 1<br> <b>tables:</b> 1<br> <b>cookies:</b> 1<br> <b>backgroundsounds:</b> <br> <b>vbscript:</b> <br> <b>javascript:</b> 1<br> <b>javaapplets:</b> 1<br> <b>activexcontrols:</b> <br> <b>beta:</b> <br> <b>crawler:</b> <br> <b>authenticodeupdate:</b> <br> <b>msn:</b> <br> |
Aby to fungovalo, browscap direktiva ve va╣em konfiguraΦnφm souboru musφ ukazovat na platnΘ umφst∞nφ browscap.ini souboru.
Pro dal╣φ informace (vΦetn∞ lokacφ na kter²ch m∙╛ete zφskat browscap.ini soubor) viz PHP FAQ na http://www.php.net/manual/faq.php.
Funkce highlight_file() vytiskne barevn∞ zv²razn∞nou syntaxi k≤du obsa╛enΘho ve filename s pou╛itφm barev definovan²ch ve zv²raz≥ovaΦi syntaxe zabudovanΘm v PHP. Vracφ TRUE p°i ·sp∞chu, jinak FALSE (PHP 4).
P°φklad 1. Tvorba URL zvyraz≥ujφcφ syntaxi K vytvo°enφ URL, kterß zv²raznφ syntaxi jakΘhokoliv skriptu, kter² jφ p°edßte vyu╛ijeme "ForceType" direktivu Apache k vytvo°enφ hezkΘho vzorce URL, and pomocφ funkce highlight_file() vypφ╣eme hezky vypadajφcφ v²pis k≤du. Do svΘho httpd.conf p°idejte nßsledujφcφ:
A potom vytvo°te soubor pojmenovan² "source", a umφst∞te ho do svΘho web root adresß°e.
Potom m∙╛ete pou╛φt URL jako je ta nφ╛e k zobrazenφ obarvenΘ verze skriptu umφst∞nΘ v "/path/to/script.php" na va╣em webu.
|
Viz takΘ highlight_string(), show_source().
Funkce highlight_string() vytiskne barevn∞ zv²razn∞nou verzi str s pou╛itφm barev definovan²ch ve zv²raz≥ovaΦi syntaxe zabudovanΘm v PHP. Vracφ TRUE p°i ·sp∞chu, jinak FALSE (PHP 4).
Viz takΘ highlight_file(), show_source().
(PHP 3>= 3.0.7, PHP 4 )
ignore_user_abort -- Nastavuje, jestli mß ukonΦenφ spojenφ klientem p°eru╣it vykonßvßnφ skriptuTato funkce nastavuje, jestli mß odpojenφ klienta zp∙sobit ukonΦenφ skriptu. Vracφ p°edchozφ nastavenφ, a p°i zavolßnφ bez argumentu souΦasnΘ nastavenφ nem∞nφ, pouze ho vracφ. ┌plnΘ vysv∞tlenφ viz popis v sekci Obsluha spojenφ v kapitole Vlastnosti
Sbalφ p°edanΘ argumenty do binßrnφho °et∞zce podle argumentu format. Vracφ binßrnφ °et∞zec obsahujφcφ p°edanß data.
Nßpad na tuto funkci byl p°evzat z Perlu, a v╣echny formßtovacφ k≤dy fungujφ stejn∞ jako tam, nicmΘn∞, n∞kterΘ formßtovacφ k≤dy chybφ, jako nap°φklad Perlovsk² formßtovacφ k≤d "u". Formßtovacφ °et∞zec sestßvß z formßtovacφch k≤du nßsledovan²ch voliteln²m opakovacφm argumentem. Opakovacφ argument m∙╛e b²t bu∩ celoΦφselnß hodnota, nebo * pro opakovßnφ do konce vstupnφch dat. U a, A, h, H poΦet opakovßnφ urΦuje, kolik znak∙ se vezme z jednoho datovΘho argumentu, u @ je to absolutnφ pozice, kde se majφ umφstit dal╣φ data, u v╣eho ostatnφho poΦet opakovßnφ urΦuje, kolik datov²ch argument∙ se spot°ebuje a sbalφ do v²slednΘho binßrnφho °et∞zce. V souΦasnosti jsou implementovßny
a °et∞zec dopln∞n² NUL hodnotami
A °et∞zec dopln∞n² SPACE hodnotami
h Hex °et∞zec, spodnφ slabika prvnφ
H Hex °et∞zec, hornφ slabika prvnφ
c signed char
C unsigned char
s signed short (v╛dy 16 bit∙, machine byte order)
S unsigned short (v╛dy 16 bit∙, machine byte order)
n unsigned short (v╛dy 16 bit∙, big endian byte order)
v unsigned short (v╛dy 16 bit∙, little endian byte order)
i signed integer (velikost a po°adφ byt∙ zßvislß na systΘmu)
I unsigned integer (velikost a po°adφ byt∙ zßvislß na systΘmu)
l signed long (v╛dy 32 bit∙, machine byte order)
L unsigned long (v╛dy 32 bit∙, machine byte order)
N unsigned long (v╛dy 32 bit∙, big endian byte order)
V unsigned long (v╛dy 32 bit∙, little endian byte order)
f float (velikost a reprezentace zßvislß na systΘmu)
d double (velikost a reprezentace zßvislß na systΘmu)
x NUL byte
X Back up one byte
@ NUL-fill to absolute position
V╣imn∞te si, ╛e rozdφl mezi hodnotami se znamΘnkem a bez znamΘnka ovliv≥uje pouze funkci unpack(), zatφmco funkce pack() dßvß stejn² v²sledek pro formßtovacφ k≤dy se znamΘnkem i bez znamΘnka.
Dßle si v╣imn∞te, ╛e PHP intern∞ uklßdß celoΦφselnΘ hodnoty jako hodnoty se znamΘnkem o velikosti zßvislΘ na systΘmu. Pokud zadßte hodnotu bez znamΘnka, kterß bude p°φli╣ velkß, ne╛ aby se dala takto ulo╛it, p°evede se na double, co╛ Φasto vytvß°φ ne╛ßdoucφ v²sledky.
Funkce show_source() vytiskne barevn∞ zv²razn∞nou syntaxi k≤du obsa╛enΘho ve filename s pou╛itφm barev definovan²ch ve zv²raz≥ovaΦi syntaxe zabudovanΘm v PHP. Vracφ TRUE p°i ·sp∞chu, jinak FALSE (PHP 4).
Poznßmka: Tato funkce je alias funkce highlight_file()
Viz takΘ highlight_string(), highlight_file().
Funkce sleep odklßdß provedenφ programu o poΦet sekund p°edan² v argumentu seconds.
Viz takΘ usleep().
uniqid() vracφ unikßtnφ identifikßtor zalo╛en² na souΦasnΘm Φase v mikrosekundßch, opat°en² prefixem. Prefix m∙╛e b²t u╛iteΦn² nap°φklad pokud generujete identifikßtory na n∞kolika serverech souΦasn∞, kterΘ by mohly vygenerovat identifikßtor ve stejnou mikrosekundu. Prefix m∙╛e b²t a╛ 114 znak∙ dlouh².
Pokud je voliteln² argument lcg TRUE, uniqid() p°idß dodateΦnou "kombinovanou LCG" entropii na konec svΘ nßvratovΘ hodnoty, co╛ by m∞lo uΦinit v²sledky je╣t∞ unikßtn∞j╣φmi.
Pokud je prefix prßzdn², vrßcen² °et∞ec bude 13 znak∙ dlouh². Pokud je lcg TRUE, bude dlouh² 23 znak∙.
Poznßmka: lcg argument je p°φstupn² pouze v PHP 4 and PHP 3.0.13 a vy╣╣φch.
Pokud pot°ebujete unikßtnφ identifikßtor nebo symbol, a zam²╣lφte p°edat tento symbol u╛ivateli po sφti (nap°. session cookies), doporuΦujeme pou╛φt n∞co jako
$token = md5 (uniqid ("")); // no random portion $better_token = md5 (uniqid (rand())); // better, difficult to guess |
Toto vytvo°φ 32znakov² identifikßtor (128bitovΘ hexa Φφslo), kterΘ se extrΘmn∞ te╛ko p°edpovφdß.
unpack() rozbalφ data z binßrnφho °et∞zce do pole podle format. Vracφ pole obsahujφcφ rozbalenΘ prvky binßrnφho °et∞zce.
unpack() funguje trochu jinak ne╛ v Perlu, jeliko╛ rozbalenß data jsou ulo╛ena v asociativnφm poli. Toho dosßhnete tak, ╛e vyjmenujete r∙znΘ formßtovacφ k≤dy a odd∞lφte je lomφtkem /.
Vysv∞tlenφ formßtovacφch k≤d∙ viz takΘ: pack()
V╣imn∞te si, ╛e PHP intern∞ uklßdß celoΦφselnΘ hodnoty se znamΘnkem. Pokud rozbalφte velkou celoΦφselnou hodnotu bez znamΘnka a ta mß stejnou velikost jako hodnoty intern∞ uklßdanΘ PHP, v²sledkem bude negativnφ Φφslo, i kdy╛ bylo zadßno rozbalovßnφ bez znamΘnka.
Funkce usleep() odlo╛φ provedenφ skriptu o dan² poΦet micro_seconds.
Viz takΘ sleep().
Poznßmka: Tato funkce nefunguje na Windows systΘmech.
These functions allow you to access the mnoGoSearch (former UdmSearch) free search engine. mnoGoSearch is a full-featured search engine software for intranet and internet servers, distributed under the GNU license. mnoGoSearch has a number of unique features, which makes it appropriate for a wide range of applications from search within your site to a specialized search system such as cooking recipes or newspaper search, FTP archive search, news articles search, etc. It offers full-text indexing and searching for HTML, PDF, and text documents. mnoGoSearch consists of two parts. The first is an indexing mechanism (indexer). The purpose of the indexer is to walk through HTTP, FTP, NEWS servers or local files, recursively grabbing all the documents and storing meta-data about that documents in a SQL database in a smart and effective manner. After every document is referenced by its corresponding URL, meta-data is collected by the indexer for later use in a search process. The search is performed via Web interface. C, CGI, PHP and Perl search front ends are included.
More information about mnoGoSearch can be found at http://www.mnogosearch.ru/.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Download mnoGosearch from http://www.mnogosearch.ru/ and install it on your system. You need at least version 3.1.10 of mnoGoSearch installed to use these functions.
In order to have these functions available, you must compile PHP with mnoGosearch support by using the --with-mnogosearchoption. If you use this option without specifying the path to mnoGosearch, PHP will look for mnoGosearch under /usr/local/mnogosearch path by default. If you installed mnoGosearch at a different location you should specify it: --with-mnogosearch=DIR.
Poznßmka: PHP contains built-in MySQL access library, which can be used to access MySQL. It is known that mnoGoSearch is not compatible with this built-in library and can work only with generic MySQL libraries. Thus, if you use mnoGoSearch with MySQL, during PHP configuration you have to indicate the directory of your MySQL installation, that was used during mnoGoSearch configuration, i.e. for example: --with-mnogosearch --with-mysql=/usr.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
udm_add_search_limit() adds search restrictions. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
agent - a link to Agent, received after call to udm_alloc_agent().
var - defines parameter, indicating limit.
val - defines the value of the current parameter.
Possible var values:
UDM_LIMIT_URL - defines document URL limitations to limit the search through subsection of the database. It supports SQL % and _ LIKE wildcards, where % matches any number of characters, even zero characters, and _ matches exactly one character. E.g. http://www.example.___/catalog may stand for http://www.example.com/catalog and http://www.example.net/catalog.
UDM_LIMIT_TAG - defines site TAG limitations. In indexer-conf you can assign specific TAGs to various sites and parts of a site. Tags in mnoGoSearch 3.1.x are lines, that may contain metasymbols % and _. Metasymbols allow searching among groups of tags. E.g. there are links with tags ABCD and ABCE, and search restriction is by ABC_ - the search will be made among both of the tags.
UDM_LIMIT_LANG - defines document language limitations.
UDM_LIMIT_CAT - defines document category limitations. Categories are similar to tag feature, but nested. So you can have one category inside another and so on. You have to use two characters for each level. Use a hex number going from 0-F or a 36 base number going from 0-Z. Therefore a top-level category like 'Auto' would be 01. If it has a subcategory like 'Ford', then it would be 01 (the parent category) and then 'Ford' which we will give 01. Put those together and you get 0101. If 'Auto' had another subcategory named 'VW', then it's id would be 01 because it belongs to the 'Ford' category and then 02 because it's the next category. So it's id would be 0102. If VW had a sub category called 'Engine' then it's id would start at 01 again and it would get the 'VW' id 02 and 'Auto' id of 01, making it 010201. If you want to search for sites under that category then you pass it cat=010201 in the url.
UDM_LIMIT_DATE - defines limitation by date the document was modified.
Format of parameter value: a string with first character < or >, then with no space - date in unixtime format, for example:
If > character is used, then the search will be restricted to those documents having a modification date greater than entered, if <, then smaller.
Returns a mnogosearch agent identifier on success, FALSE on failure. This function creates a session with database parameters.
dbaddr - URL-style database description, with options (type, host, database name, port, user and password) to connect to SQL database. Do not matter for built-in text files support. Format for dbaddr: DBType:[//[DBUser[:DBPass]@]DBHost[:DBPort]]/DBName/. Currently supported DBType values are: mysql, pgsql, msql, solid, mssql, oracle, and ibase. Actually, it does not matter for native libraries support, but ODBC users should specify one of the supported values. If your database type is not supported, you may use unknown instead.
dbmode - You may select the SQL database mode of words storage. Possible values of dbmode are: single, multi, crc, or crc-multi. When single is specified, all words are stored in the same table. If multi is selected, words will be located in different tables depending of their lengths. "multi" mode is usually faster, but requires more tables in the database. If "crc" mode is selected, mnoGoSearch will store 32 bit integer word IDs calculated by CRC32 algorithm instead of words. This mode requires less disk space and it is faster comparing with "single" and "multi" modes. crc-multi uses the same storage structure with the "crc" mode, but also stores words in different tables depending on words lengths like in "multi" mode.
Poznßmka: dbaddr and dbmode must match those used during indexing.
Poznßmka: In fact this function does not open a connection to the database and thus does not check the entered login and password. Establishing a connection to the database and login/password verification is done by udm_find().
udm_api_version() returns the mnoGoSearch API version number. E.g. if mnoGoSearch 3.1.10 API is used, this function will return 30110.
This function allows the user to identify which API functions are available, e.g. udm_get_doc_count() function is only available in mnoGoSearch 3.1.11 or later.
Returns an array listing all categories of the same level as the current category in the categories tree. agent is the agent identifier returned by a previous call to >udm_alloc_agent().
The function can be useful for developing categories tree browser.
The returned array consists of pairs. Elements with even index numbers contain the category paths, odd elements contain the corresponding category names.
$array[0] will contain '020300' $array[1] will contain 'Audi' $array[2] will contain '020301' $array[3] will contain 'BMW' $array[4] will contain '020302' $array[5] will contain 'Opel' ... etc. |
Following is an example of displaying links of the current level in format:
Audi BMW Opel ... |
See also udm_cat_path().
Returns an array describing the path in the categories tree from the tree root to the current one, specified by category. agent is the agent identifier returned by a previous call to >udm_alloc_agent().
The returned array consists of pairs. Elements with even index numbers contain the category paths, odd elements contain the corresponding category names.
For example, the call $array=udm_cat_path($agent, '02031D'); may return the following array:
$array[0] will contain '' $array[1] will contain 'Root' $array[2] will contain '02' $array[3] will contain 'Sport' $array[4] will contain '0203' $array[5] will contain 'Auto' $array[4] will contain '02031D' $array[5] will contain 'Ferrari' |
P°φklad 1. Specifying path to the current category in the following format: '> Root > Sport > Auto > Ferrari'
|
See also udm_cat_list().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
udm_clear_search_limits() resets defined search limitations and returns TRUE.
See also udm_add_search_limit().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
udm_errno() returns mnoGoSearch error number, zero if no error.
agent - link to agent identifier, received after call to udm_alloc_agent().
Receiving numeric agent error code.
udm_error() returns mnoGoSearch error message, empty string if no error.
agent - link to agent identifier, received after call to udm_alloc_agent().
Receiving agent error message.
Returns a result link identifier on success, or FALSE on failure.
The search itself. The first argument - session, the next one - query itself. To find something just type words you want to find and press SUBMIT button. For example, "mysql odbc". You should not use quotes " in query, they are written here only to divide a query from other text. mnoGoSearch will find all documents that contain word "mysql" and/or word "odbc". Best documents having bigger weights will be displayed first. If you use search mode ALL, search will return documents that contain both (or more) words you entered. In case you use mode ANY, the search will return list of documents that contain any of the words you entered. If you want more advanced results you may use query language. You should select "bool" match mode in the search from.
mnoGoSearch understands the following boolean operators:
& - logical AND. For example, "mysql & odbc". mnoGoSearch will find any URLs that contain both "mysql" and "odbc".
| - logical OR. For example "mysql|odbc". mnoGoSearch will find any URLs, that contain word "mysql" or word "odbc".
~ - logical NOT. For example "mysql & ~odbc". mnoGoSearch will find URLs that contain word "mysql" and do not contain word "odbc" at the same time. Note that ~ just excludes given word from results. Query "~odbc" will find nothing!
() - group command to compose more complex queries. For example "(mysql | msql) & ~postgres". Query language is simple and powerful at the same time. Just consider query as usual boolean expression.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
agent - link to agent identifier, received ` after call to udm_alloc_agent().
Freeing up memory allocated for agent session.
udm_free_ispell_data() always returns TRUE.
agent - agent link identifier, received after call to udm_alloc_agent().
Poznßmka: This function is supported beginning from version 3.1.12 of mnoGoSearch and it does not do anything in previous versions.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
res - a link to result identifier, received after call to udm_find().
Freeing up memory allocated for results.
udm_get_doc_count() returns the number of documents in the database.
agent - link to agent identifier, received after call to udm_alloc_agent().
Poznßmka: This function is supported only in mnoGoSearch 3.1.11 or later.
udm_get_res_field() returns result field value on success, FALSE on error.
res - a link to result identifier, received after call to udm_find().
row - the number of the link on the current page. May have values from 0 to UDM_PARAM_NUM_ROWS-1.
field - field identifier, may have the following values:
UDM_FIELD_URL - document URL field
UDM_FIELD_CONTENT - document Content-type field (for example, text/html).
UDM_FIELD_CATEGORY - document category field. Use udm_cat_path() to get full path to current category from the categories tree root. (This parameter is available only in PHP 4.0.6 or later).
UDM_FIELD_TITLE - document title field.
UDM_FIELD_KEYWORDS - document keywords field (from META KEYWORDS tag).
UDM_FIELD_DESC - document description field (from META DESCRIPTION tag).
UDM_FIELD_TEXT - document body text (the first couple of lines to give an idea of what the document is about).
UDM_FIELD_SIZE - document size.
UDM_FIELD_URLID - unique URL ID of the link.
UDM_FIELD_RATING - page rating (as calculated by mnoGoSearch).
UDM_FIELD_MODIFIED - last-modified field in unixtime format.
UDM_FIELD_ORDER - the number of the current document in set of found documents.
UDM_FIELD_CRC - document CRC.
udm_get_res_param() returns result parameter value on success, FALSE on error.
res - a link to result identifier, received after call to udm_find().
param - parameter identifier, may have the following values:
UDM_PARAM_NUM_ROWS - number of received found links on the current page. It is equal to UDM_PARAM_PAGE_SIZE for all search pages, on the last page - the rest of links.
UDM_PARAM_FOUND - total number of results matching the query.
UDM_PARAM_WORDINFO - information on the words found. E.g. search for "a good book" will return "a: stopword, good:5637, book: 120"
UDM_PARAM_SEARCHTIME - search time in seconds.
UDM_PARAM_FIRST_DOC - the number of the first document displayed on current page.
UDM_PARAM_LAST_DOC - the number of the last document displayed on current page.
udm_load_ispell_data() loads ispell data. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
agent - agent link identifier, received after call to udm_alloc_agent().
var - parameter, indicating the source for ispell data. May have the following values:
After using this function to free memory allocated for ispell data, please use udm_free_ispell_data(), even if you use UDM_ISPELL_TYPE_SERVER mode.
The fastest mode is UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT is slower and UDM_ISPELL_TYPE_DB is the slowest. The above pattern is TRUE for mnoGoSearch 3.1.10 - 3.1.11. It is planned to speed up DB mode in future versions and it is going to be faster than TEXT mode.
UDM_ISPELL_TYPE_DB - indicates that ispell data should be loaded from SQL. In this case, parameters val1 and val2 are ignored and should be left blank. flag should be equal to 1.
Poznßmka: flag indicates that after loading ispell data from defined source it should be sorted (it is necessary for correct functioning of ispell). In case of loading ispell data from files there may be several calls to udm_load_ispell_data(), and there is no sense to sort data after every call, but only after the last one. Since in db mode all the data is loaded by one call, this parameter should have the value 1. In this mode in case of error, e.g. if ispell tables are absent, the function will return FALSE and code and error message will be accessible through udm_error() and udm_errno().
UDM_ISPELL_TYPE_AFFIX - indicates that ispell data should be loaded from file and initiates loading affixes file. In this case val1 defines double letter language code for which affixes are loaded, and val2 - file path. Please note, that if a relative path entered, the module looks for the file not in UDM_CONF_DIR, but in relation to current path, i.e. to the path where the script is executed. In case of error in this mode, e.g. if file is absent, the function will return FALSE, and an error message will be displayed. Error message text cannot be accessed through udm_error() and udm_errno(), since those functions can only return messages associated with SQL. Please, see flag parameter description in UDM_ISPELL_TYPE_DB.
P°φklad 2. udm_load_ispell_data() example
|
Poznßmka: flag is equal to 1 only in the last call.
UDM_ISPELL_TYPE_SPELL - indicates that ispell data should be loaded from file and initiates loading of ispell dictionary file. In this case val1 defines double letter language code for which affixes are loaded, and val2 - file path. Please note, that if a relative path entered, the module looks for the file not in UDM_CONF_DIR, but in relation to current path, i.e. to the path where the script is executed. In case of error in this mode, e.g. if file is absent, the function will return FALSE, and an error message will be displayed. Error message text cannot be accessed through udm_error() and udm_errno(), since those functions can only return messages associated with SQL. Please, see flag parameter description in UDM_ISPELL_TYPE_DB.
<?php if ((! Udm_Load_Ispell_Data($udm, UDM_ISPELL_TYPE_AFFIX, 'en', '/opt/ispell/en.aff', 0)) || (! Udm_Load_Ispell_Data($udm, UDM_ISPELL_TYPE_AFFIX, 'ru', '/opt/ispell/ru.aff', 0)) || (! Udm_Load_Ispell_Data($udm, UDM_ISPELL_TYPE_SPELL, 'en', '/opt/ispell/en.dict', 0)) || (! Udm_Load_Ispell_Data($udm, UDM_ISPELL_TYPE_SPELL, 'ru', '/opt/ispell/ru.dict', 1))) { exit; } ?> |
Poznßmka: flag is equal to 1 only in the last call.
UDM_ISPELL_TYPE_SERVER - enables spell server support. val1 parameter indicates address of the host running spell server. val2 ` is not used yet, but in future releases it is going to indicate number of port used by spell server. flag parameter in this case is not needed since ispell data is stored on spellserver already sorted.
Spelld server reads spell-data from a separate configuration file (/usr/local/mnogosearch/etc/spelld.conf by default), sorts it and stores in memory. With clients server communicates in two ways: to indexer all the data is transferred (so that indexer starts faster), from search.cgi server receives word to normalize and then passes over to client (search.cgi) list of normalized word forms. This allows fastest, compared to db and text modes processing of search queries (by omitting loading and sorting all the spell data).
udm_load_ispell_data() function in UDM_ISPELL_TYPE_SERVER mode does not actually load ispell data, but only defines server address. In fact, server is automatically used by udm_find() function when performing search. In case of errors, e.g. if spellserver is not running or invalid host indicated, there are no messages returned and ispell conversion does not work.
Poznßmka: This function is available in mnoGoSearch 3.1.12 or later.
Example:
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Defines mnoGoSearch session parameters.
The following parameters and their values are available:
UDM_PARAM_PAGE_NUM - used to choose search results page number (results are returned by pages beginning from 0, with UDM_PARAM_PAGE_SIZE results per page).
UDM_PARAM_PAGE_SIZE - number of search results displayed on one page.
UDM_PARAM_SEARCH_MODE - search mode. The following values available: UDM_MODE_ALL - search for all words; UDM_MODE_ANY - search for any word; UDM_MODE_PHRASE - phrase search; UDM_MODE_BOOL - boolean search. See udm_find() for details on boolean search.
UDM_PARAM_CACHE_MODE - turns on or off search result cache mode. When enabled, the search engine will store search results to disk. In case a similar search is performed later, the engine will take results from the cache for faster performance. Available values: UDM_CACHE_ENABLED, UDM_CACHE_DISABLED.
UDM_PARAM_TRACK_MODE - turns on or off trackquery mode. Since version 3.1.2 mnoGoSearch has a query tracking support. Note that tracking is implemented in SQL version only and not available in built-in database. To use tracking, you have to create tables for tracking support. For MySQL, use create/mysql/track.txt. When doing a search, front-end uses those tables to store query words, a number of found documents and current Unix timestamp in seconds. Available values: UDM_TRACK_ENABLED, UDM_TRACK_DISABLED.
UDM_PARAM_PHRASE_MODE - defines whether index database using phrases ("phrase" parameter in indexer.conf). Possible values: UDM_PHRASE_ENABLED and UDM_PHRASE_DISABLED. Please note, that if phrase search is enabled (UDM_PHRASE_ENABLED), it is still possible to do search in any mode (ANY, ALL, BOOL or PHRASE). In 3.1.10 version of mnoGoSearch phrase search is supported only in sql and built-in database modes, while beginning with 3.1.11 phrases are supported in cachemode as well.
Examples of phrase search:
"Arizona desert" - This query returns all indexed documents that contain "Arizona desert" as a phrase. Notice that you need to put double quotes around the phrase
UDM_PARAM_CHARSET - defines local charset. Available values: set of charsets supported by mnoGoSearch, e.g. koi8-r, cp1251, ...
UDM_PARAM_STOPFILE - Defines name and path to stopwords file. (There is a small difference with mnoGoSearch - while in mnoGoSearch if relative path or no path entered, it looks for this file in relation to UDM_CONF_DIR, the module looks for the file in relation to current path, i.e. to the path where the PHP script is executed.)
UDM_PARAM_STOPTABLE - Load stop words from the given SQL table. You may use several StopwordTable commands. This command has no effect when compiled without SQL database support.
UDM_PARAM_WEIGHT_FACTOR - represents weight factors for specific document parts. Currently body, title, keywords, description, url are supported. To activate this feature please use degrees of 2 in *Weight commands of the indexer.conf. Let's imagine that we have these weights:
URLWeight 1
BodyWeight 2
TitleWeight 4
KeywordWeight 8
DescWeight 16
As far as indexer uses bit OR operation for word weights when some word presents several time in the same document, it is possible at search time to detect word appearance in different document parts. Word which appears only in the body will have 00000010 aggregate weight (in binary notation). Word used in all document parts will have 00011111 aggregate weight.
This parameter's value is a string of hex digits ABCDE. Each digit is a factor for corresponding bit in word weight. For the given above weights configuration:
E is a factor for weight 1 (URL Weight bit)
D is a factor for weight 2 (BodyWeight bit)
C is a factor for weight 4 (TitleWeight bit)
B is a factor for weight 8 (KeywordWeight bit)
A is a factor for weight 16 (DescWeight bit)
Examples:
UDM_PARAM_WEIGHT_FACTOR=00001 will search through URLs only.
UDM_PARAM_WEIGHT_FACTOR=00100 will search through Titles only.
UDM_PARAM_WEIGHT_FACTOR=11100 will search through Title,Keywords,Description but not through URL and Body.
UDM_PARAM_WEIGHT_FACTOR=F9421 will search through:
Description with factor 15 (F hex)
Keywords with factor 9
Title with factor 4
Body with factor 2
URL with factor 1
If UDM_PARAM_WEIGHT_FACTOR variable is omitted, original weight value is taken to sort results. For a given above weight configuration it means that document description has a most big weight 16.
UDM_PARAM_WORD_MATCH - word match. You may use this parameter to choose word match type. This feature works only in "single" and "multi" modes using SQL based and built-in database. It does not work in cachemode and other modes since they use word CRC and do not support substring search. Available values:
UDM_MATCH_BEGIN - word beginning match;
UDM_MATCH_END - word ending match;
UDM_MATCH_WORD - whole word match;
UDM_MATCH_SUBSTR - word substring match.
UDM_PARAM_MIN_WORD_LEN - defines minimal word length. Any word shorter this limit is considered to be a stopword. Please note that this parameter value is inclusive, i.e. if UDM_PARAM_MIN_WORD_LEN=3, a word 3 characters long will not be considered a stopword, while a word 2 characters long will be. Default value is 1.
UDM_PARAM_ISPELL_PREFIXES - Possible values: UDM_PREFIXES_ENABLED and UDM_PREFIXES_DISABLED, that respectively enable or disable using prefixes. E.g. if a word "tested" is in search query, also words like "test", "testing", etc. Only suffixes are supported by default. Prefixes usually change word meanings, for example if somebody is searching for the word "tested" one hardly wants "untested" to be found. Prefixes support may also be found useful for site's spelling checking purposes. In order to enable ispell, you have to load ispell data with udm_load_ispell_data().
UDM_PARAM_CROSS_WORDS - enables or disables crosswords support. Possible values: UDM_CROSS_WORDS_ENABLED and UDM_CROSS_WORDS_DISABLED.
The crosswords feature allows to assign words between <a href="xxx"> and </a> also to a document this link leads to. It works in SQL database mode and is not supported in built-in database and Cachemode.
Poznßmka: Crosswords are supported only in mnoGoSearch 3.1.11 or later.
UDM_PARAM_VARDIR - specifies a custom path to directory where indexer stores data when using built-in database and in cache mode. By default /var directory of mnoGoSearch installation is used. Can have only string values. The parameter is available in PHP 4.1.0 or later.
These functions allow you to access mSQL database servers. More information about mSQL can be found at http://www.hughes.com.au/.
In order to have these functions available, you must compile PHP with msql support by using the --with-msql[=DIR] option. DIR is the mSQL base install directory, defaults to /usr/local/Hughes.
Note to Win32 Users: In order to enable this module on a Windows environment, you must copy msql.dll from the DLL folder of the PHP/Win32 binary package to the SYSTEM32 folder of your windows machine. (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32)
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. mSQL configuration options
Name | Default | Changeable |
---|---|---|
msql.allow_persistent | "On" | PHP_INI_SYSTEM |
msql.max_persistent | "-1" | PHP_INI_SYSTEM |
msql.max_links | "-1" | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Returns number of affected ("touched") rows by a specific query (i.e. the number of rows returned by a SELECT, the number of rows modified by an update, or the number of rows removed by a delete).
See also: msql_query().
Returns TRUE on success, FALSE on error.
msql_close() closes the link to a mSQL database that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed.
Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
msql_close() will not close persistent links generated by msql_pconnect().
See also: msql_connect() and msql_pconnect().
msql_connect() establishes a connection to a mSQL server. The server parameter can also include a port number. e.g. "hostname:port". It defaults to 'localhost'.
Returns a positive mSQL link identifier on success, or FALSE on error.
In case a second call is made to msql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling msql_close().
See also msql_pconnect() and msql_close().
msql_create_db() attempts to create a new database on the server associated with the specified link identifier.
See also msql_drop_db().
Identical to msql_create_db().
msql_data_seek() moves the internal row pointer of the mSQL result associated with the specified query identifier to point to the specified row number. The next call to msql_fetch_row() would return that row.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also msql_fetch_row().
msql_dbname() returns the database name stored in position i of the result pointer returned from the msql_listdbs() function. The msql_numrows() function can be used to determine how many database names are available.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
msql_drop_db() attempts to drop (remove) an entire database from the server associated with the specified link identifier.
See also: msql_create_db().
Errors coming back from the mSQL database backend no longer issue warnings. Instead, use these functions to retrieve the error string.
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
msql_fetch_array() is an extended version of msql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
The second optional argument result_type in msql_fetch_array() is a constant and can take the following values: MSQL_ASSOC, MSQL_NUM, and MSQL_BOTH.
Be careful if you are retrieving results from a query that may return a record that contains only one field that has a value of 0 (or an empty string, or NULL).
An important thing to note is that using msql_fetch_array() is NOT significantly slower than using msql_fetch_row(), while it provides a significant added value.
See also msql_fetch_row().
Returns an object containing field information
msql_fetch_field() can be used in order to obtain information about fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by msql_fetch_field() is retrieved.
The properties of the object are:
name - column name
table - name of the table the column belongs to
not_null - 1 if the column cannot be NULL
primary_key - 1 if the column is a primary key
unique - 1 if the column is a unique key
type - the type of the column
See also msql_field_seek().
Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.
msql_fetch_object() is similar to msql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).
The optional second argument result_type in msql_fetch_array() is a constant and can take the following values: MSQL_ASSOC, MSQL_NUM, and MSQL_BOTH.
Speed-wise, the function is identical to msql_fetch_array(), and almost as quick as msql_fetch_row() (the difference is insignificant).
See also: msql_fetch_array() and msql_fetch_row().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
msql_fetch_row() fetches one row of data from the result associated with the specified query identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Subsequent call to msql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
See also: msql_fetch_array(), msql_fetch_object(), msql_data_seek(), and msql_result().
Seeks to the specified field offset. If the next call to msql_fetch_field() won't include a field offset, this field would be returned.
See also: msql_fetch_field().
msql_fieldflags() returns the field flags of the specified field. Currently this is either, "not NULL", "primary key", a combination of the two or "" (an empty string).
msql_fieldlen() returns the length of the specified field.
msql_fieldname() returns the name of the specified field. query_identifier is the query identifier, and field is the field index. msql_fieldname($result, 2); will return the name of the second field in the result associated with the result identifier.
Returns the name of the table field was fetched from.
msql_fieldtype() is similar to the msql_fieldname() function. The arguments are identical, but the field type is returned. This will be one of "int", "char" or "real".
msql_free_result() frees the memory associated with query_identifier. When PHP completes a request, this memory is freed automatically, so you only need to call this function when you want to make sure you don't use too much memory while the script is running.
msql_list_dbs() will return a result pointer containing the databases available from the current msql daemon. Use the msql_dbname() function to traverse this result pointer.
msql_list_fields() retrieves information about the given tablename. Arguments are the database name and the table name. A result pointer is returned which can be used with msql_fieldflags(), msql_fieldlen(), msql_fieldname(), and msql_fieldtype(). A query identifier is a positive integer. The function returns -1 if a error occurs. A string describing the error will be placed in $phperrmsg, and unless the function was called as @msql_list_fields() then this error string will also be printed out.
See also msql_error().
msql_list_tables() takes a database name and result pointer much like the msql() function. The msql_tablename() function should be used to extract the actual table names from the result pointer.
msql_num_fields() returns the number of fields in a result set.
See also: msql(), msql_query(), msql_fetch_field(), and msql_num_rows().
msql_num_rows() returns the number of rows in a result set.
See also: msql(), msql_query(), and msql_fetch_row().
msql_pconnect() acts very much like msql_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (msql_close() will not close links established by msql_pconnect()).
Returns a positive mSQL persistent link identifier on success, or FALSE on error.
This type of links is therefore called 'persistent'.
msql_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if msql_connect() was called, and use it.
Returns a positive mSQL query identifier on success, or FALSE on error.
P°φklad 1. msql_query() example
|
See also msql(), msql_select_db(), and msql_connect().
Returns the contents of the cell at the row and offset in the specified mSQL result set.
msql_result() returns the contents of one cell from a mSQL result set. The field argument can be the field's offset, or the field's name, or the field's table dot field's name (fieldname.tablename). If the column name has been aliased ('select foo as bar from ...'), use the alias instead of the column name.
When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than msql_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.
Recommended high-performance alternatives: msql_fetch_row(), msql_fetch_array(), and msql_fetch_object().
Returns TRUE on success, FALSE on error.
msql_select_db() sets the current active database on the server that's associated with the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if msql_connect() was called, and use it.
Every subsequent call to msql_query() will be made on the active database.
See also msql_connect(), msql_pconnect(), and msql_query().
msql_tablename() takes a result pointer returned by the msql_list_tables() function as well as an integer index and returns the name of a table. The msql_numrows() function may be used to determine the number of tables in the result pointer.
Returns a positive mSQL query identifier to the query result, or FALSE on error.
msql() selects a database and executes a query on it. If the optional link identifier isn't specified, the function will try to find an open link to the mSQL server and if no such link is found it'll try to create one as if msql_connect() was called with no arguments (see msql_connect()).
Tyto funkce zprost°edkovßvajφ p°φstup na MySQL databßzov² server. Vφce informacφ o MySQL lze nalΘzt na http://www.mysql.com/.
Dokumentace k MySQL je dostupnß na http://www.mysql.com/documentation/.
Pou╛itφm konfiguraΦnφ volby --with-mysql[=DIR] povolφte PHP p°istupovat k MySQL databßzφm.
V PHP 4 je volba --with-mysql ve v²chozφm nastavenφ povolena. Pro zakßzßnφ MySQL m∙╛ete pou╛φt volbu --without-mysql. Pokud v PHP 4 povolφte MySQL bez zadßnφ cesty k MySQL, PHP pou╛ije p°ibalenΘ klientskΘ knihovny MySQL. Pod Windows nenφ pot°eba ╛ßdnΘ DLL, je p°φmo obsa╛eno v PHP 4. U╛ivatelΘ, kte°φ pou╛φvajφ jinΘ aplikace, kterΘ pou╛φvajφ MySQL (nap°φklad auth-mysql) by nem∞li pou╛φt p°ibalenΘ knihovny, ale m∞li by rad∞ji urΦit cestu k instalaΦnφmu adresß°i MySQL, nap°.: --with-mysql=/path/to/mysql. To p°inutφ PHP pou╛φvat klientskΘ knihovny instalovanΘ MySQL, Φφm╛ se vyhnete p°φpadn²m konflikt∙m.
V PHP 5 nenφ ve v²chozφm nastavenφ MySQL nadßle zapnuto ani nejsou k dispozici p°ibalenΘ knihovny MySQL. P°eΦt∞te si tuto FAQ s vysv∞tlenφm d∙vod∙.
Toto MySQL roz╣φ°enφ nebude pracovat s MySQL verzemi v∞t╣φmi ne╛ 4.1.0. Pro tyto verze pou╛ijte MySQLi.
Varovßnφ |
Padßnφ a problΘmy p°i startu PHP mohou nastat, pokud nahrßvßte toto roz╣φ°enφ spolu s roz╣φ°enφm recode. Viz roz╣φ°enφ recode pro bli╛╣φ informace. |
Poznßmka: Pokud pot°ebujete k≤dovΘ strßnky jinΘ ne╛ latin (v²chozφ), musφte nainstalovat externφ (ne p°ibalenou) knihovnu se zakompilovanou podporou k≤dov²ch strßnek.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Mo╛nosti nastavenφ MySQL
JmΘno | V²chozφ | Zm∞nitelnΘ |
---|---|---|
mysql.allow_persistent | "On" | PHP_INI_SYSTEM |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
mysql.max_links | "-1" | PHP_INI_SYSTEM |
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL |
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_user | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.connect_timeout | "0" | PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Mß-li b²t povoleno persistentnφ (trvalß) spojenφ s MySQL.
Maximßlnφ poΦet persistentnφch spojenφ na jeden proces.
Maximßlnφ poΦet spojenφ s MySQL na jeden proces vΦetn∞ persistentnφch spojenφ.
╚φslo v²chozφho TCP portu pro spojenφ s databßzov²m serverem, pokud nenφ port zadßn. Nenφ-li v²chozφ port zadßn, pou╛ije se port uveden² v prom∞nnΘ prost°edφ MYSQL_TCP_PORT, zßznam mysql-tcp v /etc/services nebo "compile-time" konstanta MYSQL_PORT, v tomto po°adφ. Win32 pou╛φvß pouze konstantu MYSQL_PORT.
V²chozφ jmΘno socketu pro p°ipojenφ k lokßlnφmu databßzovΘmu serveru, nenφ-li jin² socket specifikovßn.
V²chozφ server pro spojenφ s databßzov²m serverem, nenφ-li uveden jin². Nelze pou╛φt p°i bezpeΦnΘm re╛imu (safe mode).
V²chozφ u╛ivatel pro spojenφ s databßzov²m serverem, nenφ-li uveden jin² u╛ivatel. Nelze pou╛φt p°i bezpeΦnΘm re╛imu (safe mode).
V²chozφ heslo pro spojenφ s databßzov²m serverem, nenφ-li uvedeno jinΘ heslo. Nelze pou╛φt p°i bezpeΦnΘm re╛imu (safe mode).
Timeout p°ipojenφ v sekundßch. Na Linuxu je tento timeout pou╛it takΘ pro Φekßnφ na prvnφ odpov∞∩ serveru.
V MySQL modulu jsou pou╛ity dva typy zdroj∙. Prvnφ je identifikßtor spojenφ pro p°ipojenφ k databßzi a druh² uchovßvß v²sledek dotazu.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Od PHP 4.3.0 je mo╛nΘ nastavit klienta dopl≥ujφcφmi parametry pro funkce mysql_connect() a mysql_pconnect() Jsou definovßny nßsledujφcφ konstanty:
Tabulka 2. MySQL klientskΘ konstanty
Konstanta | Popis |
---|---|
MYSQL_CLIENT_COMPRESS | Pou╛ije kompresnφ protokol |
MYSQL_CLIENT_IGNORE_SPACE | Povolφ mezeru za nßzvy funkcφ |
MYSQL_CLIENT_INTERACTIVE | Povolφ interactive_timeout sekundy (namφsto wait_timeout) neaktivity p°ed uzav°enφm spojenφ. |
Funkce mysql_fetch_array() pou╛φvß konstanty pro r∙znΘ typy v²sledkov²ch polφ. Jsou definovßny nßsledujφcφ konstanty:
Tabulka 3. MySQL fetch konstanty
Konstanta | Popis |
---|---|
MYSQL_ASSOC | Sloupce jsou vraceny do pole jeho╛ klφΦemi jsou nßzvy sloupc∙. |
MYSQL_BOTH | Sloupce jsou vrßceny do pole majφcφho ΦφslenΘ i textovΘ klφΦe, urΦujφcφ po°adφ sloupce v tabulce, respektive jeho jmΘno. |
MYSQL_NUM | Vracφ sloupec do pole s Φφseln²mi klφΦi reprezentujφcφmi po°adφ sloupce v tabulce. Prvnφ sloupec tabulky zaΦφnß klφΦem 0. |
Tento jednoduch² p°φklad ukazuje jak se p°ipojit, provΘst dotaz, zobrazit v²slednΘ °ßdky a odpojit se z MySQL databßze.
P°φklad 1. Ukßzkov² p°φklad pou╛itφ MySQL
|
(PHP 3, PHP 4 )
mysql_affected_rows -- Vrßtφ poΦet ovlivn∞n²ch (zm∞n∞n²ch) zßznam∙ v MySQL po poslednφm dotazumysql_affected_rows() vrßtφ poΦet zßznam∙ ovlivn∞n²ch poslednφm pou╛itφm dotazu INSERT, UPDATE nebo DELETE, kterΘmu odpovφdß spojeni. Nenφ-li identifikßtor spojenφ uveden, pou╛ije se poslednφ spojenφ otev°enΘ pomocφ mysql_connect().
Poznßmka: Pou╛φvßte-li transakce, je nutnΘ mysql_affected_rows() volat a╛ po dotazu INSERT, UPDATE nebo DELETE, nikoli hned po potvrzenφ transakce.
Byl-li poslednφ dotaz DELETE bez Φßsti WHERE, budou smßzany v╣echny zßznamy z tabulky, ale tato funce vrßtφ nulu.
Poznßmka: P°i pou╛itφ UPDATE, MySQL neulo╛φ sloupce, ve kter²ch je novß hodnota shodnß s p∙vodnφ. Toto m∙╛e zp∙sobit, ╛e mysql_affected_rows() nemusφ v╛dy p°esn∞ souhlasit se skuteΦn²m poΦtem ovlivn∞n²ch °ßdk∙.
mysql_affected_rows() nelze pou╛φt s dotazy SELECT, ale jen s takov²mi, kterΘ m∞nφ zßznamy. K zji╣t∞nφ poΦtu °ßdk∙ vrßcen²ch dotazem SELECT pou╛ijte funkci mysql_num_rows().
Je-li poslednφ dotaz chybn², funkce vrßtφ -1.
P°φklad 1. Dotaz typu DELETE (mazßnφ)
P°edchozφ p°φklad by m∞l nßsledujφcφ v²stup:
|
P°φklad 2. Dotaz typu UPDATE (zm∞na)
P°edchozφ p°φklad by m∞l nßsledujφcφ v²stup:
|
Dßle takΘ: mysql_num_rows(), mysql_info().
mysql_change_user() zm∞nφ p°ihlß╣enΘho u╛ivatele souΦasnΘho aktivnφho spojenφ nebo spojenφ definovanΘ nepovinn²m parametrem spojeni. Je-li uveden parameter databaze nastavφ se tato databßze jako v²chozφ, v opaΦnΘm p°φpad∞ z∙stane aktivnφ souΦasnß databßze definovanß ve zm∞n∞nΘm spojenφ. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: Tato funkce byla p°idßna v PHP 3.0.13 a vy╛aduje pou╛itφ MySQL 3.23.3 nebo vy╣╣φ. Nenφ dostupnß v PHP 4.
mysql_client_encoding() vrßtφ v²chozφ nßzev znakovΘ sady pro aktußlnφ spojenφ.
Viz. takΘ: mysql_real_escape_string()
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Funkce mysql_close() uzav°e spojenφ s MySQL serverem, kterΘ je asociovßno se urΦit²m identikßtorem spojenφ Pokud spojeni nenφ zadßn uzav°e poslednφ otev°enΘ spojenφ.
Pou╛itφ mysql_close() nenφ obvykle nutnΘ, proto╛e nepersistentnφ (netrvalß) otev°enß spojenφ jsou zav°ena automaticky po zpracovßnφ scriptu. Dßle viz. uvoln∞nφ zdroj∙.
Poznßmka: mysql_close() neuzav°e persistentnφ spojenφ otev°enΘ pomocφ mysql_pconnect().
Viz. takΘ: mysql_connect(), a mysql_pconnect().
Je-li spojenφ ·sp∞╣nΘ vrßtφ identifikßtor spojenφ v opaΦnΘm p°φpad∞ FALSE.
mysql_connect() vytvo°φ spojenφ s MySQL serverem. Nejsou-li zadßny nepovinnΘ parametry, pou╛ijφ se nßsledujφcφ hodnoty: server = 'localhost:3306', uziv_jmeno = jmΘno u╛ivatele, pod kter²m b∞╛φ prßv∞ spu╣t∞n² skript a heslo = bez hesla.
Parametr server m∙╛e obsahovat Φφslo portu ve tvaru "hostname:port" nebo cestu k socketu ve tvaru ":/cesta/k/socketu" pro localhost.
Poznßmka: V╛dy kdy╛ uvedete "localhost" nebo "localhost:port" jako server, klientskß knihovna MySQL na toto nebude brßt z°etel a pokusφ se p°ipojit na mφstnφ soket ("named pipe" na Windows). Ccete-li pou╛φt TCP/IP, uvedte "127.0.0.1" namφsto "localhost". Pokud se klientskß knihovna MySQL pokou╣φ p°ipojovat na ╣patn² soket, m∞li byste nastavit sprßvnou cestu jako mysql.default_host ve va╣φ PHP konfiguraci a nechat pole server prßzdnΘ.
Podpora pro ":port" byla p°idßna v PHP 3.0B4.
Podpora pro ":/cesta/k/socketu" byla p°idßna v PHP 3.0.10.
Chybovou hlß╣ku lze potlaΦit p°idßnφm @ p°ed jmΘno funkce.
Bude-li funkce mysql_connect() zavolßna podruhΘ se stejn²mi parametry, nebude vytvo°eno novΘ spojenφ, ale pou╛ije se stßvajφcφ a je vrßcen i stejn² identifikßtor spojenφ. Nepovinn² parametr nove_spojeni toto chovßnφ upravuje a ka╛dΘ volßnφ mysql_connect() vytvo°φ v╛dy novΘ spojenφ v p°φpad∞, ╛e funkce mysql_connect() byla volßna znovu se stejn²mi parametry. Parametr nastaveni_klienta m∙╛e b²t kombinace konstant MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE a MYSQL_CLIENT_INTERACTIVE.
Poznßmka: Parametr nove_spojeni byl p°idßn v PHP 4.2.0
Parametr nastaveni_klienta byl p°idßn v PHP 4.3.0
Spojenφ se serverem bude ukonΦeno automaticky po skonΦenφ b∞hu skriptu nebude-li d°φve zavolßna funkce mysql_close()
Viz. takΘ mysql_pconnect() a mysql_close().
mysql_create_db() vytvo°φ na serveru identifikovanΘm parametrem spojenφ novou databßzi.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Kv∙li zp∞tnΘ kompatibilit∞ je mo╛nΘ pou╛φt i mysql_createdb(). Nenφ to v╣ak doporuΦeno.
Poznßmka: TakΘ pou╛φvßnφ mysql_create_db() bylo zavrhnuto. K zaklßdßnφ nov²ch databßzφ pou╛φvejte funkci mysql_query() spoleΦn∞ s p°φkazem SQL CREATE DATABASE.
Varovßnφ |
Tato funkce nenφ dostupnß, pokud je modul MySQL zkompilovßn s MySQL 4.x klientskou knihovnou. |
Viz takΘ: mysql_drop_db(), mysql_query().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
mysql_data_seek() p°esune internφ ukazatel v²sledku MySQL na zßznam specifikovan² Φφslem zßznamu. NßslednΘ volßnφ funkce mysql_fetch_row() naΦte po╛adovan² zßznam.
Nenφ-li zadßno cislo_zaznamu zaΦφnß se od 0. Parametr cislo_zaznamu by m∞lo b²t Φφslo mezi 0 a (mysql_num_rows - 1).
Poznßmka: Funkce mysql_data_seek() m∙╛e b²t pou╛ita pouze ve spoluprßci s mysql_query(), ne s mysql_unbuffered_query().
P°φklad 1. MySQL p°φklad p°esunutφ ukazatele
|
Viz takΘ: mysql_query(), mysql_num_rows().
Prvnφ parametr funkce mysql_db_name() obsahuje identifikßtor volßnφ mysql_list_dbs(). Parametr zßznam urΦuje po°adφ databßze ve v²sledku.
Nastane-li chyba vracφ FALSE. Pou╛itφm mysql_errno() a mysql_error() zjistφte chybovou hlß╣ku.
Kv∙li zp∞tnΘ kompatibilit∞ lze pou╛φt i mysql_dbname(). Nenφ to v╣ak doporuΦeno.
Vrßtφ kladn² identifikßtor v²sledku dotazu do urΦenΘ databßze nebo FALSE nastane-li chyba. Funkce dßle vracφ TRUE/FALSE pro dotazy INSERT/UPDATE/DELETE pro indikace ·sp∞ch/chyba.
mysql_db_query() provede dotaz v databßzi specifikovanΘ parametrem database. Nenφ-li identifikßtor databßze uveden, funkce se pokusφ nalΘzt ji╛ otev°enΘ spojenφ s MySQL serverem. Pokud nenφ ╛ßdnΘ aktivnφ spojenφ nalezeno, pokusφ se vytvo°it novΘ spojenφ s v²chozφmi hodnotami funkce mysql_connect()
Uv∞domte si, ╛e tato funkce NEP╪EP═N┴ zp∞t na databßzi, ke kterΘ jste byli p°ipojeni p°edtφm. Jin²mi slovy, tuto funkci nem∙╛ete pou╛φt k doΦasnΘmu spu╣t∞nφ sql dotazu nad jinou databßzi, museli byste se p°epnout zp∞t na tu p∙vodnφ. U╛ivatel∙m se namφsto tΘto funkce v°ele doporuΦuje pou╛itφ database.table syntaxe v sql dotazech.
Viz. takΘ mysql_connect() a mysql_query().
Poznßmka: Tato funkce nenφ od verze PHP 4.0.6 podporovßna. Mφsto tΘto funkce pou╛ijtemysql_select_db() a mysql_query().
mysql_drop_db() odstranφ ze serveru databßzi uvedenΘho jmΘna pod specifikovan²m identifikßtorem spojenφ.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Kv∙li zp∞tnΘ kompatibilit∞ se m∙╛ete setkat i s mysql_dropdb(). NedoporuΦujeme v╣ak pou╛φvat. Tento zßpis nemusφ b²t v p°φ╣tφch verzφch PHP podporovßn.
Poznßmka: Namφsto pou╛φvßnφ funkce mysql_drop_db() se doporuΦuje ke smazßnφ databßze up°ednostnit funkci mysql_query(), do nφ╛ je vlo╛en SQL dotaz s p°φkazem DROP DATABASE.
Viz. takΘ: mysql_create_db() a mysql_query().
Vrßtφ Φφselnou hodnotu chybovΘ hlß╣ky vyvolanΘ poslednφ MySQL funkcφ nebo 0 (nulu), pokud nenastala ╛ßdnß chyba.
Chyby vrßcenΘ MySQL ji╛ nezp∙sobujφ upozor≥ujφcφ chybovΘ hlß╣enφ (warning). Pot°ebujete-li zjistit Φφseln² k≤d chyby, pou╛ijte mysql_errno(), p°φpadn∞ mysql_error() k zji╣t∞nφ textu chyby. Pamatujte, ╛e tato funkce vracφ chybov² k≤d pouze naposledy vykonanΘ MySQL funkce (net²kß se mysql_error() a mysql_errno()), pokud ji tedy budete pou╛φvat, musφte kontrolovat hodnotu je╣t∞ p°ed volßnφm dal╣φ MySQL funkce.
P°φklad 1. mysql_errno() example
P°edchozφ p°φklad by zobrazil nßsledujφcφ v²stup:
|
Poznßmka: Je-li jako voliteln² parametr uveden i identifikßtor spojenφ, pou╛ije se k vrßcenφ chybovΘho k≤du. V opaΦnΘm p°φpad∞ je pou╛ito poslednφ otev°enΘ spojenφ.
Viz. takΘ: mysql_error()
Vrßtφ text chybovΘ zprßvy poslednφho MySQL p°φkazu nebo '' (prßzdn² °et∞zec) pokud ╛ßdnß chyba nenastala.
Chyby vrßcenΘ MySQL ji╛ nezp∙sobujφ upozor≥ujφcφ chybovΘ hlß╣enφ (warning). Pot°ebujete-li zjistit text chyby, pou╛ijte mysql_error(), p°φpadn∞ mysql_errno() k zji╣t∞nφ ΦφslenΘho k≤du chyby. Pamatujte, ╛e tato funkce vracφ chybov² k≤d pouze naposledy vykonanΘ MySQL funkce (net²kß se mysql_error() a mysql_errno()), pokud ji tedy budete pou╛φvat, musφte kontrolovat hodnotu je╣t∞ p°ed volßnφm dal╣φ MySQL funkce.
P°φklad 1. mysql_errno() example
P°edchozφ p°φklad by zobrazil nßsledujφcφ v²stup:
|
Poznßmka: Je-li jako voliteln² parametr uveden i identifikßtor spojenφ, pou╛ije se k vrßcenφ chybovΘho k≤du. V opaΦnΘm p°φpad∞ je pou╛ito poslednφ otev°enΘ spojenφ.
Viz. takΘ: mysql_errno()
Tato funkce opat°φ specißlnφ znaky v neupraveny_retezec zp∞tn²m lomφtkem pro bezpeΦnΘ pou╛itφ v mysql_query() (konce °ßdk∙ jsou nahrazeny znaΦkou \n atd.).
Poznßmka: mysql_escape_string() nep°idßvß zp∞tnß lomφtka p°ed znaky % a _.
Funkce je tΘm∞° identickß s mysql_real_escape_string(). Vyjma toho, ╛e mysql_real_escape_string() upravφ °et∞zec podle nastavenΘ znakovΘ sady v aktußlnφm identifikßtoru spojenφ. mysql_escape_string() nepou╛φvß identifikßtor spojenφ a ani nebere v potaz aktußlnφ znakovou sadu.
Dßle takΘ: mysql_real_escape_string(), addslashes() a magic_quotes_gpc directive.
(PHP 3, PHP 4 )
mysql_fetch_array -- NaΦte v²sledn² °ßdek do asociativnφho, ΦφslenΘho pole nebo obojφho.Funkce vracφ pole hodnot naΦtenΘho zßznamu nebo FALSE, nenφ-li ╛ßdn² dal╣φ °ßdek.
mysql_fetch_array() je roz╣φ°enou verzφ mysql_fetch_row(). Navφc jsou zde data ulo╛ena v poli nejen pod Φφseln²mi klφΦi, ale takΘ pod asociativnφmi textov²mi klφΦi jmenujφcφmi se podle nßzvu sloupce sql tabulky.
Pokud dva nebo vφce sloupc∙ majφ stejn² nßzev, bude dostupnß hodnota pouze toho poslednφho. Chcete-li p°istupovat i k hodnotßm ostatnφch sloupc∙, musφte k nim v sql dotazu vytvo°it aliasy. Nßzev klφΦe sloupce, k n∞mu╛ je vytvo°em alias, je v╛dy jmΘno aliasu a proto nenφ mo╛nΘ pou╛φt originßlnφ jmΘno sloupce v sql tabulce (viz. 'sloupec' v nßsledujφcφm p°φkladu).
D∙le╛itΘ ov╣em je, ╛e pou╛itφ mysql_fetch_array() nenφ nijak v²znamn∞ pomalej╣φ ne╛ pou╛itφ mysql_fetch_row(), pokud je jejφ pou╛itφ p°idanou hodnotou.
Nepovinn² druh² parametr result_type v mysql_fetch_array() je komstanta, kterß m∙╛e nab²vat nßsledujφcφch hodnot: MYSQL_ASSOC, MYSQL_NUM, a MYSQL_BOTH. Tato vlastnost byla p°idßna v PHP 3.0.7. V²chozφ hodnota je MYSQL_BOTH.
Pou╛itφm MYSQL_BOTH zφskßte pole s asociativnφmi i Φφseln²mi klφΦi. Pou╛itφm MYSQL_ASSOC zφskßte pole pouze s asociativnφmi klφΦi (stejn∞ funguje mysql_fetch_assoc()) a pou╛itφm MYSQL_NUM, pole obsahovat pouze ΦφselnΘ klφΦe (tak funguje mysql_fetch_row()).
P°φklad 2. mysql_fetch_array s MYSQL_NUM
|
P°φklad 3. mysql_fetch_array s MYSQL_ASSOC
|
P°φklad 4. mysql_fetch_array s MYSQL_BOTH
|
Viz takΘ mysql_fetch_row() a mysql_fetch_assoc().
Funkce vracφ asociativnφ pole hodnot vrßcenΘho zßznamu nebo FALSE, nenφ-li ╛ßdn² dal╣φ zßznam.
mysql_fetch_assoc() je akvalentem k mysql_fetch_array() s nepovinn²m druh²m parametrem MYSQL_ASSOC, co╛ vracφ pouze asociativnφ pole. Pokud pot°ebujete pou╛φvat ΦφselnΘ indexy spolu s asociativnφmi, pou╛ijte mysql_fetch_array().
Pokud dva nebo vφce sloupc∙ majφ stejn² nßzev, bude dostupnß hodnota pouze toho poslednφho. Chcete-li p°istupovat i k hodnotßm ostatnφch sloupc∙, musφte k nim v sql dotazu vytvo°it aliasy. Nßzev klφΦe sloupce, k n∞mu╛ je vytvo°em alias, je v╛dy jmΘno aliasu a proto nenφ mo╛nΘ pou╛φt originßlnφ jmΘno sloupce v sql tabulce. Podφvejte se na vysv∞tlenφ pou╛itφ alias∙ v p°φkladu u mysql_fetch_array().
D∙le╛itΘ ov╣em je, ╛e pou╛itφ mysql_fetch_assoc() nenφ nijak v²znamn∞ pomalej╣φ ne╛ pou╛itφ mysql_fetch_row(), pokud je jejφ pou╛itφ p°idanou hodnotou.
P°φklad 1. Roz╣φ°en² p°φklad mysql_fetch_assoc()
|
Pro dal╣φ detaily viz. takΘ mysql_fetch_row(), mysql_fetch_array(), mysql_query() a mysql_error().
Vrßtφ objekt obsahujφcφ informace o sloupci z v²sledku.
mysql_fetch_field() m∙╛ete pou╛φt v p°φpad∞, ╛e pot°ebujete zφskat informace o sloupci z urΦitΘho v²sledku. Nenφ-li specifikovßno po°adφ sloupce (poΦφtßno do nuly), funkce naΦte informace o prvnφm nßsledujφcφm je╣t∞ nenaΦtenΘm sloupci.
Vlastnosti objektu jsou:
name - nßzev sloupce
table - nßzev tabulky, v nφ╛ se tento sloupec nachßzφ
max_length - maximßlnφ dΘlka sloupce ve znacφch
not_null - 1 pokud sloupec nem∙╛e b²t NULL
primary_key - 1 pokud je sloupec primßrnφ klφΦ
unique_key - 1 pokud je sloupec unikßtnφ klφΦ
multiple_key - 1 pokud je sloupec jin² ne╛ unikßtnφ klφΦ
numeric - 1 pokud je sloupec Φφslo
blob - 1 pokud je sloupec BLOB
type - typ sloupce
unsigned - 1 pokud je sloupec bez znamΘnka
zerofill - 1 pokud je sloupec dolpn∞n nulami na svou velikost
P°φklad 1. mysql_fetch_field()
|
Viz. takΘ mysql_field_seek().
Vrßcφ pole obsahujφcφ dΘlku ka╛dΘho sloupce v posledn∞ naΦtenΘm zßznamu pomocφ mysql_fetch_row(), nebo FALSE dojde-li k chyb∞.
mysql_fetch_lengths() obsahuje dΘlky hodnot v╣ech vrßcen²ch sloupc∙ poslednφho naΦtenΘho zßznamu pomocφ mysql_fetch_row(), mysql_fetch_array(), a mysql_fetch_object() v poli, zaΦφnajφcφho klφΦem 0.
Viz. takΘ: mysql_fetch_row().
Vrßcφ objekt, jeho╛ prom∞nnΘ obsahujφ hodnoty naΦtenΘho zßznamu nebo FALSE nenφ-li ╛ßdn² dal╣φ zßznam.
mysql_fetch_object() je obdobou mysql_fetch_array(), s jednφm rozdφlem - narozdφl od pole, je vrßcen objekt. Co╛ znamenß, ╛e k hodnotßm v²sledku lze p°istupovat pouze p°es nßzvy sloupc∙ a nikoli p°es jejich ΦφselnΘ klφΦe (nßzev vlastnosti nem∙╛e b²t Φφslo).
<?php /* tohle je sprßvn² zßpis */ echo $row->field; /* a toto je chybn² zßpis */ echo $row->0; ?> |
Rychlostn∞ je tato funkce identickß s mysql_fetch_array(), a tΘm∞r tak rychlß jako mysql_fetch_row() (rozdφl je nev²znamn²).
P°φklad 1. mysql_fetch_object() p°φklad
|
Viz. takΘ: mysql_fetch_array() a mysql_fetch_row().
Funkce vracφ ΦφslenΘ pole hodnot naΦtenΘho zßznamu nebo FALSE, nenφ-li ╛ßdn² dal╣φ zßznam.
mysql_fetch_row() naΦte jeden zßznam v²sledku do pole s Φφslen²mi klφΦi. Ka╛dß hodnota sloupce je samostatnß hodnota pole; klφΦe jsou Φφslovßny od 0.
Dal╣φ volßnφ mysql_fetch_row() vrßtφ nßsledujφcφ zßznam v²sledku, nebo FALSE nenφ-li ╛ßdn² dal╣φ zßznam.
Viz. takΘ: mysql_fetch_array(), mysql_fetch_object(), mysql_data_seek(), mysql_fetch_lengths() a mysql_result().
mysql_field_flags() vracφ dal╣φ informace o uvedenΘm sloupci tabulky. Ka╛d² p°φznak je reprezentovßn jednφm slovem a jsou od sebe odd∞leny mezerou tak, ╛e lze v²stup snadno rozd∞lit pomocφ funkce explode().
VrßcenΘ p°φznaky mohou b²t nßsledujφcφ (jestli╛e je va╣e verze MySQL podporuje): "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_fieldflags(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_field_len() vracφ dΘlku uvedenΘho sloupce v tabulce.
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_fieldlen(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_field_name() vracφ jmΘno uvedenΘho sloupce v tabulce. v²sledek musφ b²t platn² identifikßtor spojenφ a Φφslo_sloupce je po°adφ sloupce v tabulce.
Poznßmka: Φφslo_sloupce zaΦφnß nulou.
Nap°. po°adφ t°etφho sloupce tabulky bude Φφslo 2, Φtvrt² sloupec v tabulce mß Φφslo 3, atd.
P°φklad 1. mysql_field_name() p°φklad
P°edchozφ p°φklad by zobrazil nßsledujφcφ v²stup:
|
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_fieldname(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
Nastavφ ukazatel na urΦen² sloupec. Pokud nßsledujφcφ volßnφ funkce mysql_fetch_field() nemß zadßn druh² parametr (ΦφselnΘ po°adφ sloupce), vrßtφ informace o sloupci urΦenΘm prßv∞ v mysql_field_seek().
Viz. takΘ: mysql_fetch_field().
Vrßcφ jmΘno tabulky, kterß obsahuje uveden² sloupec.
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_fieldtable(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_field_type() je podobnß funkci mysql_field_name(). Argumenty jsou toto╛nΘ, pouze namφsto jmΘno vracφ typ sloupce. Sloupec m∙╛e b²t typu: "int", "real", "string", "blob", a dal╣φ detailn∞ popsanΘ v MySQL dokumentaci.
P°φklad 1. MySQL typy sloupc∙
P°edchozφ p°φklad by mohl mφt nßsledujφcφ v²stup:
|
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_fieldtype(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_free_result() uvolnφ pam∞t obsazenou v²sledkem definovan²m identifikßtorem spojenφ vysledek.
mysql_free_result() je vhodnΘ pou╛φvat pouze v p°φpad∞, kdy vßm zßle╛φ na tom, jak moc pam∞ti je v pr∙b∞hu skriptu pou╛φto pro vykonan² dotaz a kdy╛ v²sledek dotazu je p°φli╣ velk². V╣echna pam∞╗ obsazenß v²sledky spojenφ bude jinak automaticky ulovn∞na a╛ s koncem b∞hu skriptu.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_freeresult(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_get_client_info() vracφ °et∞zec obsahujφcφ verzi pou╛φvanΘ klientskΘ knihovny MySQL.
Dßle takΘ: mysql_get_host_info(), mysql_get_proto_info() z mysql_get_server_info().
mysql_get_host_info() vracφ °et∞zec popisujφcφ pou╛it² typ spojenφ v spojeni, obsahujφcφ server host name. Pokud je spojeni vynechßno, pou╛ije posledn∞ otev°enΘ spojenφ.
Dßle takΘ: mysql_get_client_info(), mysql_get_proto_info() and mysql_get_server_info().
mysql_get_proto_info() vracφ Φφslo verze protokolu v pou╛itΘm spojeni. Je-li spojeni vynechßno, pou╛ije se posledn∞ otev°enΘ spojenφ.
Dßle takΘ: mysql_get_client_info(), mysql_get_host_info() a mysql_get_server_info().
mysql_get_server_info() vracφ verzi serveru v pou╛itΘm spojeni. Pokud je spojeni vynechßno, pou╛ije se posledn∞ otev°enΘ spojenφ.
Dßle takΘ: mysql_get_client_info(), mysql_get_host_info() a mysql_get_proto_info().
mysql_info() vracφ detailnφ informace o poslednφm dotazu v pou╛itΘm spojeni. Pokud spojeni nenφ uvedeno, pou╛ije se poslednφ otev°enΘ spojenφ.
mysql_info() vracφ °etezec z v╣emi dotazy vylistovan²mi nφ╛e. Pro v╣echny ostatnφ FALSE. Formßt °et∞zce je zßvisl² na pou╛itΘm typu dotazu.
P°φklad 1. P°φslu╣nΘ MySQL dotazy
|
Poznßmka: mysql_info() vracφ hodnotu jinou ne╛ FALSE v p°φpad∞ dotazu INSERT ... VALUES, ve kterΘm jsou uvedeny hodnoty pro zßpis vφce zßznam∙ najednou.
Dßle takΘ: mysql_affected_rows()
mysql_insert_id() vracφ hodnotu ID vygenerovanou pro sloupec AUTO_INCREMENT p°edchozφm dotazem typu INSERT indetifikovan²m parametrem spojeni. Pokud je spojeni vynechßno, pou╛ije se posledn∞ otev°enΘ spojenφ.
mysql_insert_id() vracφ 0 pokud pro p°edchozφ dotaz nebyla vygenerovßna ╛ßdnß hodnota pomocφ AUTO_INCREMENT. I v p°φpad∞, ╛e pot°ebujete hodnotu pou╛φt pozd∞ji, dbejte na to, abyste funkci mysql_insert_id() volali okam╛it∞ po dotazu, pro n∞j╛ byla vygenerovßna hodnota pomocφ AUTO_INCREMENT.
Poznßmka: Hodnota MySQL SQL funkce LAST_INSERT_ID() v╛dy obsahuje nejvy╣╣φ posledn∞ vygenerovanou hodnotu AUTO_INCREMENT a nenφ mezi dal╣φmi dotazy vynulovßna.
Varovßnφ |
mysql_insert_id() p°evßdφ typ vrßcen² nativnφ MySQL C API funkcφ mysql_insert_id() z typu long (ekvivalent v PHP int). Pokud je sloupec AUTO_INCREMENT typu BIGINT, hodnota vrßcenß mysql_insert_id() bude nesprßvnß (pouze v p°φpad∞, ╛e i samotnß hodnota bude mφt velikost BIGINT). Mφsto toho pou╛ijte vnit°nφ MySQL SQL funkci LAST_INSERT_ID() p°φmo v SQL dotazu. |
P°φklad 1. mysql_insert_id P°φklad
|
Dßle takΘ: mysql_query().
mysql_list_dbs() vracφ ukazatel v²sledku obsahujφcφ databßze dostupnΘ na aktußlnφm mysql dΘmonovi. Lze pou╛φt nap°φklad spoleΦn∞ s funkcφ mysql_tablename() k zφskßnφ nßzv∙ tabulek, p°φpadn∞ jin²ch funkcφch k zφskßnφ zßznam∙ z tabulkek jako nap°φklad mysql_fetch_array().
Poznßmka: P°edchozφ k≤d by tak snadno pracoval i s mysql_fetch_row() Φi podobn²mi funkcemi.
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_listdbs(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
Viz. takΘ mysql_db_name().
mysql_list_fields() vracφ ukazatel v²sledku o sloupcφch uvedenΘ tabulky. Argumentu jsou jmΘno databßze a jmΘno tabulky. Vrßcen² ukazatel v²sledku m∙╛e b²t pou╛it spolu s funkcemi mysql_field_flags(), mysql_field_len(), mysql_field_name(), a mysql_field_type().
P°φklad 1. mysql_list_fields() p°φklad
P°edchozφ p°φklad by mohl mφt nßsledujφcφ v²stup:
|
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_listfields(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_list_processes() vracφ ukazatel popisujφcφ aktußlnφ vlßkna serveru.
P°φklad 1. mysql_list_processes() p°φklad
P°edchozφ p°φklad by zobrazit nßsledujφcφ v²stup:
|
Dßle takΘ: mysql_thread_id()
mysql_list_tables() Na zßklad∞ jmΘna databßze vracφ ukazatel v²sledku na tabulky p°esn∞ tak jako mysql_db_query(). Pou╛φtφm funkce mysql_tablename() m∙╛ete zjistit jmΘna v╣ech tabulek z ukazatele v²sledku nebo pou╛φt jinΘ funkce k zji╣t∞nφ dal╣φch informacφ jako nap°. mysql_fetch_array().
Parametr database je nßzev databßze, z kterΘ se majφ Φφst jmΘna tabulky. Dojde-li k chyb∞, mysql_list_tables() vracφ FALSE.
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_listtables(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
Poznßmka: Tato funkce byla zavr╛ena, dßle ji nepou╛φvejte. Pou╛φvejte mφsto nφ p°φkaz SHOW TABLES FROM DATABASE.
P°φklad 1. mysql_list_tables P°φklad
|
Dßle takΘ: mysql_list_dbs(), a mysql_tablename().
mysql_num_fields() vracφ poΦet sloupc∙ zφskan²ch sql dotazem ve v²sledku v²sledek
Viz. takΘ: mysql_db_query(), mysql_query(), mysql_fetch_field() a mysql_num_rows().
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_numfields(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_num_rows() vracφ poΦet zßznam∙ ve v²sledku dotazu. Tento p°φkaz je pou╛iteln² pouze pro dotaz typu SELECT. Pot°ebujete-li zφskat poΦet zßznam∙ ovlivn∞n²ch dotazy INSERT, UPDATE nebo DELETE, pou╛ijte mysql_affected_rows().
Poznßmka: Pou╛φvßte-li mysql_unbuffered_query(), mysql_num_rows() nebude vracet sprßvnou hodnotu dokud nebudou p°ijaty v╣echny zßznamy ve v²sledku.
Dßle takΘ: mysql_affected_rows(), mysql_connect(), mysql_data_seek(), mysql_select_db() a mysql_query().
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_numrows(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
Vytvo°φ persistentnφ (trvalΘ) spojenφ s MySQL serverem a vracφ identifikßtor spojenφ. P°i ne·sp∞╣nΘm pokusu o spojenφ vracφ FALSE.
mysql_pconnect() otev°e spojenφ s MySQL server. Je-li funkce volßna bez nepovinn²ch paramtr∙, jsou u nich p°edpoklßdßny nßsledujφcφ v²chozφ hodnoty: server = 'localhost:3306', jmeno = jmΘno vlastnφka procesu a heslo = prßzdnΘ heslo. Parametr nastaveni_klienta m∙╛e b²t kombinacφ konstant MYSQL_CLIENT_COMPRESS, MYSQL_CLIENT_IGNORE_SPACE nebo MYSQL_CLIENT_INTERACTIVE.
Parametr server m∙╛e obsahovat Φφslo portu ve stylu "hostname:port" nebo cestu k soketu ve stylu ":/cesta/k/soketu" pro localhost.
Poznßmka: Podpora pro ":port" byla p°idßna v PHP 3.0B4.
Podpora pro ":/cesta/k/soketu" byla p°idßna v PHP 3.0.10.
Funkce mysql_pconnect() je velmi podobnß funkci mysql_connect() s dv∞ma hlavnφmi rozdφly.
Za prvΘ, funkce se nejprve pokusφ nalΘzt ji╛ existujφcφ (persistentnφ) spojenφ otev°enΘ na stejnΘm portu pod stejn²m jmΘnem a heslem. Je-li takovΘ spojenφ nalezeno, pou╛ije se namφsto vytvß°enφ novΘho.
Za druhΘ, spojenφ s SQL serverem nebude uzav°eno p°i ukonΦenφ b∞hu skriptu. Z∙stane otev°eno pro pou╛itφ v dal╣φch skriptech, kterΘ teprve budou spou╣t∞ny (mysql_close() neuzav°e persistentnφ spojenφ vytvo°enΘ pomocφ mysql_pconnect()).
Nepovinn² parametr nastaveni_klientabyl p°idßn v PHP 4.3.0.
Proto je tento typ spojenφ naz²vßn jako 'persistentnφ' - trval².
Poznßmka: Persistentnφ spojenφ funguje pouze v p°φpad∞, kdy je PHP spu╣t∞no jako modul (nikoli CGI). Vφce o tΘto problematice naleznete v sekci Persistentnφ databßzovß spojenφ.
Varovßnφ |
Pou╛φvßnφ persistetnφho spojenφ m∙╛e vy╛adovat malou ·pravu v konfiguraci Apache a MySQL k zaji╣t∞nφ nep°ekroΦenφ maximßlnφho limitu povolen²ch p°ipojenφ k MySQL. |
(PHP 4 >= 4.3.0)
mysql_ping -- Ov∞°φ spojenφ se serverem, p°φpadn∞, nenφ-li spojenφ dostupnΘ, pokusφ se p°ipojit znovu.mysql_ping() zkou╣φ, zda je Φi nenφ spojenφ se serverem. V p°φpad∞, ╛e spojenφ je ztraceno, automaticky se pokusφ vytvo°it novΘ spojenφ. Tato funkce m∙╛e b²t pou╛ita ve scriptech, kterΘ z∙stßvajφ dlouho dobu neΦinnΘ k zji╣t∞nφ, zda je sepojenφ se serverem ji╛ zav°eno a v p°φpad∞ nutnosti navß╛ou automaticky spojenφ novΘ. mysql_ping() vracφ TRUE pokud je spojenφ navßzßno, jinak FALSE.
Dßle takΘ: mysql_thread_id(), mysql_list_processes().
mysql_query() Provede dotaz na aktußlnφm spojenφ v aktivnφ databßzi na serveru a vrßtφ identifikßtor v²sledku. Nenφ-li parametr spojeni uveden, pou╛ije posledn∞ otev°enΘ spojenφ. Pokud nenφ ╛ßdnΘ otev°enΘ spojenφ nalezeno, funkce se ho pokusφ vytvo°it za pou╛itφ v²chozφch hodnot funkce mysql_connect() (jakoby byla volßna bez parametr∙).
Poznßmka: ╪et∞zec dotazu by nem∞l konΦit st°ednφkem.
Pouze p°i pou╛itφ dotazu typu SELECT je vrßcen identifikßtor v²sledku Φi FALSE pokud p°i vykonßvßnφ dotazu do╣lo k chyb∞. P°i ostatnφch typech dotaz∙ mysql_query() vracφ TRUE p°i ·sp∞╣nΘm dotazu nebo FALSE dojde-li k chyb∞. Ne-FALSE vrßcenß hodnota znamenß, ╛e dotaz byl vykonßn serverem bez chyb. Tato funkce nezaznamenßvß ╛ßdnΘ ·daje o poΦtu ovlivn∞n²ch nebo vrßcen²ch °ßdk∙. Lze pouze zjistit, zda dotaz prob∞hl v po°ßdku.
Nßsledujφcφ dotaz je syntakticky nesprßvn², tak╛e jeho vykonßvßnφ v mysql_query() sel╛e a vrßtφ FALSE:
Nßsledujφcφ dotaz je v²znamov∞ nesprßvn² my_col nenφ sloupec v tabulce my_tbl, tak╛e mysql_query() sel╛e a vrßtφ FALSE:
mysql_query() takΘ v╛dy sel╛e a vrßtφ FALSE jestli╛e nemßte dostateΦnΘ oprßvn∞nφ p°φstupu do tabulky (tabulek) uveden²ch v dotazu.
Pot°ebujete-li zjistit poΦet zßznam∙ vrßcen²ch dotazem typu SELECT, pou╛ijte nßsledn∞ funkci mysql_num_rows() Φi p°φpadn∞ funkci mysql_affected_rows(), pokud pot°ebujete zjistit poΦet v╣ech ovlivn∞n²ch zßznam∙ dotazy typ∙ DELETE, INSERT, REPLACE nebo UPDATE.
Pouze p°i dotazech SELECT, SHOW, DESCRIBE nebo EXPLAIN mysql_query() vracφ nov² identifikßtor dotazu, kter² lze pou╛φt nap°φklad pro volßnφ funkce mysql_fetch_array() a dal╣φch funkcφ pro zpracovßnφ v²sledk∙ dotazu. Nepot°ebujete-li ji╛ obsah v²sledku dotazu, m∙╛ete uvolnit pam∞t volßnφm funkce mysql_free_result(). NicmΘn∞ pam∞t bude stejn∞ uvoln∞na automaticky na konci b∞hu skriptu.
Viz. takΘ: mysql_num_rows() mysql_affected_rows(), mysql_unbuffered_query(), mysql_free_result(), mysql_fetch_array(), mysql_fetch_row(), mysql_fetch_assoc(), mysql_result(), mysql_select_db(), a mysql_connect().
Tato funkce opat°φ specißlnφ znaky v neupraveny_retezec zp∞tn²m lomφtkem pro bezpeΦnΘ pou╛itφ v mysql_query() v zßvislosti na aktußlnφ znakovΘ sad∞ spojenφ (konce °ßdk∙ jsou nahrazeny znaΦkou \n atd.).
Poznßmka: mysql_real_escape_string() nep°idßvß zp∞tnß lomφtka p°ed % and _.
P°φklad 1. mysql_real_escape_string() p°φklad
P°edchozφ p°φklad by zobrazil nßsledujφcφ v²stup:
|
Dßle takΘ: mysql_escape_string(), mysql_character_set_name().
mysql_result() vracφ zßznamy jednoho sloupce z v²sledku MySQL. Argumenty mohou b²t Φφslo sloupce, jmΘno sloupce, jmΘno tabulky nebo jmΘno tabulky teΦka jmΘno sloupce (tabulka.sloupec). Mß-li n∞kter² sloupec jmenn² alias (SELECT muj_sloupec as tvuj_sloupec FROM ...), pou╛φvejte alias namφsto jmΘno sloupce.
Pokud pracujete s velk²mi zßznamy, m∞li byste uvß╛it pou╛itφ jednΘ z funkcφ, kterΘ vracφ ·pln∞ cel² zßznam (v╣echny sloupce specifikovanΘ v dotazu SELECT najednou), proto╛e tyto funkce vracφ cel² v²sledek v jednom volßnφ funkce a jsou proto MNOHEM rychlej╣φ ne╛ mysql_result(). Dßle je nutnΘ podotknout, ╛e jako argument sloupce je mnohem rychlej╣φ uvΘst Φφseln² identifikßtor ne╛ jmΘno sloupce Φi zßpis tabulka.sloupec.
Volßnφ funkce mysql_result() by nem∞lo b²t mφchßno s volßnφm jin²ch funkcφ, proto╛e by do╣lo k d∞lenφ zßznam∙ z v²sledku.
DoporuΦenΘ mnohem v²kon∞j╣φ alternativy: mysql_fetch_row(), mysql_fetch_array() a mysql_fetch_object().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
mysql_select_db() nastavφ aktußlnφ databßzi na serveru a asocijuje ji s uveden²m identifikßtorem spojenφ. Nenφ-li identifikßtor spojenφ uveden, pou╛ije posledn∞ otev°enΘ spojenφ. Nenφ-li ╛ßdnΘ spojenφ otev°eno, funkce se jej pokusφ vytvo°it tak, jakoby byla volßna funkce mysql_connect() bez parametr∙.
Ka╛dΘ dal╣φ volßnφ mysql_query() bude vytvo°eno u╛ na platnou databßzi.
Viz. takΘ: mysql_connect(), mysql_pconnect() a mysql_query().
Z d∙vod∙ zp∞tnΘ kompatibility m∙╛ete takΘ narazit na funkci mysql_selectdb(). Tuto funkci v╣ak nedoporuΦujeme pou╛φvat, nebo╗ nemusφ b²t ji╛ v dal╣φch verzφch PHP podporovßna.
mysql_stat() vracφ aktußlnφ stav systΘmu.
Poznßmka: mysql_stat() vracφ hodnoty stav∙ pouze pro Φas od startu MySQL serveru, vlßkna, pomalΘ dotazy, otev°enΘ tabulky, flush tabulky a dotazy za sekundu. Pro kompletnφ v²pis stav∙ dal╣φch prom∞nn²ch musφte pou╛φt sql dotaz SHOW STATUS.
P°φklad 1. mysql_stat() p°φklad
p°edchozφ p°φklad by zobrazil nßsledujφcφ v²stup:
|
mysql_tablename() p°ijφmß identifikßtor v²sledku vrßcen² funkcφ mysql_list_tables() a celoΦφslen² index a vracφ jmΘno tabulky. K urΦenφ celoΦφslenΘho indexu m∙╛e b²t pou╛ita funkce mysql_num_rows(). Nßvratovou hodnotu funkce mysql_tablename() m∙╛ete projφt pomocφ funkce mysql_tablename nebo libovolnΘ jinΘ funkce pro zpracovßnφ v²sledk∙ dotaz∙, nap°. mysql_fetch_array().
Dßle takΘ: mysql_list_tables().
mysql_thread_id() Vrßtφ id aktußlnφho vlßkna. Je-li spojenφ ztraceno a znovu navßzßno pomocφ mysql_ping(), id vlßnka se zm∞nφ. To znamenß, ╛e byste nem∞li naΦφtat ID vlßkna dop°edu pro pozd∞j╣φ pou╛itφ, ale teprve tehdy, kdy╛ jej pot°ebujete.
Dßle takΘ: mysql_ping(), mysql_list_processes().
(PHP 4 >= 4.0.6)
mysql_unbuffered_query -- Po╣le SQL dotaz bez naΦtenφ a bufferovßnφ v²sledn²ch zßznam∙mysql_unbuffered_query() po╣le SQL dotaz dotaz do MySQL bez naΦtenφ a bufferovßnφ v²sledn²ch zßznam∙ automaticky, jako to d∞lß funkce mysql_query(). Na jednu stranu toto chovßnφ u╣et°φ znaΦnΘ mno╛stvφ pou╛itΘ pam∞ti u SQL dotaz∙, kterΘ vytvß°ejφ rozsßhlΘ v²sledky. Na druhou stranu m∙╛ete zaΦφt pracovat na v²sledku okam╛it∞ po prvnφm zßznamu, kter² byl vrßcen; tj. nemusφte Φekat dokud nebude proveden cel² SQL dotaz. Pou╛ijete-li p°epφnaΦ DB-connects, m∙╛ete zadat voliteln² parametr spojeni.
Poznßmka: ka╛dß v²hoda mysql_unbuffered_query() n∞co stojφ: Nem∙╛ete pou╛φvat funkci mysql_num_rows() k zji╣t∞nφ poΦtu zßznam∙ vrßcen²ch pomocφ mysql_unbuffered_query(). Dßle takΘ musφte naΦφst v╣echny zßznamy vracenΘ nebufferovan²m dotazem p°edtφm, ne╛ po╣lete nov² SQL dotaz do MySQL.
Viz. takΘ: mysql_query().
The mysqli extension allows you to access the functionality provided by MySQL 4.1 and above. More information about the MySQL Database server can be found at http://www.mysql.com/
Documentation for MySQL can be found at http://www.mysql.com/documentation/.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
In order to have these functions available, you must compile PHP with support for the mysqli extension.
Poznßmka: The mysqli extension is designed to work with the version 4.1 or above of MySQL. For previous versions, please see the MySQL extension documentation.
To install the mysqli extension for PHP, use the --with-mysqli=mysql_config_path configuration option where mysql_config_path represents the location of the mysql_config program that comes with MySQL versions greater than 4.1. Also, disable the standard MySQL extension (which is enabled by default) by also using the --without-mysql configuration option. If you would like to install the standard mysql extension along with the mysqli extension, the bundled libmysql library that comes with PHP cannot be used. Instead, use the client libraries installed by MySQL with versions below 4.1. This will force PHP to use the client libraries installed by MySQL thus avoiding any conflicts.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. MySQLi Configuration Options
Name | Default | Changeable |
---|---|---|
mysqli.max_links | "-1" | PHP_INI_SYSTEM |
mysqli.default_port | NULL | PHP_INI_ALL |
mysqli.default_socket | NULL | PHP_INI_ALL |
mysqli.default_host | NULL | PHP_INI_ALL |
mysqli.default_user | NULL | PHP_INI_ALL |
mysqli.default_pw | NULL | PHP_INI_ALL |
For further details and definitions of the above PHP_INI_* constants, see the chapter on configuration changes.
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
The maximum number of MySQL connections per process, including persistent connections.
The default TCP port number to use when connecting to the database server if no other port is specified. If no default is specified, the port will be obtained from the MYSQL_TCP_PORT environment variable, the mysql-tcp entry in /etc/services or the compile-time MYSQL_PORT constant, in that order. Win32 will only use the MYSQL_PORT constant.
The default socket name to use when connecting to a local database server if no other socket name is specified.
The default server host to use when connecting to the database server if no other host is specified. Doesn't apply in safe mode.
The default user name to use when connecting to the database server if no other name is specified. Doesn't apply in safe mode.
The default password to use when connecting to the database server if no other password is specified. Doesn't apply in safe mode.
Tabulka 2. MySQLi Constants
Name | Description |
---|---|
MYSQLI_READ_DEFAULT_GROUP (integer) | |
MYSQLI_READ_DEFAULT_FILE (integer) | |
MYSQLI_OPT_CONNECT_TIMEOUT (integer) | |
MYSQLI_OPT_LOCAL_INFILE (integer) | |
MYSQLI_INIT_COMMAND (integer) | |
MYSQLI_CLIENT_SSL (integer) | |
MYSQLI_CLIENT_COMPRESS (integer) | |
MYSQLI_CLIENT_INTERACTIVE (integer) | |
MYSQLI_CLIENT_IGNORE_SPACE (integer) | |
MYSQLI_CLIENT_NO_SCHEMA (integer) | |
MYSQLI_CLIENT_MULTI_QUERIES (integer) | |
MYSQLI_STORE_RESULT (integer) | |
MYSQLI_USE_RESULT (integer) | |
MYSQLI_ASSOC (integer) | |
MYSQLI_NUM (integer) | |
MYSQLI_BOTH (integer) | |
MYSQLI_NOT_NULL_FLAG (integer) | |
MYSQLI_PRI_KEY_FLAG (integer) | |
MYSQLI_UNIQUE_KEY_FLAG (integer) | |
MYSQLI_MULTIPLE_KEY_FLAG (integer) | |
MYSQLI_BLOB_FLAG (integer) | |
MYSQLI_UNSIGNED_FLAG (integer) | |
MYSQLI_ZEROFILL_FLAG (integer) | |
MYSQLI_AUTO_INCREMENT_FLAG (integer) | |
MYSQLI_TIMESTAMP_FLAG (integer) | |
MYSQLI_SET_FLAG (integer) | |
MYSQLI_NUM_FLAG (integer) | |
MYSQLI_PART_KEY_FLAG (integer) | |
MYSQLI_GROUP_FLAG (integer) | |
MYSQLI_TYPE_DECIMAL (integer) | |
MYSQLI_TYPE_TINY (integer) | |
MYSQLI_TYPE_SHORT (integer) | |
MYSQLI_TYPE_LONG (integer) | |
MYSQLI_TYPE_FLOAD (integer) | |
MYSQLI_TYPE_DOUBLE (integer) | |
MYSQLI_TYPE_NULL (integer) | |
MYSQLI_TYPE_TIMESTAMP (integer) | |
MYSQLI_TYPE_LONGLONG (integer) | |
MYSQLI_TYPE_INT24 (integer) | |
MYSQLI_TYPE_DATE (integer) | |
MYSQLI_TYPE_TIME (integer) | |
MYSQLI_TYPE_DATETIME (integer) | |
MYSQLI_TYPE_YEAR (integer) | |
MYSQLI_TYPE_NEWDATE (integer) | |
MYSQLI_TYPE_ENUM (integer) | |
MYSQLI_TYPE_SET (integer) | |
MYSQLI_TYPE_TINY_BLOB (integer) | |
MYSQLI_TYPE_MEDIUM_BLOB (integer) | |
MYSQLI_TYPE_LONG_BLOB (integer) | |
MYSQLI_TYPE_BLOB (integer) | |
MYSQLI_TYPE_VAR_STRING (integer) | |
MYSQLI_TYPE_STRING (integer) | |
MYSQLI_TYPE_CHAR (integer) | |
MYSQLI_TYPE_INTERVAL (integer) | |
MYSQLI_TYPE_GEOMETRY (integer) | |
MYSQLI_BIND_STRING (integer) | |
MYSQLI_BIND_INT (integer) | |
MYSQLI_BIND_DOUBLE (integer) | |
MYSQLI_BIND_SEND_DATA (integer) | |
MYSQLI_RPL_MASTER (integer) | |
MYSQLI_RPL_SLAVE (integer) | |
MYSQLI_RPL_ADMIN (integer) | |
MYSQLI_NEED_DATA (integer) | |
MYSQLI_NO_DATA (integer) | |
MYSQLI_PR_REPORT_STDERR (integer) | |
MYSQLI_PR_REPORT_PORT (integer) | |
MYSQLI_PR_REPORT_FILE (integer) |
(PHP 5 CVS only)
mysqli_affected_rows -- Gets the number of affected rows in a previous MySQL operationmysqli_affected_rows() returns the number of rows affected by the last INSERT, UPDATE, or DELETE query associated with the provided link parameter. If the last query was invalid, this function will return -1.
Poznßmka: When deleting the entire contents of a table (i.e. 'DELETE FROM foo'), this function will not return the number of rows that were actually deleted.
The mysqli_affected_rows() function only works with queries which modify a table. In order to return the number of rows from a SELECT query, use the mysqli_num_rows() function instead.
P°φklad 1. Delete-Query Procedural style:
Object oriented style:
The above examples would produce the following output:
|
P°φklad 2. Update-Query Procedural style:
Object oriented style:
The above examples would produce the following output:
|
See also: mysqli_num_rows(), mysqli_info().
mysqli_autocommit() is used to turn on or off auto-commit mode on queries for the database connection represented by the link resource.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: mysqli_autocommit() doesn't work with non transactional table types (like MyISAM or ISAM).
To determine the current state of autocommit use the SQL command 'SELECT @@autocommit'.
P°φklad 1. Using the mysqli_autocommit function Procedural style:
Object oriented style:
The above examples would produce the following output:
|
See also mysqli_commit(), mysqli_rollback().
mysql_bind_param() is used to bind variables for the parameter markers in the SQL statement that was passed to mysql_prepare(). The array types specifies the types for the diffrent bind variables. Valid array values are MYSQLI_BIND_INT, MYSQLI_BIND_DOUBLE, MYSQLI_BIND_STRING and MYSQLI_SEND_DATA.
Poznßmka: If data size of a variable exceeds max. allowed package size (max_allowed_package), you have to specify MYSQLI_SEND_DATA and use mysqli_send_long_data() to send the data in packages.
The number of variables and array values must match the number of parameters in the statement.
P°φklad 1. Prepared statements Procedural style:
Object oriented style:
|
See also: mysqli_bind_result(), mysqli_execute(), mysqli_fetch() mysqli_prepare() mysqli_send_long_data()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
mysqli_change_user() is used to change the user of the specified database connection as given by the link parameter and to set the current database to that specified by the database parameter.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
If desired, the NULL value may be passed in place of the database parameter resulting in only changing the user and not selecting a database. To select a database in this case use the mysqli_select_db() function.
In order to successfully change users a valid username and password parameters must be provided and that user must have sufficient permissions to access the desired database. If for any reason authorization fails, the current user authentication will remain.
Poznßmka: Using this command will always cause the current database connection to behave as if was a completely new database connection, regardless of if the operation was completed successfully. This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.
P°φklad 1. Using the mysqli_change_user function
|
(PHP 5 CVS only)
mysqli_character_set_name -- Returns the default character set for the database connectionReturns the current character set for the database connection specified by the link parameter.
See also mysqli_real_escape_string().
The mysqli_close() function closes a previously opened database connection specified by the link parameter.
See also mysqli_connect() and mysqli_real_connect().
Commits the current transaction for the database specified by the link parameter.
See also mysqli_autocommit(), mysqli_rollback().
The mysqli_connect() function attempts to open a connection to the MySQL Server running on host which can be either a hostname or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol. If successful, the mysqli_connect() will return a resource representing the connection to the database, or FALSE on failure.
The username and password parameters specify the username and password under which to connect to the MySQL server. If the password is not provided (the NULL value is passed), the MySQL server will attempt to authenticate the user against those user records which have no password only. This allows one username to be used with different permissions (depending on if a password as provided or not).
The dbname parameter if provided will specify the default database to be used when performing queries.
The port and socket parameters are used in conjunction with the hostname parameter to further control how to connect to the database server. The port parameter specifies the port number to attempt to connect to the MySQL server on, while the socket parameter specifies the socket or named pipe that should be used.
Poznßmka: Specifying the socket parameter will not explicitly determine the type of connection to be used when connecting to the MySQL server. How the connection is made to the MySQL database is determined by the host parameter.
See also mysqli_close() and mysqli_real_connect().
The mysqli_data_seek() function seeks to an arbitrary result pointer specified by the offset in the result set represented by result. The offset parameter must be between zero and the total number of rows minus one (0..mysqli_num_rows() - 1).
Poznßmka: This function can only be used with results attained from the use of the mysqli_store_result() function.
P°φklad 1. Using the mysqli_data_seek function
|
See also mysqli_store_result(), mysqli_fetch_row() and mysqli_num_rows().
The mysqli_debug() function is used to perform debugging operations using the Fred Fish debugging library. The debug parameter is a string representing the debugging operation to perform.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
This function is designed to be executed by an user with the SUPER privilege and is used to dump debugging information into the log for the MySQL Server relating to the connection specified by the link parameter.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_errno() function will return the last error code for the most recent MySQLi function call that can succeed or fail with respect to the database link defined by the link parameter. If no errors have occurred, this function will return zero.
Poznßmka: A complete list of the error codes and their meanings can be found in the constants section of the MySQLi documentation
See also mysqli_error().
The mysqli_error() function is identical to the corresponding mysqli_errno() function in every way, except instead of returning an integer error code the mysqli_error() function will return a string representation of the last error to occur for the database connection represented by the link parameter. If no error has occurred, this function will return an empty string.
See also mysqli_errno().
The mysqli_execute() function executes a query that has been previously prepared using the mysqli_prepare() function represented by the stmt resource. When executed any parameter markers which exist will automatically be replaced with the appropriate data.
If the statement is UPDATE, DELETE, or INSERT, the total number of affected rows can be determined by using the mysqli_stmt_affected_rows() function. Likewise, if the query yields a result set the mysqli_fetch() function is used.
Poznßmka: When using mysqli_execute(), the mysqli_fetch() function must be used to fetch the data prior to preforming any additional queries.
P°φklad 1. Using the mysqli_execute function
|
See also mysqli_prepare() and mysqli_bind_param().
(PHP 5 CVS only)
mysqli_fetch_array -- Fetch a result row as an associative, a numeric array, or both.Returns an array that corresponds to the fetched row or FALSE if there are no more rows for the database connection represented by the link parameter.
mysqli_fetch_array() is an extended version of the mysqli_fetch_row() function. In addition to storing the data in the numeric indices of the result array, the mysqli_fetch_array() function can also store the data in associative indices, using the field names of the result set as keys.
Poznßmka: Nßzvy polφ vrßcenΘ touto funkcφ rozli╣ujφ velikost pφsmen.
If two or more columns of the result have the same field names, the last column will take precedence and overwrite the earlier data. In order to access multiple columns with the same name, the numerically indexed version of the row must be used.
The optional second argument result_type is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH. By default the mysqli_fetch_array() function will assume MYSQLI_BOTH for this parameter.
By using the MYSQLI_ASSOC constant this function will behave identically to the mysqli_fetch_assoc(), while MYSQLI_NUM will behave identically to the mysqli_fetch_row() function. The final option MYSQLI_BOTH will create a single array with the attributes of both.
P°φklad 1. mysqli_fetch_array with MYSQLI_NUM
|
P°φklad 2. mysqli_fetch_array with MYSQLI_ASSOC
|
P°φklad 3. mysqli_fetch_array with MYSQLI_BOTH
|
See also mysqli_fetch_assoc(), mysqli_fetch_row() and mysqli_fetch_object().
Returns an associative array that corresponds to the fetched row or FALSE if there are no more rows.
The mysqli_fetch_assoc() function is used to return an associative array representing the next row in the result set for the result represented by the result parameter, where each key in the array represents the name of one of the result set's columns.
If two or more columns in the result set have the same column name, the associative array returned by the mysqli_fetch_assoc() function will contain the value of the last column of that name. If you must work with result sets with this property, the mysqli_fetch_row() should be used which returns an numerically-indexed array instead.
Poznßmka: Nßzvy polφ vrßcenΘ touto funkcφ rozli╣ujφ velikost pφsmen.
P°φklad 1. An expanded mysqli_fetch_assoc() example
|
See also mysqli_fetch_array(), mysqli_fetch_row() and mysqli_fetch_object().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_fetch_field() function is used to return the attributes of the next column in the result set represented by the result parameter as an object. When executed this function will return an object containing the attributes of the current column or FALSE if there are no more columns in the result set.
Tabulka 1. Object attributes
Attribute | Description |
---|---|
name | The name of the column |
orgname | ? |
table | The name of the table this field belongs to (if not calculated) |
orgtable | ? |
def | The default value for this field, represented as a string |
max_length | The maximum width of the field for the result set. |
flags | An integer representing the bit-flags for the field. |
type | The data type used for this field |
decimals | The number of decimals used (for integer fields) |
(PHP 5 CVS only)
mysqli_fetch_fields -- Returns an array of objects representing the fields in a result setThis function serves an identical purpose to the mysqli_fetch_field() function with the single difference that, instead of returning one object at a time for each field, the columns are returned as an array of objects. For a description of the attributes of each object and their meaning, see the mysqli_fetch_field() function.
(PHP 5 CVS only)
mysqli_fetch_lengths -- Returns the lengths of the columns of the current row in the result setThe mysqli_fetch_lengths() function returns an array containing the lengths of every column of the current row within the result set represented by the result parameter. If successful, a numerically indexed array representing the lengths of each column is returned or FALSE on failure.
The mysqli_fetch_object() will return the current row result set as an object where the attributes of the object represent the names of the fields found within the result set. If no more rows exist in the current result set, FALSE is returned.
Poznßmka: Nßzvy polφ vrßcenΘ touto funkcφ rozli╣ujφ velikost pφsmen.
See also mysqli_fetch_array(), mysqli_fetch_assoc() and mysqli_fetch_row().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
mysqli_fetch_row() fetches one row of data from the result set represented by result and returns it as an enumerated array, where each column is stored in an array offset starting from 0 (zero). Each subsequent call to the mysqli_fetch_row() function will return the next row within the result set, or FALSE if there are no more rows.
See also mysqli_fetch_array(), mysqli_fetch_assoc() and mysqli_fetch_object().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns the number of columns for the most recent query on the connection represented by the link parameter. This function can be useful when using the mysqli_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_free_result() function frees the memory associated with the result represented by the result parameter.
The mysqli_get_client_info() function is used to return a string representing the client version being used in the MySQLi extension.
The mysqli_get_host_info() function returns a string describing the connection represented by the link parameter is using (including the server host name).
Returns an integer representing the MySQL protocol version used by the connection represented by the link parameter.
Returns a string representing the version of the MySQL server that the MySQLi extension is connected to (represented by the link parameter).
The mysqli_get_server_version() function returns the version of the server connected to (represented by the link parameter) as an integer. The form of this version number is main_version * 10000 + minor_version * 100 + sub_version (i.e. version 4.1.0 is 40100).
The mysqli_info() function returns a string providing information about the last query executed. The nature of this string is provided below:
Tabulka 1. Possible mysqli_info return values
Query type | Example result string |
---|---|
INSERT INTO...SELECT... | Records: 100 Duplicates: 0 Warnings: 0 |
INSERT INTO...VALUES (...),(...),(...) | Records: 3 Duplicates: 0 Warnings: 0 |
LOAD DATA INFILE ... | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 |
ALTER TABLE ... | Records: 3 Duplicates: 0 Warnings: 0 |
UPDATE ... | Rows matched: 40 Changed: 40 Warnings: 0 |
Poznßmka: Queries which do not fall into one of the above formats are not supported. In these situations, mysqli_info() will return FALSE
(PHP 5 CVS only)
mysqli_init -- Initializes MySQLi and returns a resource for use with mysqli_real_connectVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero.
Poznßmka: Performing an INSERT or UPDATE statement using the LAST_INSERT_ID() function will also modify the value returned by the mysqli_insert_id() function.
This function is used to ask the server to kill a MySQL thread specified by the processid parameter. This value must be retrieved by calling the mysqli_thread_id() function.
(PHP 5 CVS only)
mysqli_master_query -- Enforce execution of a query on the master in a master/slave setupVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_query() function is used to simplify the act of performing a query against the database represented by the link parameter. Functionally, using this function is identical to calling mysqli_real_query() followed either by mysqli_use_result() or mysqli_store_result() where query is the query string itself and resultmode is either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, if the resultmode is not provided MYSQLI_STORE_RESULT is used.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also mysqli_connect() and mysqli_close().
(PHP 5 CVS only)
mysqli_real_escape_string -- Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connectionVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
See also mysqli_character_set_name().
The mysqli_real_query() function is used to execute only a query against the database represented by the link whose result can then be retrieved or stored using the mysqli_store_result() or mysqli_use_result() functions.
Poznßmka: In order to determine if a given query should return a result set or not, see mysqli_field_count().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The mysqli_select_db() function selects the default database (specified by the dbname parameter) to be used when performing queries against the database connection represented by the link parameter.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 5 CVS only)
mysqli_slave_query -- Enforces execution of a query on a slave in a master/slave setupVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Transfers the result set from the last query on the database connection represented by the link parameter to be used with the mysqli_data_seek() function.
Poznßmka: Although it is always good practice to free the memory used by the result of a query using the mysqli_free_result() function, when transferring large result sets using the mysqli_store_result() this becomes particularly important.
The mysqli_thread_id() function returns the thread ID for the current connection which can then be killed using the mysqli_kill() function.
Poznßmka: The thread ID is assigned on a connection-by-connection basis. Hence, if the connection is broken and then re-established a new thread ID will be assigned.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
mysqli_use_result() is used to initiate the retrieval of a result set from the last query executed using the mysqli_real_query() function on the database connection specified by the link parameter. Either this or the mysqli_store_result() function must be called before the results of a query can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.
Poznßmka: The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result()
See also mysqli_real_query() and mysqli_store_result().
msession is an interface to a high speed session daemon which can run either locally or remotely. It is designed to provide consistent session management for a PHP web farm. More Information about msession and the session server software itself can be found at http://devel.mohawksoft.com/msession.html.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns an associative array of value/session for all sessions with a variable named name.
Used for searching sessions with common attributes.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.0.5 - 4.2.3 only)
muscat_close -- Shuts down the muscat session and releases any memory back to PHP.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
[Not back to the system, note!]
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns a literal FALSE when there is no more to get (as opposed to ""). Use === FALSE or !== FALSE to check for this.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
muscat_host is the hostname to connect to port is the port number to connect to - actually takes exactly the same args as fsockopen
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Size is the amount of memory in bytes to allocate for muscat muscat_dir is the muscat installation dir e.g. "/usr/local/empower", it defaults to the compile time muscat directory
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Sφ╗ - konfiguraΦnφ volby
Nßzev | V²chozφ hodnota | Lze zm∞nit v |
---|---|---|
define_syslog_variables | "0" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
UrΦuje, zda definovat r∙znΘ prom∞nnΘ funkce syslog (nap°. $LOG_PID, $LOG_CRON, atd.). Vypnutφ t∞chto prom∞nn²ch je u╛iteΦnΘ pro v²konnost. Za b∞hu m∙╛ete tyto prom∞nnΘ definovat funkcφ define_syslog_variables().
Konstanty z tohoto seznamu jsou v╛dy dostupnΘ jako souΦßst jßdra PHP.
Tabulka 2. openlog() - parametr option
Konstanta | Popis |
---|---|
LOG_CONS | pokud nastane chyba p°i zßpisu do systΘmovΘho logu, zapφ╣e p°φmo na systΘmovou konzoli |
LOG_NDELAY | otev°φt p°ipojenφ k loggeru ihned |
LOG_ODELAY | (v²chozφ) vyΦkat s otev°enφm spojenφ do prvnφho zßznamu |
LOG_NOWAIT | |
LOG_PERROR | vypsat zprßvy logu takΘ na chybov² v²stup |
LOG_PID | ke ka╛dΘ zprßv∞ p°idat PID |
Tabulka 3. openlog() - parametr facility
Konstanta | Popis |
---|---|
LOG_AUTH | bezpeΦnostnφ/autorizaΦnφ zprßvy (na systΘmech, kde je definovßna konstanta LOG_AUTHPRIV, pou╛ijte rad∞ji tu) |
LOG_AUTHPRIV | bezpeΦnostnφ/autorizaΦnφ zprßvy (soukromΘ) |
LOG_CRON | clock daemon (cron a at) |
LOG_DAEMON | jinΘ systΘmovΘ daemony |
LOG_KERN | zprßvy kernelu |
LOG_LOCAL0 ... LOG_LOCAL7 | vyhrazeno pro mφstnφ pou╛itφ, nejsou k dispozici pod Windows |
LOG_LPR | subsystΘm tiskßrny |
LOG_MAIL | subsystΘm e-mailu |
LOG_NEWS | subsystΘm USENET news |
LOG_SYSLOG | zprßvy intern∞ generovanΘ daemonem syslogd |
LOG_USER | obecnΘ zprßvy na u╛ivatelskΘ ·rovni |
LOG_UUCP | subsystΘm UUCP |
Tabulka 4. syslog() - parametr priority
Konstanta | Popis |
---|---|
LOG_EMERG | systΘm je nepou╛iteln² |
LOG_ALERT | zßsah musφ prob∞hnout ihned |
LOG_CRIT | kritickΘ okolnosti |
LOG_ERR | chybovΘ okolnosti |
LOG_WARNING | varovnΘ okolnosti |
LOG_NOTICE | normßlnφ, ale d∙le╛itΘ okolnosti |
LOG_INFO | informaΦnφ zprßva |
LOG_DEBUG | ladφcφ zprßva |
Tabulka 5. dns_get_record() - parametr option
Konstanta | Popis |
---|---|
DNS_A | IPv4 Address Resource |
DNS_MX | Mail Exchanger Resource |
DNS_CNAME | Alias (Canonical Name) Resource |
DNS_NS | Authoritative Name Server Resource |
DNS_PTR | Pointer Resource |
DNS_HINFO | Host Info Resource (Viz odkaz organizace IANA Operating System Names pro v²znam t∞chto hodnot |
DNS_SOA | Start of Authority Resource |
DNS_TXT | Text Resource |
DNS_ANY | Any Resource Record. Na v∞t╣in∞ systΘm∙ vrßtφ v╣echny zßznamy, ale m∞lo by se pou╛φvat pouze za krizov²ch okolnostφ. Rad∞ji pou╛ijte DNS_ALL. |
DNS_AAAA | IPv6 Address Resource |
DNS_ALL | Postupn∞ se dotß╛e name-serveru na v╣echny dostupnΘ typy zßznam∙. |
(PHP 3, PHP 4 )
checkdnsrr -- Ov∞°φ DNS zßznamy odpovφdajφcφ danΘmu nßzvu poΦφtaΦe na Internetu nebo jeho IP adrese.Prohledß DNS na zßznamy typu type, odpovφdajφcφ nßzvu host. Vracφ TRUE, pokud najde n∞jakΘ zßznamy a FALSE, pokud nic nenajde nebo nastane chyba.
type m∙╛e b²t jeden z t∞chto: A, MX, NS, SOA, PTR, CNAME, or ANY. Implicitnφ je MX.
Host m∙╛e b²t jak IP adresa (v "teΦkovΘ" notaci), tak nßzev stroje.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Viz takΘ getmxrr(), gethostbyaddr(), gethostbyname(), gethostbynamel(), a manußlovou strßnku named(8).
closelog() zav°e deskriptor pou╛it² k zßpisu do systΘmovΘho protokolu. Pou╛itφ closelog() je nepovinnΘ.
Viz takΘ define_syslog_variables(), syslog() a openlog().
Zapne vnit°nφ PHP debugger s p°ipojenφm na address. Na debuggeru stßle probφhß v²voj.
(PHP 3, PHP 4 )
define_syslog_variables -- Inicializuje v╣echny konstanty souvisejφcφ se systΘmov²m protokolemInicializuje v╣echny konstanty pou╛itΘ ve funkcφch systΘmovΘho protokolu.
Viz takΘ openlog(), syslog() a closelog().
Check DNS records corresponding to a given Internet host name or IP address
Get MX records corresponding to a given Internet host name.
This function returns an array of associative arrays. Each associative array contains at minimum the following keys:
Tabulka 1. Basic DNS attributes
Attribute | Meaning |
---|---|
host | The record in the DNS namespace to which the rest of the associated data refers. |
class | dns_get_record() only returns Internet class records and as such this parameter will always return IN. |
type | String containing the record type. Additional attributes will also be contained in the resulting array dependant on the value of type. See table below. |
ttl | Time To Live remaining for this record. This will not equal the record's original ttl, but will rather equal the original ttl minus whatever length of time has passed since the authoritative name server was queried. |
hostname should be a valid DNS hostname such as "www.example.com". Reverse lookups can be generated using in-addr.arpa notation, but gethostbyaddr() is more suitable for the majority of reverse lookups.
By default, dns_get_record() will search for any resource records associated with hostname. To limit the query, specify the optional type parameter. type may be any one of the following: DNS_A, DNS_CNAME, DNS_HINFO, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_ALL or DNS_ANY. The default is DNS_ANY.
Poznßmka: Because of eccentricities in the performance of libresolv between platforms, DNS_ANY will not always return every record, the slower DNS_ALL will collect all records more reliably.
The optional third and fourth arguments to this function, authns and addtl are passed by reference and, if given, will be populated with Resource Records for the Authoritative Name Servers, and any Additional Records respectively. See the example below.
Tabulka 2. Other keys in associative arrays dependant on 'type'
Type | Extra Columns |
---|---|
A | ip: An IPv4 addresses in dotted decimal notation. |
MX | pri: Priority of mail exchanger. Lower numbers indicate greater priority. target: FQDN of the mail exchanger. See also dns_get_mx(). |
CNAME | target: FQDN of location in DNS namespace to which the record is aliased. |
NS | target: FQDN of the name server which is authoritative for this hostname. |
PTR | target: Location within the DNS namespace to which this record points. |
TXT | txt: Arbitrary string data associated with this record. |
HINFO | cpu: IANA number designating the CPU of the machine referenced by this record. os: IANA number designating the Operating System on the machine referenced by this record. See IANA's Operating System Names for the meaning of these values. |
SOA | mname: FQDN of the machine from which the resource records originated. rname: Email address of the administrative contain for this domain. serial: Serial # of this revision of the requested domain. refresh: Refresh interval (seconds) secondary name servers should use when updating remote copies of this domain. retry: Length of time (seconds) to wait after a failed refresh before making a second attempt. expire: Maximum length of time (seconds) a secondary DNS server should retain remote copies of the zone data without a successful refresh before discarding. minimum-ttl: Minimum length of time (seconds) a client can continue to use a DNS resolution before it should request a new resolution from the server. Can be overridden by individual resource records. |
AAAA | ipv6: IPv6 address |
SRV | pri: (Priority) lowest priorities should be used first. weight: Ranking to weight which of commonly prioritized targets should be chosen at random. target and port: hostname and port where the requested service can be found. For additional information see: RFC 2782 |
NAPTR | order and pref: Equivalent to pri and weight above. flags, services, regex, and replacement: Parameters as defined by RFC 2915. |
Poznßmka: Per DNS standards, email addresses are given in user.host format (for example: hostmaster.example.com as opposed to hostmaster@example.com), be sure to check this value and modify if necessary before using it with a functions such as mail().
P°φklad 1. Using dns_get_record()
Produces output similar to the following:
|
Since it's very common to want the IP address of a mail server once the MX record has been resolved, dns_get_record() also returns an array in addtl which contains associate records. authns is returned as well containing a list of authoritative name servers.
P°φklad 2. Using dns_get_record() and DNS_ANY
Produces output similar to the following:
|
See also dns_get_mx(), and dns_check_record()
Iniciuje proudovΘ spojenφ v internetovΘ (AF_INET, za pou╛itφ TCP nebo UDP) nebo unixovΘ (AF_UNIX) domΘn∞. Pro internetovou domΘnu otev°e TCP kanßl na stroj hostname na port port. hostname v takovΘm p°φpad∞ m∙╛e b²t pln∞ urΦenΘ domΘnovΘ jmΘno nebo IP adresa. Pro spojenφ UDP musφte explicitn∞ specifikovat protokol p°ed°azenφm 'udp://' p°ed hostname. V unixovΘ domΘn∞ se hostname pou╛ije jako cesta k socketu port se pak musφ nastavit na 0. Nepovinn² parametr timeout se m∙╛e pou╛φt k nastavenφ time-outu pro systΘmovΘ volßnφ connect.
Od PHP 4.3.0, pokud jste PHP zkompilovali s podporou OpenSSL, m∙╛ete p°ed hostname p°ed°adit 'ssl://' nebo 'tls://' pro pou╛itφ SSL nebo TSL spojenφ na vzdßlen² stroj p°es TCP/IP.
fsockopen() vracφ deskriptor souboru, kter² lze pou╛φt s jin²mi souborov²mi funkcemi (nap°. fgets(), fgetss(), fputs(), fclose() a feof()).
Pokud volßnφ sel╛e, vracφ funkce FALSE, a pokud jsou p°φtomny nepovinnΘ parametry errno a errstr, budou nastaveny na aktußlnφ chybovou ·rove≥ v systΘmovΘm volßnφ connect(). Je-li vrßcenß hodnota v errno rovna 0 a funkce vrßtila FALSE, znamenß to, ╛e chyba nastala p°ed volßnφm connect(). NejΦast∞ji je to kv∙li problΘmu p°i inicializaci socketu. Uv∞domte si, ╛e argumenty errno a errstr se v╛dy p°edßvajφ odkazem.
V zßvislosti na prost°edφ nemusφ b²t k dispozici unixovß domΘna nebo voliteln² parametr timeout.
Socket se implicitn∞ otev°e v blokujφcφm re╛imu. Do neblokujφcφho re╛imu ho m∙╛ete p°epnout pou╛itφm socket_set_blocking().
Poznßmka: Parametr timeout by zaveden v PHP 3.0.9 a podpora UDP v PHP 4.
Vracφ internetovΘ domΘnovΘ jmΘno poΦφtaΦe specifikovanΘ pomocφ ip_address. Vyskytne-li se chyba, vracφ ip_address.
Viz takΘ gethostbyname().
Vracφ IP adresu poΦφtaΦe v sφti Internet specifikovanΘho pomocφ hostname.
Viz takΘ gethostbyaddr().
(PHP 3, PHP 4 )
gethostbynamel -- VracΘ seznam IP adres odpovφdajφcφch danΘmu internetovΘmu jmΘnu poΦφtaΦeVracφ seznam IP adres, kterΘ odpovφdajφ poΦφtaΦi v sφti Internet specifikovanΘmu pomocφ hostname.
Viz takΘ gethostbyname(), gethostbyaddr(), checkdnsrr(), getmxrr() a manußlovou strßnku named(8).
Prohledß DNS na MX zßznamy odpovφdajφcφ hodnot∞ hostname. Vracφ TRUE, pokud najde n∞jakΘ zßznamy; FALSE, nenajde-li nic nebo dojde k chyb∞.
Seznam MX zßznam∙ je vrßcen v poli mxhosts. Je-li specifikovßno takΘ pole weight, bude napln∞no zφskan²mi informacemi o vahßch jednotliv²ch Mail Exchanger∙.
Viz takΘ checkdnsrr(), gethostbyname(), gethostbynamel(), gethostbyaddr() a manußlovou strßnku named(8).
getprotobyname() vracφ Φφslo protokolu podle jeho nßzvu (parametr name), jak je specifikovßno v /etc/protocols.
Viz takΘ: getprotobynumber().
getprotobynumber() vracφ nßzev protokolu podle jeho Φφsla (parametr number), jak je specifikovßno v /etc/protocols.
Viz takΘ: getprotobyname().
getservbyname() vracφ internetov² port, odpovφdajφcφ slu╛b∞ service pro specifikovan² protokol (protocol). Vychßzφ se ze souboru /etc/services, protocol je bu∩ "tcp", nebo "udp" (mal²mi pφsmeny).
Viz takΘ: getservbyport().
getservbyport() vracφ internetovou slu╛bu podle parametr∙ port a protocol, jak je specifikovßna v /etc/services. protocol je "tcp" nebo "udp" (mal²mi pφsmeny).
Viz takΘ: getservbyname().
(PHP 4 )
ip2long -- P°evede °et∞zec obsahujφcφ internetovou (IPv4) adresu v teΦkovΘ notaci na odpovφdajφcφ adresu.Funkce ip2long() generuje sφ╗ovou IPv4 adresu ze standardnφho internetovΘho formßtu (Φφsla odd∞lenß teΦkami).
Poznßmka: Proto╛e celΘ Φφslo (integer) v PHP obsahuje znamΘnko a mnoho IP adres vyjde jako zßpornΘ, musφte k zφskßnφ sprßvnΘ (nezßpornΘ) hodnoty pou╛φt funkce sprintf() nebo printf() v╛dy s formßtovaΦem %u.
Viz takΘ: long2ip()
Funkce long2ip() generuje internetovou adresu v teΦkovΘm formßtu (nap°. aaa.bbb.ccc.ddd) z ΦφselnΘ reprezentace adresy.
Viz takΘ: ip2long()
openlog() otev°e pro program spojenφ do systΘmovΘho protokolu. Do ka╛dΘ zprßvy se p°idß °et∞zec ident. Hodnoty pro option a facility jsou uvedeny nφ╛e. Parametr option se pou╛φvß k urΦenφ, kterΘ volby budou p°i generovßnφ zprßvy pou╛ity. Argument facility specifikuje, jak² typ programu zaznamenßvß zprßvu. To umo╛≥uje specifikovat (v konfiguraci systΘmovΘho protokolu na va╣em poΦφtaΦi), jak budou zprßvy p°ichßzejφcφ z r∙zn²ch zdroj∙ obsluhovßny. Pou╛itφ openlog() nenφ povinnΘ. Volß se automaticky ze syslog() v p°φpad∞ pot°eby; v takovΘm p°φpad∞ bude ident implicitn∞ FALSE.
Tabulka 1. openlog() Volby
Konstanta | Popis |
---|---|
LOG_CONS | p°i chyb∞ b∞hem posφlßnφ dat do protokolu zapisuj p°φmo na systΘmovou konzoli |
LOG_NDELAY | ihned otev°i spojenφ do protokolu |
LOG_ODELAY | (implicitnφ) otev°i spojenφ a╛ v okam╛iku zßpisu prvnφ zprßvy |
LOG_PERROR | tiskni zprßvy takΘ na standardnφ chybov² v²stup (stderr) |
LOG_PID | do ka╛dΘ zprßvy p°idej PID |
Tabulka 2. openlog() Charaktery
Konstanta | Popis |
---|---|
LOG_AUTH | bezpeΦnostnφ/autorizaΦnφ zprßvy (pou╛ijte rad∞ji LOG_AUTHPRIV na systΘmech, kde je tato konstanta definovßna) |
LOG_AUTHPRIV | bezpeΦnostnφ/autorizaΦnφ zprßvy (soukromΘ) |
LOG_CRON | Φasov² dΘmon (cron a at) |
LOG_DAEMON | ostatnφ dΘmoni systΘmu |
LOG_KERN | zprßvy jßdra |
LOG_LOCAL0 ... LOG_LOCAL7 | vyhrazeno pro mφstnφ pou╛itφ |
LOG_LPR | subsystΘm tiskßrny |
LOG_MAIL | po╣tovnφ subsystΘm |
LOG_NEWS | subsystΘm USENET news |
LOG_SYSLOG | zprßvy generovanΘ vnit°n∞ dΘmonem syslogd |
LOG_USER | generickΘ u╛ivatelskΘ zprßvy |
LOG_UUCP | subsystΘm UUCP |
Viz takΘ define_syslog_variables(), syslog() a closelog().
(PHP 3>= 3.0.7, PHP 4 )
pfsockopen -- Otev°e perzistentnφ (p°etrvßvajφcφ) socketovΘ spojenφ v internetovΘ nebo unixovΘ domΘn∞Tato funkce se chovß naprosto stejn∞ jako fsockopen(), s tφm rozdφlem, ╛e spojenφ se po skonΦenφ skriptu neuzav°e. Je to perzistentnφ verze fsockopen().
Vracφ informace o existujφcφm socketovΘm streamu. Tato funkce pracuje pouze na socketu vytvo°enΘm pomocφ fsockopen(), pfsockopen() a sφ╗ov²ch socketech vrßcen²ch funkcφ fopen() s URL jako parametrem. NEFUNGUJE se sockety ze SocketovΘho roz╣φ°enφ. Ve v²sledkovΘm poli v souΦasnΘ dob∞ vracφ Φty°i polo╛ky:
timed_out (bool) - Vypr╣el Φasov² limit pro Φekßnφ na data
blocked (bool) - Socket byl zablokovßn
eof (bool) - Indikuje konec souboru (EOF)
unread_bytes (int) - PoΦet byt∙ zb²vajφcφch v bufferu socketu
Viz takΘ: SocketovΘ roz╣φ°enφ.
Pokud mß mode hodnotu FALSE, p°φslu╣n² deskriptor socketu se p°epne do neblokujφcφho re╛imu; je-li TRUE, p°epne se do blokujφcφho re╛imu. To mß vliv na volßnφ jako je fgets(), kterß Φtou ze socketu. V neblokujφcφm re╛imu volßnφ funkce fgets() v╛dy p°edßvß °φzenφ zp∞t, zatφmco v blokujφcφm re╛imu bude Φekat na to, a╛ budou na socketu dostupnß data.
Tato funkce se d°φve jmenovala set_socket_blocking(), ale tento nßzev je nynφ zavr╛en².
Nastavuje velikost ΦasovΘho limitu socketu danΘho hodnotou socket descriptor, ve form∞ souΦtu sekund (seconds) a mikrosekund (microseconds).
Tato funkce se d°φve jmenovala set_socket_timeout(), ale tento nßzev je nynφ zavr╛en².
Viz takΘ: fsockopen() a fopen().
syslog() vygeneruje zprßvu do protokolu, kterß se distribuuje prost°ednictvφm dΘmona systΘmovΘho protokolu. priority p°edstavuje kombinaci charakteru a ·rovn∞ zprßvy; hodnoty popisuje nßsledujφcφ sekce. Zb²vajφcφ argument je zprßva, kterß se mß odeslat. Dva znaky ve zprßv∞ (%m) se v╣ak nahradφ °et∞zcem chybovΘ zprßvy (strerror) odpovφdajφcφ aktußlnφ hodnot∞ errno.
Tabulka 1. syslog() Priority (v klesajφcφm po°ßdku)
Konstanta | Popis |
---|---|
LOG_EMERG | systΘm je nepou╛iteln² |
LOG_ALERT | je nutn² okam╛it² zßsah |
LOG_CRIT | kritickß situace |
LOG_ERR | chyba |
LOG_WARNING | varovßnφ |
LOG_NOTICE | normßlnφ, av╣ak v²znamnß, zprßva |
LOG_INFO | informativnφ zprßva |
LOG_DEBUG | ladicφ zprßva |
P°φklad 1. Pou╛itφ syslog()
|
Na Windows NT je slu╛ba syslog emulovßna pomocφ slu╛by Event Log.
Viz takΘ define_syslog_variables(), openlog() a closelog().
ncurses (new curses) is a free software emulation of curses in System V Rel 4.0 (and above). It uses terminfo format, supports pads, colors, multiple highlights, form characters and function key mapping. Because of the interactive nature of this library, it will be of little use for writing Web applications, but may be useful when writing scripts meant using PHP from the command line.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
Ncurses is available for the following platforms:
AIX
BeOS
Cygwin
Digital Unix (aka OSF1)
FreeBSD
GNU/Linux
HPUX
IRIX
OS/2
SCO OpenServer
Solaris
SunOS
You need the ncurses libraries and headerfiles. Download the latest version from the ftp://ftp.gnu.org/pub/gnu/ncurses/ or from an other GNU-Mirror.
To get these functions to work, you have to compile the CGI or CLI version of PHP with --with-ncurses[=DIR].
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Ncurses configuration options
Name | Default | Changeable |
---|---|---|
ncurses.value | "42" | PHP_INI_ALL |
ncurses.string | "foobar" | PHP_INI_ALL |
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Tabulka 2. ncurses color constants
constant | meaning |
---|---|
NCURSES_COLOR_BLACK | no color (black) |
NCURSES_COLOR_WHITE | white |
NCURSES_COLOR_RED | red - supported when terminal is in color mode |
NCURSES_COLOR_GREEN | green - supported when terminal is in color mod |
NCURSES_COLOR_YELLOW | yellow - supported when terminal is in color mod |
NCURSES_COLOR_BLUE | blue - supported when terminal is in color mod |
NCURSES_COLOR_CYAN | cyan - supported when terminal is in color mod |
NCURSES_COLOR_MAGENTA | magenta - supported when terminal is in color mod |
Tabulka 3. ncurses key constants
constant | meaning |
---|---|
NCURSES_KEY_F0 - NCURSES_KEY_F64 | function keys F1 - F64 |
NCURSES_KEY_DOWN | down arrow |
NCURSES_KEY_UP | up arrow |
NCURSES_KEY_LEFT | left arrow |
NCURSES_KEY_RIGHT | right arrow |
NCURSES_KEY_HOME | home key (upward+left arrow) |
NCURSES_KEY_BACKSPACE | backspace |
NCURSES_KEY_DL | delete line |
NCURSES_KEY_IL | insert line |
NCURSES_KEY_DC | delete character |
NCURSES_KEY_IC | insert char or enter insert mode |
NCURSES_KEY_EIC | exit insert char mode |
NCURSES_KEY_CLEAR | clear screen |
NCURSES_KEY_EOS | clear to end of screen |
NCURSES_KEY_EOL | clear to end of line |
NCURSES_KEY_SF | scroll one line forward |
NCURSES_KEY_SR | scroll one line backward |
NCURSES_KEY_NPAGE | next page |
NCURSES_KEY_PPAGE | previous page |
NCURSES_KEY_STAB | set tab |
NCURSES_KEY_CTAB | clear tab |
NCURSES_KEY_CATAB | clear all tabs |
NCURSES_KEY_SRESET | soft (partial) reset |
NCURSES_KEY_RESET | reset or hard reset |
NCURSES_KEY_PRINT | |
NCURSES_KEY_LL | lower left |
NCURSES_KEY_A1 | upper left of keypad |
NCURSES_KEY_A3 | upper right of keypad |
NCURSES_KEY_B2 | center of keypad |
NCURSES_KEY_C1 | lower left of keypad |
NCURSES_KEY_C3 | lower right of keypad |
NCURSES_KEY_BTAB | back tab |
NCURSES_KEY_BEG | beginning |
NCURSES_KEY_CANCEL | cancel |
NCURSES_KEY_CLOSE | close |
NCURSES_KEY_COMMAND | cmd (command) |
NCURSES_KEY_COPY | copy |
NCURSES_KEY_CREATE | create |
NCURSES_KEY_END | end |
NCURSES_KEY_EXIT | exit |
NCURSES_KEY_FIND | find |
NCURSES_KEY_HELP | help |
NCURSES_KEY_MARK | mark |
NCURSES_KEY_MESSAGE | message |
NCURSES_KEY_MOVE | move |
NCURSES_KEY_NEXT | next |
NCURSES_KEY_OPEN | open |
NCURSES_KEY_OPTIONS | options |
NCURSES_KEY_PREVIOUS | previous |
NCURSES_KEY_REDO | redo |
NCURSES_KEY_REFERENCE | ref (reference) |
NCURSES_KEY_REFRESH | refresh |
NCURSES_KEY_REPLACE | replace |
NCURSES_KEY_RESTART | restart |
NCURSES_KEY_RESUME | resume |
NCURSES_KEY_SAVE | save |
NCURSES_KEY_SBEG | shiftet beg (beginning) |
NCURSES_KEY_SCANCEL | shifted cancel |
NCURSES_KEY_SCOMMAND | shifted command |
NCURSES_KEY_SCOPY | shifted copy |
NCURSES_KEY_SCREATE | shifted create |
NCURSES_KEY_SDC | shifted delete char |
NCURSES_KEY_SDL | shifted delete line |
NCURSES_KEY_SELECT | select |
NCURSES_KEY_SEND | shifted end |
NCURSES_KEY_SEOL | shifted end of line |
NCURSES_KEY_SEXIT | shifted exit |
NCURSES_KEY_SFIND | shifted find |
NCURSES_KEY_SHELP | shifted help |
NCURSES_KEY_SHOME | shifted home |
NCURSES_KEY_SIC | shifted input |
NCURSES_KEY_SLEFT | shifted left arrow |
NCURSES_KEY_SMESSAGE | shifted message |
NCURSES_KEY_SMOVE | shifted move |
NCURSES_KEY_SNEXT | shifted next |
NCURSES_KEY_SOPTIONS | shifted options |
NCURSES_KEY_SPREVIOUS | shifted previous |
NCURSES_KEY_SPRINT | shifted print |
NCURSES_KEY_SREDO | shifted redo |
NCURSES_KEY_SREPLACE | shifted replace |
NCURSES_KEY_SRIGHT | shifted right arrow |
NCURSES_KEY_SRSUME | shifted resume |
NCURSES_KEY_SSAVE | shifted save |
NCURSES_KEY_SSUSPEND | shifted suspend |
NCURSES_KEY_UNDO | undo |
NCURSES_KEY_MOUSE | mouse event has occurred |
NCURSES_KEY_MAX | maximum key value |
Tabulka 4. mouse constants
Constant | meaning |
---|---|
NCURSES_BUTTON1_RELEASED - NCURSES_BUTTON4_RELEASED | button (1-4) released |
NCURSES_BUTTON1_PRESSED - NCURSES_BUTTON4_PRESSED | button (1-4) pressed |
NCURSES_BUTTON1_CLICKED - NCURSES_BUTTON4_CLICKED | button (1-4) clicked |
NCURSES_BUTTON1_DOUBLE_CLICKED - NCURSES_BUTTON4_DOUBLE_CLICKED | button (1-4) double clicked |
NCURSES_BUTTON1_TRIPLE_CLICKED - NCURSES_BUTTON4_TRIPLE_CLICKED | button (1-4) triple clicked |
NCURSES_BUTTON_CTRL | ctrl pressed during click |
NCURSES_BUTTON_SHIFT | shift pressed during click |
NCURSES_BUTTON_ALT | alt pressed during click |
NCURSES_ALL_MOUSE_EVENTS | report all mouse events |
NCURSES_REPORT_MOUSE_POSITION | report mouse position |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
ncurses_addchnstr -- Add attributed string with specified length at current positionVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_beep() sends an audible alert (bell) and if its not possible flashes the screen. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ncurses_flash()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function ncurses_can_change_color() returns TRUE or FALSE, depending on whether the terminal has color capabilities and whether the programmer can change the colors.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_cbreak() disables line buffering and character processing (interrupt and flow control characters are unaffected), making characters typed by the user immediately available to the program.
ncurses_cbreak() returns TRUE or NCURSES_ERR if any error occurred.
See also: ncurses_nocbreak()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_clear() clears the screen completely without setting blanks. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Note: ncurses_clear() clears the screen without setting blanks, which have the current background rendition. To clear screen with blanks, use ncurses_erase().
See also ncurses_erase().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_clrtobot() erases all lines from cursor to end of screen and creates blanks. Blanks created by ncurses_clrtobot() have the current background rendition. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ncurses_clear(), and ncurses_clrtoeol()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_clrtoeol() erases the current line from cursor position to the end. Blanks created by ncurses_clrtoeol() have the current background rendition. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ncurses_clear(), and ncurses_clrtobot()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_def_prog_mode() saves the current terminal modes for program (in curses) for use by ncurses_reset_prog_mode(). Returns FALSE on success, otherwise TRUE.
See also: ncurses_reset_prog_mode()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_def_shell_mode() saves the current terminal modes for shell (not in curses) for use by ncurses_reset_shell_mode(). Returns FALSE on success, otherwise TRUE.
See also: ncurses_reset_shell_mode()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
ncurses_del_panel -- Remove panel from the stack and delete it (but not the associated window)
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_delch() deletes the character under the cursor. All characters to the right of the cursor on the same line are moved to the left one position and the last character on the line is filled with a blank. The cursor position does not change. Returns FALSE on success, otherwise TRUE.
See also: ncurses_deleteln()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_deleteln() deletes the current line under cursorposition. All lines below the current line are moved up one line. The bottom line of window is cleared. Cursor position does not change. Returns FALSE on success, otherwise TRUE.
See also: ncurses_delch()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_doupdate()() compares the virtual screen to the physical screen and updates the physical screen. This way is more effective than using multiple refresh calls. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_echo() enables echo mode. All characters typed by user are echoed by ncurses_getch(). Returns FALSE on success, TRUE if any error occurred.
To disable echo mode use ncurses_noecho().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_erase() fills the terminal screen with blanks. Created blanks have the current background rendition, set by ncurses_bkgd(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ncurses_bkgd(), and ncurses_clear()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_erasechar() returns the current erase char character.
See also: ncurses_killchar()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_flash() flashes the screen, and if its not possible, sends an audible alert (bell). Returns FALSE on success, otherwise TRUE.
See also: ncurses_beep()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The ncurses_flushinp() throws away any typeahead that has been typed and has not yet been read by your program. Returns FALSE on success, otherwise TRUE.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_getmouse() reads mouse event out of queue. Function ncurses_getmouse() will return ;FALSE if a mouse event is actually visible in the given window, otherwise it will return TRUE. Event options will be delivered in parameter mevent, which has to be an array, passed by reference (see example below). On success an associative array with following keys will be delivered:
"id" : Id to distinguish multiple devices
"x" : screen relative x-position in character cells
"y" : screen relative y-position in character cells
"z" : currently not supported
"mmask" : Mouse action
See also ncurses_ungetmouse()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_has_colors() returns TRUE or FALSE depending on whether the terminal has color capacities.
See also: ncurses_can_change_color()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_has_ic() checks terminals insert- and delete capabilities. It returns TRUE when terminal has insert/delete-capabilities, otherwise FALSE.
See also: ncurses_has_il()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_has_il() checks terminals insert- and delete-line-capabilities. It returns TRUE when terminal has insert/delete-line capabilities, otherwise FALSE
See also: ncurses_has_ic()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
ncurses_hline -- Draw a horizontal line at current position using an attributed character and max. n characters longVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_inch() returns the character from the current position.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
ncurses_insch -- Insert character moving rest of line including character at current positionVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
ncurses_insdelln -- Insert lines before current line scrolling down (negative numbers delete and scroll up)Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_insertln() inserts a new line above the current line. The bottom line will be lost.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_instr() returns the number of characters read from the current character position until end of line. buffer contains the characters. Attributes are stripped from the characters.
(PHP 4 >= 4.1.0)
ncurses_isendwin -- Ncurses is in endwin mode, normal screen output may be performedVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_isendwin() returns TRUE, if ncurses_endwin() has been called without any subsequent calls to ncurses_wrefresh(), otherwise FALSE.
See also ncurses_endwin() and ncurses_wrefresh().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_killchar() returns the current line kill character.
See also: ncurses_erasechar()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_longname() returns a verbose description of the terminal. The description is truncated to 128 characters. On Error ncurses_longname() returns NULL.
See also: ncurses_termname()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Function ncurses_mousemask() will set mouse events to be reported. By default no mouse events will be reported. The function ncurses_mousemask() will return a mask to indicated which of the in parameter newmask specified mouse events can be reported. On complete failure, it returns 0. In parameter oldmask, which is passed by reference ncurses_mousemask() returns the previous value of mouse event mask. Mouse events are represented by NCURSES_KEY_MOUSE in the ncurses_wgetch() input stream. To read the event data and pop the event of of queue, call ncurses_getmouse().
As a side effect, setting a zero mousemask in newmask turns off the mouse pointer. Setting a non zero value turns mouse pointer on.
mouse mask options can be set with the following predefined constants:
NCURSES_BUTTON1_PRESSED
NCURSES_BUTTON1_RELEASED
NCURSES_BUTTON1_CLICKED
NCURSES_BUTTON1_DOUBLE_CLICKED
NCURSES_BUTTON1_TRIPLE_CLICKED
NCURSES_BUTTON2_PRESSED
NCURSES_BUTTON2_RELEASED
NCURSES_BUTTON2_CLICKED
NCURSES_BUTTON2_DOUBLE_CLICKED
NCURSES_BUTTON2_TRIPLE_CLICKED
NCURSES_BUTTON3_PRESSED
NCURSES_BUTTON3_RELEASED
NCURSES_BUTTON3_CLICKED
NCURSES_BUTTON3_DOUBLE_CLICKED
NCURSES_BUTTON3_TRIPLE_CLICKED
NCURSES_BUTTON4_PRESSED
NCURSES_BUTTON4_RELEASED
NCURSES_BUTTON4_CLICKED
NCURSES_BUTTON4_DOUBLE_CLICKED
NCURSES_BUTTON4_TRIPLE_CLICKED
NCURSES_BUTTON_SHIFT>
NCURSES_BUTTON_CTRL
NCURSES_BUTTON_ALT
NCURSES_ALL_MOUSE_EVENTS
NCURSES_REPORT_MOUSE_POSITION
See also ncurses_getmouse(), ncurses_ungetmouse() and ncurese_getch().
(PHP 4 >= 4.3.0)
ncurses_move_panel -- Moves a panel so that it's upper-left corner is at [startx, starty]
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
ncurses_mvaddchnstr -- Move position and add attributed string with specified lengthVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
ncurses_mvhline -- Set new position and draw a horizontal line using an attributed character and max. n characters longVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
ncurses_mvvline -- Set new position and draw a vertical line using an attributed character and max. n characters longVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_nocbreak() routine returns terminal to normal (cooked) mode. Initially the terminal may or may not in cbreak mode as the mode is inherited. Therefore a program should call ncurses_cbreak() and ncurses_nocbreak() explicitly. Returns TRUE if any error occurred, otherwise FALSE.
See also: ncurses_cbreak()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_noecho() prevents echoing of user typed characters. Returns TRUE if any error occurred, otherwise FALSE.
See also: ncurses_echo(), ncurses_getch()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_noraw() switches the terminal out of raw mode. Raw mode is similar to cbreak mode, in that characters typed are immediately passed through to the user program. The differences that are that in raw mode, the interrupt, quit, suspend and flow control characters are all passed through uninterpreted, instead of generating a signal. Returns TRUE if any error occurred, otherwise FALSE.
See also: ncurses_raw(), ncurses_cbreak(), ncurses_nocbreak()
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
ncurses_panel_above -- Returns the panel above panel. If panel is null, returns the bottom panel in the stack
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
ncurses_panel_below -- Returns the panel below panel. If panel is null, returns the top panel in the stack
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_raw() places the terminal in raw mode. Raw mode is similar to cbreak mode, in that characters typed are immediately passed through to the user program. The differences that are that in raw mode, the interrupt, quit, suspend and flow control characters are all passed through uninterpreted, instead of generating a signal. Returns TRUE if any error occurred, otherwise FALSE.
See also: ncurses_noraw(), ncurses_cbreak(), ncurses_nocbreak()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Function ncurses_resetty() restores the terminal state, which was previously saved by calling ncurses_savetty(). This function always returns FALSE.
See also: ncurses_savetty()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Function ncurses_savetty() saves the current terminal state. The saved terminal state can be restored with function ncurses_resetty(). ncurses_savetty() always returns FALSE.
See also: ncurses_resetty()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
ncurses_show_panel -- Places an invisible panel on top of the stack, making it visible
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_slk_attr() returns the current soft label key attribute. On error returns TRUE, otherwise FALSE.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function ncurses_slk_clear() clears soft label keys from screen. Returns TRUE on error, otherwise FALSE.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Function ncurses_slk_init() must be called before ncurses_initscr() or ncurses_newterm() is called. If ncurses_initscr() eventually uses a line from stdscr to emulate the soft labels, then format determines how the labels are arranged of the screen. Setting format to 0 indicates a 3-2-3 arrangement of the labels, 1 indicates a 4-4 arrangement and 2 indicates the PC like 4-4-4 mode, but in addition an index line will be created.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_slk_refresh() copies soft label keys from virtual screen to physical screen. Returns TRUE on error, otherwise FALSE.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function ncurses_slk_restore() restores the soft label keys after ncurses_slk_clear() has been performed.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The ncurses_slk_touch() function forces all the soft labels to be output the next time a ncurses_slk_noutrefresh() is performed.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
ncurses_termattrs -- Returns a logical OR of all attribute flags supported by terminalVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_termname() returns terminals shortname. The shortname is truncated to 14 characters. On error ncurses_termname() returns NULL.
See also: ncurses_longname()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
ncurses_getmouse() pushes a KEY_MOUSE event onto the unput queue and associates with this event the given state sata and screen-relative character cell coordinates, specified in mevent. Event options will be specified in associative array mevent:
"id" : Id to distinguish multiple devices
"x" : screen relative x-position in character cells
"y" : screen relative y-position in character cells
"z" : currently not supported
"mmask" : Mouse action
ncurses_ungetmouse() returns FALSE on success, otherwise TRUE.
See also: ncurses_getmouse()
(PHP 4 >= 4.3.0)
ncurses_update_panels -- Refreshes the virtual screen to reflect the relations between panels in the stack.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
ncurses_use_extended_names -- Control use of extended names in terminfo descriptionsVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
ncurses_vline -- Draw a vertical line at current position using an attributed character and max. n characters longVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.3.0)
ncurses_whline -- Draws a horizontal line in a window at current position using an attributed character and max. n characters long
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.0.5)
notes_body -- Open the message msg_number in the specified mailbox on the specified server (leave servVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.0.5)
notes_find_note -- Returns a note id found in database_name. Specify the name of the note. Leaving type blaVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.0.5)
notes_header_info -- Open the message msg_number in the specified mailbox on the specified server (leave servVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
These functions are only available when running PHP as a NSAPI module in Netscape/iPlanet/SunONE webservers.
For PHP installation on Netscape/iPlanet/SunONE webservers see the NSAPI section in the installation chapter.
The behaviour of the NSAPI PHP module is affected by settings in php.ini. Configuration settings from php.ini may be overridden by additional parameters to the php4_execute call in obj.conf
NSAPI implements a subset of the functions from the Apache module for maximum compatibility.
Tabulka 2. Apache functions implemented by NSAPI
Apache function (only as alias) | NSAPI function | Description |
---|---|---|
apache_request_headers() | nsapi_request_headers() | Fetch all HTTP request headers |
apache_response_headers() | nsapi_response_headers() | Fetch all HTTP response headers |
getallheaders() | nsapi_request_headers() | Fetch all HTTP request headers |
virtual() | nsapi_virtual() | Make NSAPI sub-request |
(no version information, might be only in CVS)
nsapi_request_headers -- Fetch all HTTP request headersnsapi_request_headers() returns an associative array of all the HTTP headers in the current request. This is only supported when PHP runs as a NSAPI module.
Poznßmka: Prior to PHP 4.3.3, getallheaders() was only available for the Apache servers. After PHP 4.3.3, getallheaders() is an alias for nsapi_request_headers() if you use the NSAPI module.
Poznßmka: You can also get at the value of the common CGI variables by reading them from the $_SERVER superglobal, which works whether or not you are using PHP as a NSAPI module.
(no version information, might be only in CVS)
nsapi_response_headers -- Fetch all HTTP response headersReturns an array of all NSAPI response headers. This functionality is only available in PHP version 4.3.3 and greater.
See also nsapi_request_headers() and headers_sent().
nsapi_virtual() is an NSAPI-specific function which is equivalent to <!--#include virtual...--> in SSI (.shtml files). It does an NSAPI sub-request. It is useful for including CGI scripts or .shtml files, or anything else that you'd parse through webserver.
To run the sub-request, all buffers are terminated and flushed to the browser, pending headers are sent too.
You cannot make recursive requests with this function to other PHP scripts. If you want to include PHP scripts, use include() or require().
Poznßmka: This function depends on a undocumented feature of the Netscape/iPlanet/SunONE webservers. Use phpinfo() to determine if it is available. In the Unix environment it should always work, in windows it depends on the name of a ns-httpdXX.dll file. Read the note about subrequests in the install section if you experience this problem.
In addition to normal ODBC support, the Unified ODBC functions in PHP allow you to access several databases that have borrowed the semantics of the ODBC API to implement their own API. Instead of maintaining multiple database drivers that were all nearly identical, these drivers have been unified into a single set of ODBC functions.
The following databases are supported by the Unified ODBC functions: Adabas D, IBM DB2, iODBC, Solid, and Sybase SQL Anywhere.
Poznßmka: There is no ODBC involved when connecting to the above databases. The functions that you use to speak natively to them just happen to share the same names and syntax as the ODBC functions. The exception to this is iODBC. Building PHP with iODBC support enables you to use any ODBC-compliant drivers with your PHP applications. iODBC is maintained by OpenLink Software. More information on iODBC, as well as a HOWTO, is available at www.iodbc.org.
To access any of the supported databases you need to have the required libraries installed.
Include Adabas D support. DIR is the Adabas base install directory, defaults to /usr/local.
Include SAP DB support. DIR is SAP DB base install directory, defaults to /usr/local.
Include Solid support. DIR is the Solid base install directory, defaults to /usr/local/solid.
Include IBM DB2 support. DIR is the DB2 base install directory, defaults to /home/db2inst1/sqllib.
Include Empress support. DIR is the Empress base install directory, defaults to $EMPRESSPATH. From PHP 4, this option only supports Empress Version 8.60 and above.
Include Empress Local Access support. DIR is the Empress base install directory, defaults to $EMPRESSPATH. From PHP 4, this option only supports Empress Version 8.60 and above.
Include Birdstep support. DIR is the Birdstep base install directory, defaults to /usr/local/birdstep.
Include a user defined ODBC support. The DIR is ODBC install base directory, which defaults to /usr/local. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in your include dirs. E.g., you should define following for Sybase SQL Anywhere 5.5.00 on QNX, prior to run configure script: CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc".
Include iODBC support. DIR is the iODBC base install directory, defaults to /usr/local.
Include Easysoft OOB support. DIR is the OOB base install directory, defaults to /usr/local/easysoft/oob/client.
Include unixODBC support. DIR is the unixODBC base install directory, defaults to /usr/local.
Include OpenLink ODBC support. DIR is the OpenLink base install directory, defaults to /usr/local. This is the same as iODBC.
Include DBMaker support. DIR is the DBMaker base install directory, defaults to where the latest version of DBMaker is installed (such as /home/dbmaker/3.6).
To disable unified ODBC support in PHP 3 add --disable-unified-odbc to your configure line. Only applicable if iODBC, Adabas, Solid, Velocis or a custom ODBC interface is enabled.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Unified ODBC Configuration Options
Name | Default | Changeable |
---|---|---|
odbc.default_db * | NULL | PHP_INI_ALL |
odbc.default_user * | NULL | PHP_INI_ALL |
odbc.default_pw * | NULL | PHP_INI_ALL |
odbc.allow_persistent | "1" | PHP_INI_SYSTEM |
odbc.check_persistent | "1" | PHP_INI_SYSTEM |
odbc.max_persistent | "-1" | PHP_INI_SYSTEM |
odbc.max_links | "-1" | PHP_INI_SYSTEM |
odbc.defaultlrl | "4096" | PHP_INI_ALL |
odbc.defaultbinmode | "1" | PHP_INI_ALL |
Poznßmka: Entries marked with * are not implemented yet.
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
ODBC data source to use if none is specified in odbc_connect() or odbc_pconnect().
User name to use if none is specified in odbc_connect() or odbc_pconnect().
Password to use if none is specified in odbc_connect() or odbc_pconnect().
Whether to allow persistent ODBC connections.
Check that a connection is still valid before reuse.
The maximum number of persistent ODBC connections per process.
The maximum number of ODBC connections per process, including persistent connections.
Handling of LONG fields. Specifies the number of bytes returned to variables.
Handling of binary data.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Without the OnOff parameter, this function returns auto-commit status for connection_id. TRUE is returned if auto-commit is on, FALSE if it is off or an error occurs.
If OnOff is TRUE, auto-commit is enabled, if it is FALSE auto-commit is disabled. Returns TRUE on success, FALSE on failure.
By default, auto-commit is on for a connection. Disabling auto-commit is equivalent with starting a transaction.
See also odbc_commit() and odbc_rollback().
(ODBC SQL types affected: BINARY, VARBINARY, LONGVARBINARY)
ODBC_BINMODE_PASSTHRU: Passthru BINARY data
ODBC_BINMODE_RETURN: Return as is
ODBC_BINMODE_CONVERT: Convert to char and return
When binary SQL data is converted to character C data, each byte (8 bits) of source data is represented as two ASCII characters. These characters are the ASCII character representation of the number in its hexadecimal form. For example, a binary 00000001 is converted to "01" and a binary 11111111 is converted to "FF".
Tabulka 1. LONGVARBINARY handling
binmode | longreadlen | result |
---|---|---|
ODBC_BINMODE_PASSTHRU | 0 | passthru |
ODBC_BINMODE_RETURN | 0 | passthru |
ODBC_BINMODE_CONVERT | 0 | passthru |
ODBC_BINMODE_PASSTHRU | 0 | passthru |
ODBC_BINMODE_PASSTHRU | >0 | passthru |
ODBC_BINMODE_RETURN | >0 | return as is |
ODBC_BINMODE_CONVERT | >0 | return as char |
If odbc_fetch_into() is used, passthru means that an empty string is returned for these columns.
If result_id is 0, the settings apply as default for new results.
Poznßmka: Default for longreadlen is 4096 and binmode defaults to ODBC_BINMODE_RETURN. Handling of binary long columns is also affected by odbc_longreadlen()
odbc_close_all() will close down all connections to database server(s).
Poznßmka: This function will fail if there are open transactions on a connection. This connection will remain open in this case.
odbc_close() will close down the connection to the database server associated with the given connection identifier.
Poznßmka: This function will fail if there are open transactions on this connection. The connection will remain open in this case.
(PHP 4 )
odbc_columnprivileges -- Returns a result identifier that can be used to fetch a list of columns and associated privilegesLists columns and associated privileges for the given table. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
GRANTOR
GRANTEE
PRIVILEGE
IS_GRANTABLE
The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.
The column_name argument accepts search patterns ('%' to match zero or more characters and '_' to match a single character).
(PHP 4 )
odbc_columns -- Lists the column names in specified tables. Returns a result identifier containing the information.Lists all columns in the requested range. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_SCHEM
TABLE_NAME
COLUMN_NAME
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
RADIX
NULLABLE
REMARKS
The result set is ordered by TABLE_QUALIFIER, TABLE_SCHEM and TABLE_NAME.
The schema, table_name and column_name arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).
See also odbc_columnprivileges() to retrieve associated privileges.
odbc_commit() commits all pending transactions on the connection_id connection. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Returns an ODBC connection id or 0 (FALSE) on error.
The connection id returned by this functions is needed by other ODBC functions. You can have multiple connections open at once. The optional fourth parameter sets the type of cursor to be used for this connection. This parameter is not normally needed, but can be useful for working around problems with some ODBC drivers.
With some ODBC drivers, executing a complex stored procedure may fail with an error similar to: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it". Using SQL_CUR_USE_ODBC may avoid that error. Also, some drivers don't support the optional row_number parameter in odbc_fetch_row(). SQL_CUR_USE_ODBC might help in that case, too.
The following constants are defined for cursortype:
SQL_CUR_USE_IF_NEEDED
SQL_CUR_USE_ODBC
SQL_CUR_USE_DRIVER
SQL_CUR_DEFAULT
For persistent connections see odbc_pconnect().
odbc_cursor will return a cursorname for the given result_id.
Returns FALSE on error, and an array upon success.
This function will return information about the active connection following the information from within the DSN. The connection_id is required to be a valid ODBC connection. The fetch_type can be one of two constant types: SQL_FETCH_FIRST, SQL_FETCH_NEXT. Use SQL_FETCH_FIRST the first time this function is called, thereafter use the SQL_FETCH_NEXT.
odbc_do() will execute a query on the given connection.
Returns a six-digit ODBC state, or an empty string if there has been no errors. If connection_id is specified, the last state of that connection is returned, else the last state of any connection is returned.
See also: odbc_errormsg() and odbc_exec().
Returns a string containing the last ODBC error message, or an empty string if there has been no errors. If connection_id is specified, the last state of that connection is returned, else the last state of any connection is returned.
See also: odbc_error() and odbc_exec().
Returns FALSE on error. Returns an ODBC result identifier if the SQL command was executed successfully.
odbc_exec() will send an SQL statement to the database server specified by connection_id. This parameter must be a valid identifier returned by odbc_connect() or odbc_pconnect().
See also: odbc_prepare() and odbc_execute() for multiple execution of SQL statements.
Executes a statement prepared with odbc_prepare().Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The array parameters_array only needs to be given if you really have parameters in your statement.
Parameters in parameter_array will be substituted for placeholders in the prepared statement in order.
Any parameters in parameter_array which start and end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder.
Poznßmka: As of PHP 4.1.1, this file reading functionality has the following restrictions:
File reading is not subject to any bezpeΦn² re╛im or open-basedir restrictions. This is fixed in PHP 4.2.0.
Remote files are not supported.
If you wish to store a string which actually begins and ends with single quotes, you must escape them or add a space or other non-single-quote character to the beginning or end of the parameter, which will prevent the parameter's being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()).
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns the number of columns in the result; FALSE on error. result_array must be passed by reference, but it can be of any type since it will be converted to type array. The array will contain the column values starting at array index 0.
As of PHP 4.0.5 the result_array does not need to be passed by reference any longer.
As of PHP 4.0.6 the rownumber cannot be passed as a constant, but rather as a variable.
As of PHP 4.2.0 the result_array and rownumber have been swapped. This allows the rownumber to be a constant again. This change will also be the last one to this function.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
If odbc_fetch_row() was successful (there was a row), TRUE is returned. If there are no more rows, FALSE is returned.
odbc_fetch_row() fetches a row of the data that was returned by odbc_do() / odbc_exec(). After odbc_fetch_row() is called, the fields of that row can be accessed with odbc_result().
If row_number is not specified, odbc_fetch_row() will try to fetch the next row in the result set. Calls to odbc_fetch_row() with and without row_number can be mixed.
To step through the result more than once, you can call odbc_fetch_row() with row_number 1, and then continue doing odbc_fetch_row() without row_number to review the result. If a driver doesn't support fetching rows by number, the row_number parameter is ignored.
odbc_field_len() will return the length of the field referenced by number in the given ODBC result identifier. Field numbering starts at 1.
See also: odbc_field_scale() to get the scale of a floating point number.
odbc_field_name() will return the name of the field occupying the given column number in the given ODBC result identifier. Field numbering starts at 1. FALSE is returned on error.
odbc_field_num() will return the number of the column slot that corresponds to the named field in the given ODBC result identifier. Field numbering starts at 1. FALSE is returned on error.
odbc_field_precision() will return the precision of the field referenced by number in the given ODBC result identifier.
See also: odbc_field_scale() to get the scale of a floating point number.
odbc_field_precision() will return the scale of the field referenced by number in the given ODBC result identifier.
odbc_field_type() will return the SQL type of the field referenced by number in the given ODBC result identifier. Field numbering starts at 1.
(PHP 4 )
odbc_foreignkeys -- Returns a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified tableodbc_foreignkeys() retrieves information about foreign keys. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
PKTABLE_QUALIFIER
PKTABLE_OWNER
PKTABLE_NAME
PKCOLUMN_NAME
FKTABLE_QUALIFIER
FKTABLE_OWNER
FKTABLE_NAME
FKCOLUMN_NAME
KEY_SEQ
UPDATE_RULE
DELETE_RULE
FK_NAME
PK_NAME
If pk_table contains a table name, odbc_foreignkeys() returns a result set containing the primary key of the specified table and all of the foreign keys that refer to it.
If fk_table contains a table name, odbc_foreignkeys() returns a result set containing all of the foreign keys in the specified table and the primary keys (in other tables) to which they refer.
If both pk_table and fk_table contain table names, odbc_foreignkeys() returns the foreign keys in the table specified in fk_table that refer to the primary key of the table specified in pk_table. This should be one key at most.
Always returns TRUE.
odbc_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script is finished. But, if you are sure you are not going to need the result data anymore in a script, you may call odbc_free_result(), and the memory associated with result_id will be freed.
Poznßmka: If auto-commit is disabled (see odbc_autocommit()) and you call odbc_free_result() before committing, all pending transactions are rolled back.
(PHP 4 )
odbc_gettypeinfo -- Returns a result identifier containing information about data types supported by the data source.Retrieves information about data types supported by the data source. Returns an ODBC result identifier or FALSE on failure. The optional argument data_type can be used to restrict the information to a single data type.
The result set has the following columns:
TYPE_NAME
DATA_TYPE
PRECISION
LITERAL_PREFIX
LITERAL_SUFFIX
CREATE_PARAMS
NULLABLE
CASE_SENSITIVE
SEARCHABLE
UNSIGNED_ATTRIBUTE
MONEY
AUTO_INCREMENT
LOCAL_TYPE_NAME
MINIMUM_SCALE
MAXIMUM_SCALE
The result set is ordered by DATA_TYPE and TYPE_NAME.
(ODBC SQL types affected: LONG, LONGVARBINARY) The number of bytes returned to PHP is controlled by the parameter length. If it is set to 0, Long column data is passed through to the client.
Poznßmka: Handling of LONGVARBINARY columns is also affected by odbc_binmode().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
odbc_num_fields() will return the number of fields (columns) in an ODBC result. This function will return -1 on error. The argument is a valid result identifier returned by odbc_exec().
odbc_num_rows() will return the number of rows in an ODBC result. This function will return -1 on error. For INSERT, UPDATE and DELETE statements odbc_num_rows() returns the number of rows affected. For a SELECT clause this can be the number of rows available.
Note: Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers.
Returns an ODBC connection id or 0 (FALSE) on error. This function is much like odbc_connect(), except that the connection is not really closed when the script has finished. Future requests for a connection with the same dsn, user, password combination (via odbc_connect() and odbc_pconnect()) can reuse the persistent connection.
Poznßmka: Persistent connections have no effect if PHP is used as a CGI program.
For information about the optional cursor_type parameter see the odbc_connect() function. For more information on persistent connections, refer to the PHP FAQ.
Returns FALSE on error.
Returns an ODBC result identifier if the SQL command was prepared successfully. The result identifier can be used later to execute the statement with odbc_execute().
(PHP 4 )
odbc_primarykeys -- Returns a result identifier that can be used to fetch the column names that comprise the primary key for a tableReturns the column names that comprise the primary key for a table. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
COLUMN_NAME
KEY_SEQ
PK_NAME
Returns the list of input and output parameters, as well as the columns that make up the result set for the specified procedures. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
PROCEDURE_QUALIFIER
PROCEDURE_OWNER
PROCEDURE_NAME
COLUMN_NAME
COLUMN_TYPE
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
RADIX
NULLABLE
REMARKS
The result set is ordered by PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME and COLUMN_TYPE.
The owner, proc and column arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).
(PHP 4 )
odbc_procedures -- Get the list of procedures stored in a specific data source. Returns a result identifier containing the information.Lists all procedures in the requested range. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
PROCEDURE_QUALIFIER
PROCEDURE_OWNER
PROCEDURE_NAME
NUM_INPUT_PARAMS
NUM_OUTPUT_PARAMS
NUM_RESULT_SETS
REMARKS
PROCEDURE_TYPE
The owner and name arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).
Returns the number of rows in the result or FALSE on error.
odbc_result_all() will print all rows from a result identifier produced by odbc_exec(). The result is printed in HTML table format. With the optional string argument format, additional overall table formatting can be done.
Returns the contents of the field.
field can either be an integer containing the column number of the field you want; or it can be a string containing the name of the field. For example:
The first call to odbc_result() returns the value of the third field in the current record of the query result. The second function call to odbc_result() returns the value of the field whose field name is "val" in the current record of the query result. An error occurs if a column number parameter for a field is less than one or exceeds the number of columns (or fields) in the current record. Similarly, an error occurs if a field with a name that is not one of the fieldnames of the table(s) that is(are) being queried.
Field indices start from 1. Regarding the way binary or long column data is returned refer to odbc_binmode() and odbc_longreadlen().
Rolls back all pending statements on connection_id. Returns TRUE on success, FALSE on failure.
(PHP 3>= 3.0.6, PHP 4 )
odbc_setoption -- Adjust ODBC settings. Returns FALSE if an error occurs, otherwise TRUE.This function allows fiddling with the ODBC options for a particular connection or query result. It was written to help find work around to problems in quirky ODBC drivers. You should probably only use this function if you are an ODBC programmer and understand the effects the various options will have. You will certainly need a good ODBC reference to explain all the different options and values that can be used. Different driver versions support different options.
Because the effects may vary depending on the ODBC driver, use of this function in scripts to be made publicly available is strongly discouraged. Also, some ODBC options are not available to this function because they must be set before the connection is established or the query is prepared. However, if on a particular job it can make PHP work so your boss doesn't tell you to use a commercial product, that's all that really matters.
id is a connection id or result id on which to change the settings.For SQLSetConnectOption(), this is a connection id. For SQLSetStmtOption(), this is a result id.
Function is the ODBC function to use. The value should be 1 for SQLSetConnectOption() and 2 for SQLSetStmtOption().
Parameter option is the option to set.
Parameter param is the value for the given option.
P°φklad 1. ODBC Setoption Examples
|
(PHP 4 )
odbc_specialcolumns -- Returns either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transactionWhen the type argument is SQL_BEST_ROWID, odbc_specialcolumns() returns the column or columns that uniquely identify each row in the table.
When the type argument is SQL_ROWVER, odbc_specialcolumns() returns the optimal column or set of columns that, by retrieving values from the column or columns, allows any row in the specified table to be uniquely identified.
Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
SCOPE
COLUMN_NAME
DATA_TYPE
TYPE_NAME
PRECISION
LENGTH
SCALE
PSEUDO_COLUMN
The result set is ordered by SCOPE.
Get statistics about a table and it's indexes. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
NON_UNIQUE
INDEX_QUALIFIER
INDEX_NAME
TYPE
SEQ_IN_INDEX
COLUMN_NAME
COLLATION
CARDINALITY
PAGES
FILTER_CONDITION
The result set is ordered by NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME and SEQ_IN_INDEX.
Lists tables in the requested range and the privileges associated with each table. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
GRANTOR
GRANTEE
PRIVILEGE
IS_GRANTABLE
The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.
The owner and name arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).
(PHP 3>= 3.0.17, PHP 4 )
odbc_tables -- Get the list of table names stored in a specific data source. Returns a result identifier containing the information.Lists all tables in the requested range. Returns an ODBC result identifier or FALSE on failure.
The result set has the following columns:
TABLE_QUALIFIER
TABLE_OWNER
TABLE_NAME
TABLE_TYPE
REMARKS
The result set is ordered by TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.
The owner and name arguments accept search patterns ('%' to match zero or more characters and '_' to match a single character).
To support enumeration of qualifiers, owners, and table types, the following special semantics for the qualifier, owner, name, and table_type are available:
If qualifier is a single percent character (%) and owner and name are empty strings, then the result set contains a list of valid qualifiers for the data source. (All columns except the TABLE_QUALIFIER column contain NULLs.)
If owner is a single percent character (%) and qualifier and name are empty strings, then the result set contains a list of valid owners for the data source. (All columns except the TABLE_OWNER column contain NULLs.)
If table_type is a single percent character (%) and qualifier, owner and name are empty strings, then the result set contains a list of valid table types for the data source. (All columns except the TABLE_TYPE column contain NULLs.)
If table_type is not an empty string, it must contain a list of comma-separated values for the types of interest; each value may be enclosed in single quotes (') or unquoted. For example, "'TABLE','VIEW'" or "TABLE, VIEW". If the data source does not support a specified table type, odbc_tables() does not return any results for that type.
See also odbc_tableprivileges() to retrieve associated privileges.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
In Object Oriented Programming, it is common to see the composition of simple classes (and/or instances) into a more complex one. This is a flexible strategy for building complicated objects and object hierarchies and can function as a dynamic alternative to multiple inheritance. There are two ways to perform class (and/or object) composition depending on the relationship between the composed elements: Association and Aggregation.
An Association is a composition of independently constructed and externally visible parts. When we associate classes or objects, each one keeps a reference to the ones it is associated with. When we associate classes statically, one class will contain a reference to an instance of the other class. For example:
P°φklad 1. Class association
|
P°φklad 2. Object association
|
Aggregation, on the other hand, implies encapsulation (hidding) of the parts of the composition. We can aggregate classes by using a (static) inner class (PHP does not yet support inner classes), in this case the aggregated class definition is not accessible, except through the class that contains it. The aggregation of instances (object aggregation) involves the dynamic creation of subobjects inside an object, in the process, expanding the properties and methods of that object.
Object aggregation is a natural way of representing a whole-part relationship, (for example, molecules are aggregates of atoms), or can be used to obtain an effect equivalent to multiple inheritance, without having to permanently bind a subclass to two or more parent classes and their interfaces. In fact object aggregation can be more flexible, in which we can select what methods or properties to "inherit" in the aggregated object.
We define 3 classes, each implementing a different storage method:
P°φklad 3. storage_classes.inc
|
We then instantiate a couple of objects from the defined classes, and perform some aggregations and deaggregations, printing some object information along the way:
P°φklad 4. test_aggregation.php
|
We will now consider the output to understand some of the side-effects and limitation of object aggregation in PHP. First, the newly created $fs and $ws objects give the expected output (according to their respective class declaration). Note that for the purposes of object aggregation, private elements of a class/object begin with an underscore character ("_"), even though there is not real distinction between public and private class/object elements in PHP.
$fs object Class: filestorage property: data (array) 0 => 3.1415926535898 1 => kludge != cruft method: filestorage method: write $ws object Class: wddxstorage property: data (array) 0 => 3.1415926535898 1 => kludge != cruft property: version = 1.0 property: _id = ID::9bb2b640764d4370eb04808af8b076a5 method: wddxstorage method: store method: _genid |
We then aggregate $fs with the WDDXStorage class, and print out the object information. We can see now that even though nominally the $fs object is still of FileStorage, it now has the property $version, and the method store(), both defined in WDDXStorage. One important thing to note is that it has not aggregated the private elements defined in the class, which are present in the $ws object. Also absent is the constructor from WDDXStorage, which will not be logical to aggegate.
Let's aggregate $fs to the WDDXStorage class $fs object Class: filestorage property: data (array) 0 => 3.1415926535898 1 => kludge != cruft property: version = 1.0 method: filestorage method: write method: store |
The proccess of aggregation is cummulative, so when we aggregate $fs with the class DBStorage, generating an object that can use the storage methods of all the defined classes.
Now let us aggregate it to the DBStorage class $fs object Class: filestorage property: data (array) 0 => 3.1415926535898 1 => kludge != cruft property: version = 1.0 property: dbtype = mysql method: filestorage method: write method: store method: save |
Finally, the same way we aggregated properties and methods dynamically, we can also deaggregate them from the object. So, if we deaggregate the class WDDXStorage from $fs, we will obtain:
And deaggregate the WDDXStorage methods and properties $fs object Class: filestorage property: data (array) 0 => 3.1415926535898 1 => kludge != cruft property: dbtype = mysql method: filestorage method: write method: save |
One point that we have not mentioned above, is that the process of aggregation will not override existing properties or methods in the objects. For example, the class FileStorage defines a $data property, and the class WDDXStorage also defines a similar property which will not override the one in the object acquired during instantiation from the class FileStorage.
(PHP 5 CVS only)
aggregate_info -- returns an associative array of the methods and properties from each class that has been aggregated to the object.Will return the aggregation information for a particular object as an associative array of arrays of methods and properties. The key for the main array is the name of the aggregated class.
For example the code below
P°φklad 1. Using aggregate_info()
Will produce the output
|
See also aggregate(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), deaggregate()
(PHP 4 >= 4.2.0)
aggregate_methods_by_list -- selective dynamic class methods aggregation to an objectAggregates methods from a class to an existing object using a list of method names. The optional paramater exclude is used to decide whether the list contains the names of methods to include in the aggregation (i.e. exclude is FALSE, which is the default value), or to exclude from the aggregation (exclude is TRUE).
The class constructor or methods whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.
See also aggregate(), aggregate_info(), aggregate_methods(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), deaggregate()
(PHP 4 >= 4.2.0)
aggregate_methods_by_regexp -- selective class methods aggregation to an object using a regular expressionAggregates methods from a class to an existing object using a regular expresion to match method names. The optional paramater exclude is used to decide whether the regular expression will select the names of methods to include in the aggregation (i.e. exclude is FALSE, which is the default value), or to exclude from the aggregation (exclude is TRUE).
The class constructor or methods whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.
See also aggregate(), aggregate_info(), aggregate_methods(), aggregate_methods_by_list(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), deaggregate()
Aggregates all methods defined in a class to an existing object, except for the class constructor, or methods whose names start with an underscore character (_) which are considered private to the aggregated class.
See also aggregate(), aggregate_info(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), deaggregate()
(PHP 4 >= 4.2.0)
aggregate_properties_by_list -- selective dynamic class properties aggregation to an objectAggregates properties from a class to an existing object using a list of property names. The optional paramater exclude is used to decide whether the list contains the names of class properties to include in the aggregation (i.e. exclude is FALSE, which is the default value), or to exclude from the aggregation (exclude is TRUE).
The properties whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.
See also aggregate(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_regexp(), aggregate_info(), deaggregate()
(PHP 4 >= 4.2.0)
aggregate_properties_by_regexp -- selective class properties aggregation to an object using a regular expressionAggregates properties from a class to an existing object using a regular expresion to match their names. The optional paramater exclude is used to decide whether the regular expression will select the names of class properties to include in the aggregation (i.e. exclude is FALSE, which is the default value), or to exclude from the aggregation (exclude is TRUE).
The properties whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.
See also aggregate(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_info(), deaggregate()
Aggregates all properties defined in a class to an existing object, except for properties whose names start with an underscore character (_) which are considered private to the aggregated class.
See also aggregate(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), aggregate_info(), deaggregate()
Aggregates methods and properties defined in a class to an existing object. Methods and properties with names starting with an underscore character (_) are considered private to the aggregated class and are not used, constructors are also excluded from the aggregation procedure.
See also aggregate_info(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), deaggregate()
Removes the methods and properties from classes that were aggregated to an object. If the optional class_name parameters is passed, only those methods and properties defined in that class are removed, otherwise all aggregated methods and properties are eliminated.
See also aggregate(), aggregate_methods(), aggregate_methods_by_list(), aggregate_methods_by_regexp(), aggregate_properties(), aggregate_properties_by_list(), aggregate_properties_by_regexp(), aggregate_info()
These functions allow you to access Oracle8 and Oracle7 databases. It uses the Oracle8 Call-Interface (OCI8)
This extension is more flexible than the standard Oracle extension. It supports binding of global and local PHP variables to Oracle placeholders, has full LOB, FILE and ROWID support and allows you to use user-supplied define variables.
You will need the Oracle8 client libraries to use this extension. Windows users will need at least Oracle version 8.1 to use the php_oci8.dll dll.
Before using this extension, make sure that you have set up your Oracle environment variables properly for the Oracle user, as well as your web daemon user. The variables you might need to set are as follows:
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
After setting up the environment variables for your webserver user, be sure to also add the webserver user (nobody, www) to the oracle group.
If your webserver doesn't start or crashes at startup: Check that Apache is linked with the pthread library:
# ldd /www/apache/bin/httpd libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000) libm.so.6 => /lib/libm.so.6 (0x4002f000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000) libdl.so.2 => /lib/libdl.so.2 (0x4007a000) libc.so.6 => /lib/libc.so.6 (0x4007e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)If the libpthread is not listed you have to reinstall Apache:
Please note that on some systems like UnixWare it is libthread instead of libpthread. PHP and Apache have to be configured with EXTRA_LIBS=-lthread.
You have to compile PHP with the option --with-oci8[=DIR], where DIR defaults to your environment variable ORACLE_HOME.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
P°φklad 1. OCI Hints
|
You can easily access stored procedures in the same way as you would from the commands line.
P°φklad 2. Using Stored Procedures
|
ocibindbyname() binds the PHP variable variable to the Oracle placeholder ph_name. Whether it will be used for input or output will be determined run-time, and the necessary storage space will be allocated. The length parameter sets the maximum length for the bind. If you set length to -1 ocibindbyname() will use the current length of variable to set the maximum length.
If you need to bind an abstract Datatype (LOB/ROWID/BFILE) you need to allocate it first using ocinewdescriptor() function. The length is not used for abstract Datatypes and should be set to -1. The type variable tells oracle, what kind of descriptor we want to use. Possible values are: OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) and OCI_B_ROWID (ROWID).
P°φklad 1. ocibindbyname() example
|
Varovßnφ |
It is a bad idea to use magic quotes and ocibindbyname() simultaneously as no quoting is needed on quoted variables and any quotes magically applied will be written into your database as ocibindbyname() is not able to distinguish magically added quotings from those added by intention. |
If you do not want read more data from a cursor, then call ocicancel().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.0.6)
ocicollmax -- Return the max value of a collection. For a varray this is the maximum length of the array
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocicolumnisnull() returns TRUE if the returned column column in the result from the statement stmt is NULL. You can either use the column-number (1-Based) or the column-name, in uppercase, for the col parameter.
ocicolumnname() returns the name of the column corresponding to the column number (1-based) that is passed in.
P°φklad 1. ocicolumnname() example
|
See also ocinumcols(), ocicolumntype(), and ocicolumnsize().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocicolumnsize() returns the size of the column as given by Oracle. You can either use the column-number (1-Based) or the column-name for the column parameter.
P°φklad 1. ocicolumnsize() example
|
See also ocinumcols() and ocicolumnname().
ocicolumntype() returns the data type of the column corresponding to the column number (1-based) that is passed in.
P°φklad 1. ocicolumntype() example
|
See also ocinumcols(), ocicolumnname(), and ocicolumnsize().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocicommit() commits all outstanding statements for the active transaction on Oracle connection connection.
This example demonstrates how ocicommit() is used.
P°φklad 1. ocicommit() example
|
See also ocirollback().
ocidefinebyname() binds PHP variables for fetches of SQL-Columns. Be careful that Oracle uses ALL-UPPERCASE column-names, whereby in your select you can also write lowercase. ocidefinebyname() expects the column_name to be in uppercase. If you define a variable that doesn't exists in your select statement, no error will be given!
If you need to define an abstract datatype (LOB/ROWID/BFILE) you need to allocate it first using ocinewdescriptor(). See also the ocibindbyname() function.
P°φklad 1. ocidefinebyname() example
|
ocierror() returns the last error found. If the optional stmt|conn|global is not provided, the last error encountered is returned. If no error is found, ocierror() returns FALSE. ocierror() returns the error as an associative array. In this array, code consists the oracle error code and message the oracle errorstring.
As of PHP 4.3: offset and sqltext will also be included in the return array to indicate the location of the error and the original SQL text which caused it.
ociexecute() executes a previously parsed statement. (see ociparse()). The optional mode allows you to specify the execution-mode (default is OCI_COMMIT_ON_SUCCESS). If you don't want statements to be committed automatically specify OCI_DEFAULT as your mode.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ocifetch() fetches the next row (for SELECT statements) into the internal result-buffer. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ocifetchinto() fetches the next row (for SELECT statements) into the result array. ocifetchinto() will overwrite the previous content of result. By default result will contain a zero-based array of all columns that are not NULL.
The mode parameter allows you to change the default behaviour. You can specify more than one flag by simply adding them up (e.g. OCI_ASSOC+OCI_RETURN_NULLS). The known flags are:
OCI_ASSOC Return an associative array. |
OCI_NUM Return an numbered array starting with zero. (DEFAULT) |
OCI_RETURN_NULLS Return empty columns. |
OCI_RETURN_LOBS Return the value of a LOB instead of the descriptor. |
See also ocifetch() and ociexecute().
ocifetchstatement() fetches all the rows from a result into a user-defined array. ocifetchstatement() returns the number of rows fetched. skip is the number of initial rows to ignore when fetching the result (default value of 0, to start at the first line). maxrows is the number of rows to read, starting at the skipth row (Default to -1, meaning all the rows).
flags represents the available options for, which can be any combination of the following :
OCI_FETCHSTATEMENT_BY_ROW |
OCI_FETCHSTATEMENT_BY_COLUMN (default value) |
OCI_NUM |
OCI_ASSOC |
P°φklad 1. ocifetchstatement() example
|
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocifreecursor() frees all resources associated with the cursor stmt. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ocifreedesc() deletes a large object descriptor. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ocifreestatement() free all resources associated with the statement stmt. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ociinternaldebug() enables internal debug output. Set onoff to 0 to turn debug output off, 1 to turn it on.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocilogoff() closes the Oracle connection connection.
Using ocilogoff() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources.
ocilogon() returns an connection identifier needed for most other OCI calls. The optional third parameter can either contain the name of the local Oracle instance or the name of the entry in tnsnames.ora to which you want to connect. If the optional third parameter is not specified, PHP uses the environment variables ORACLE_SID (Oracle instance) or TWO_TASK (tnsnames.ora) to determine which database to connect to.
Connections are shared at the page level when using ocilogon(). This means that commits and rollbacks apply to all open transactions in the page, even if you have created multiple connections.
This example demonstrates how the connections are shared.
P°φklad 1. ocilogon() example
|
See also ociplogon() and ocinlogon().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
ocinewcursor() allocates a new statement handle on the specified connection.
P°φklad 1. Using a REF CURSOR from a stored procedure in Oracle
|
P°φklad 2. Using a REF CURSOR in a select statement in Oracle
|
ocinewdescriptor() allocates storage to hold descriptors or LOB locators. Valid values for type are OCI_D_FILE, OCI_D_LOB and OCI_D_ROWID. For LOB descriptors, the methods load, save, and savefile are associated with the descriptor, for BFILE only the load method exists. See the second example usage hints.
P°φklad 1. ocinewdescriptor() example
|
P°φklad 2. ocinewdescriptor() second example
|
ocinlogon() creates a new connection to an Oracle 8 database and logs on. The optional third parameter can either contain the name of the local Oracle instance or the name of the entry in tnsnames.ora to which you want to connect. If the optional third parameter is not specified, PHP uses the environment variables ORACLE_SID (Oracle instance) or TWO_TASK (tnsnames.ora) to determine which database to connect to.
ocinlogon() forces a new connection. This should be used if you need to isolate a set of transactions. By default, connections are shared at the page level if using ocilogon() or at the web server process level if using ociplogon(). If you have multiple connections open using ocinlogon(), all commits and rollbacks apply to the specified connection only.
This example demonstrates how the connections are separated.
P°φklad 1. ocinlogon() example
|
See also ocilogon() and ociplogon().
ocinumcols() returns the number of columns in the statement stmt.
P°φklad 1. ocinumcols() example
|
ociparse() parses the query using conn. It returns the statement identity if the query is valid, FALSE if not. The query can be any valid SQL statement or PL/SQL block.
ociplogon() creates a persistent connection to an Oracle 8 database and logs on. The optional third parameter can either contain the name of the local Oracle instance or the name of the entry in tnsnames.ora to which you want to connect. If the optional third parameter is not specified, PHP uses the environment variables ORACLE_SID (Oracle instance) or TWO_TASK (tnsnames.ora) to determine which database to connect to.
See also ocilogon() and ocinlogon().
ociresult() returns the data for column column in the current row (see ocifetch()). ociresult() will return everything as strings except for abstract types (ROWIDs, LOBs and FILEs).
You can either use the column-number (1-Based) or the column-name, in uppercase, for the col parameter.
ocirollback() rolls back all outstanding statements for Oracle connection connection. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ocicommit().
ocirowcount() returns the number of rows affected for e.g. update-statements. This function will not tell you the number of rows that a select will return!
P°φklad 1. ocirowcount() example
|
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Sets the number of top level rows to be prefetched to rows. The default value for rows is 1 row.
ocistatementtype() returns one of the following values:
SELECT
UPDATE
DELETE
INSERT
CREATE
DROP
ALTER
BEGIN
DECLARE
UNKNOWN
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Toto roz╣φ°enφ vyu╛φvß funkce OpenSSL pro tvorbu a ov∞°ovßnφ podpis∙ a peΦet∞nφ (k≤dovßnφ) a otvφrßnφ (dek≤dovßnφ) dat. OpenSSL nabφzφ mnoho vlastnostφ, kterΘ tato extenze v souΦasnosti nepodporuje. N∞kterΘ z nich mohou b²t v budoucnu p°idßny.
Abyste mohli pou╛φvat tyto funkce, musφte nainstalovat OpenSSL. PHP-4.0.4pl1 pot°ebuje OpenSSL >= 0.9.6, ale PHP-4.0.5 a vy╣╣φ budou pracovat i s OpenSSL >= 0.9.5.
Abyste v PHP mohli pou╛φvat funkce OpenSSL, musφte PHP zkompilovat s volbou --with-openssl[=DIR].
Poznßmka pro u╛ivatele Win32: Aby toto roz╣φ°enφ fungovalo ve Windows, musφte zkopφrovat soubor libeay32.dll z adresß°e DLL Win32 distribuce do adresß°e SYSTEM32. (Nap°.: C:\WINNT\SYSTEM32 nebo C:\WINDOWS\SYSTEM32)
Navφc, pokud mßte v ·myslu pou╛φvat funkce generovßnφ klφΦ∙ a podepisovßnφ certifikßt∙, musφte na vß╣ systΘm nainstalovat platn² openssl.cnf. Do PHP 4.3.0 jsme p°ipojili ukßzkov² konfiguraΦnφ soubor do adresß°e openssl Win32 distribuce. Pokud pou╛φvßte 4.2.0 nebo nov∞j╣φ a tento soubor vßm chybφ, m∙╛ete ho stßhnout z domßcφ strßnky OpenSSL nebo stßhn∞te PHP 4.3.0 a pou╛ijte konfiguraΦnφ souboru z n∞j.
Poznßmka pro u╛ivatele Win32: PHP bude hledat openssl.cnf tφmto postupem:
Prom∞nnß prost°edφ OPENSSL_CONF, pokud je nastavena, bude pou╛ita jako cesta (vΦetn∞ nßzvu souboru) konfiguraΦnφho souboru.
Prom∞nnß prost°edφ SSLEAY_CONF, pokud je nastavena, bude pou╛ita jako cesta (vΦetn∞ nßzvu souboru) konfiguraΦnφho souboru.
Bude se p°edpoklßdat, ╛e soubor openssl.cnf bude nalezen ve v²chozφ oblasti certifikßt∙, kterß byla zkonfigurovßna p°i kompilaci DLL knihovny openssl. To obvykle znamenß, ╛e v²chozφ nßzev souboru je c:\usr\local\ssl\openssl.cnf.
Ve svΘ instalaci se musφte rozhodnout, zda nainstalujete konfiguraΦnφ soubor do c:\usr\local\ssl\openssl.cnf nebo zda ho nainstalujete n∞kam jinam a pro nalezenφ konfiguraΦnφho souboru pou╛ijete prom∞nnou prost°edφ (pravd∞podpobn∞ jako per-virtual-host). Vemte na v∞domφ, ╛e v²chozφ cestu lze zm∞nit v parametru configargs funkcφ, kterΘ pot°ebujφ konfiguraΦnφ soubor.
N∞kolik openssl funkcφ pot°ebuje parametr s klφΦem nebo certifikßtem. PHP 4.0.5 a star╣φ musφ pro klφΦ a certifikßt pou╛φvat resource vrßcen² n∞kterou z funkcφ openssl_get_xxx. Pozd∞j╣φ verzi mohou pou╛φvat libovolnou z t∞chto metod:
Certifikßty
X.509 zdroj vrßcen² funkcφ openssl_x509_read()
╪et∞zec ve formßtu file://path/to/cert.pem; uveden² soubor musφ obsahovat PEM-zak≤dovan² certifikßt
╪et∞zec obsahujφcφ PEM-zak≤dovan² certifikßt
Ve°ejnΘ a soukromΘ klφΦe
Zdroj klφΦe vrßcen² funkcφ openssl_get_publickey() nebo openssl_get_privatekey()
Pouze ve°ejnΘ klφΦe: zdroj X.509
╪et∞zec ve formßtu file://path/to/file.pem - uveden² soubor musφ obsahovat PEM-zak≤dovan² certifikßt / ve°ejn² klφΦ (m∙╛e obsahovat oba)
╪et∞zec obsahujφcφ obsah certifikßtu / klφΦe, PEM-zak≤dovan²
Pro soukromΘ klφΦe lze takΘ pou╛φt syntaxi array($key, $heslo) kde $key reprezentuje klφΦ zadan² pomocφ file:// nebo textovΘho uvedenφ zmφn∞nΘho v²╣e a $heslo reprezentuje °et∞zec obsahujφcφ heslo pro tento soukrom² klφΦ
Kdy╛ volßte funkci, kterß ov∞°uje podpis / certifikßt, parametr cainfo je pole obsahujφcφ nßzvy soubor∙ a adresß°∙, kterΘ urΦujφ umφst∞nφ soubor∙ d∙v∞ryhodn²ch CA. Pokud je zadßn adresß°, musφ to b²t sprßvn∞ uspo°ßdan² adresß° s hashi tak, jak ho pou╛φvß p°φkaz openssl.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
S/MIME funkce pou╛φvajφ p°epφnaΦe, kterou jsou specifikovßny jako bitovΘ pole, kterΘ m∙╛e obsahovat jednu nebo vφce nßsledujφcφch hodnot:
Tabulka 1. PKCS7 konstanty
Konstanta | Popis |
---|---|
PKCS7_TEXT | p°idß "text/plain content type" hlaviΦky k zak≤dovan²m/podepsan²m zprßvßm. P°i dek≤dovßnφ nebo ov∞°ovßnφ odstranφ tyto hlaviΦky z v²stupu - kdy╛ nenφ rozk≤dovanß nebo ov∞°enß zprßva MIME typu text/plain, dojde k chyb∞. |
PKCS7_BINARY | za normßlnφch okolnostφ je zdrojovß zprßva p°evedenß do "kanonickΘho" formßtu, kter² pou╛φvß pro konce °ßdk∙ pou╛φvß CR a LF: tak, jak to po╛aduje S/MIME specifikace. Kdy╛ je zapnuta tato volba, nedojde k ╛ßdnΘmu p°evodu. To se hodφ v p°φpad∞ manipulace s binßrnφmi daty, kterß nemusφ b²t v MIME formßtu. |
PKCS7_NOINTERN | p°i ov∞°ovßnφ zprßvy jsou za normßlnφch okolnostφ certifikßty obsa╛enΘ ve zprßv∞ (pokud n∞jakΘ existujφ) prohledßvanΘ na v²skyt podpisovΘho certifikßtu. S touto volbou se pou╛ijφ pouze certifikßty zadanΘ v parametru extracerts funkce openssl_pkcs7_verify(). ZadanΘ certifikßty ale stßle mohou b²t pou╛ity jako ned∙v∞ryhodnΘ CA. |
PKCS7_NOVERIFY | neov∞°ovat certifikßt podepisovatele podepsanΘ zprßvy. |
PKCS7_NOCHAIN | nespojovat ov∞°enφ podepisovatelov²ch certifikßt∙: to znamenß nepou╛φvat certifikßty v podepsanΘ zprßv∞ jako ned∙v∞ryhodnΘ CA. |
PKCS7_NOCERTS | p°i podepisovßnφ zprßvy je za normßlnφch okolnostφ p°ipojen certifikßt podepisovatele - s touto volbou tomu tak nenφ. To zp∙sobφ snφ╛enφ velikosti podepsanΘ zprßvy, ale ov∞°ovatel musφ mφt kopii podepisovatelova certifikßtu k dispozici lokßln∞ (nap°φklad p°edanou v parametru extracerts funkce openssl_pkcs7_verify()). |
PKCS7_NOATTR | Pokud je zprßva podepsßna za normßlnφch okolnostφ, je p°ipojena sada atribut∙ obsahujφcφ Φas podpisu a podporovanΘ symetrickΘ algoritmy. S touto volbou nenφ p°ipojena. |
PKCS7_DETACHED | P°i podpisu zprßvy pou╛ije podpis ΦitelnΘho text spolu s MIME typem multipart/signed. To je v²chozφ nastavenφ, pokud ve funkci openssl_pkcs7_sign() nezadßte parametr flags. Pokud tuto volbu vypnete, bude zprßva podepsßna za pou╛itφ nepr∙hlednΘho podepsßnφ, kterΘ je vφce odolnΘ v∙Φi p°eklad∙m e-mailov²ch bran, ale nelze p°eΦφst klienty, kte°φ nepodporujφ S/MIME. |
PKCS7_NOSIGS | Nezkou╣et a neov∞°ovat podpisy zprßvy |
Poznßmka: Tyto konstanty byly p°idßny ve verzi 4.0.6.
openssl_csr_export_to_file() takes the Certificate Signing Request represented by csr and saves it as ascii-armoured text into the file named by outfilename.
The optional parameter notext affects the verbosity of the output; if it is FALSE then additional human-readable information is included in the output. The default value of notext is TRUE.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also openssl_csr_export(), openssl_csr_new() and openssl_csr_sign().
openssl_csr_export() takes the Certificate Signing Request represented by csr and stores it as ascii-armoured text into out, which is passed by reference.
The optional parameter notext affects the verbosity of the output; if it is FALSE then additional human-readable information is included in the output. The default value of notext is TRUE.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also openssl_csr_export_to_file(), openssl_csr_new() and openssl_csr_sign().
openssl_csr_new() generates a new CSR (Certificate Signing Request) based on the information provided by dn, which represents the Distinguished Name to be used in the certificate.
privkey should be set to a private key that was previously generated by openssl_pkey_new() (or otherwise obtained from the other openssl_pkey family of functions). The corresponding public portion of the key will be used to sign the CSR.
extraattribs is used to specify additional configuration options for the CSR. Both dn and extraattribs are associative arrays whose keys are converted to OIDs and applied to the relevant part of the request.
Poznßmka: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.
By default, the information in your system openssl.conf is used to initialize the request; you can specify a configuration file section by setting the config_section_section key of configargs. You can also specify an alternative openssl configuration file by setting the value of the config key to the path of the file you want to use. The following keys, if present in configargs behave as their equivalents in the openssl.conf, as listed in the table below.
Tabulka 1. Configuration overrides
configargs key | type | openssl.conf equivalent | description |
---|---|---|---|
digest_alg | string | default_md | Selects which digest method to use |
x509_extensions | string | x509_extensions | Selects which extensions should be used when creating an x509 certificate |
req_extensions | string | req_extensions | Selects which extensions should be used when creating a CSR |
private_key_bits | string | default_bits | Specifies how many bits should be used to generate a private key |
private_key_type | integer | none | Specifies the type of private key to create. This can be one of OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH or OPENSSL_KEYTYPE_RSA. The default value is OPENSSL_KEYTYPE_RSA which is currently the only supported key type. |
encrypt_key | boolean | encrypt_key | Should an exported key (with passphrase) be encrypted? |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. openssl_csr_new() example - creating a self-signed-certificate
|
(PHP 4 >= 4.2.0)
openssl_csr_sign -- Sign a CSR with another certificate (or itself) and generate a certificateopenssl_csr_sign() generates an x509 certificate resource from the csr previously generated by openssl_csr_new(), but it can also be the path to a PEM encoded CSR when specified as file://path/to/csr or an exported string generated by openssl_csr_export(). The generated certificate will be signed by cacert. If cacert is NULL, the generated certificate will be a self-signed certificate. priv_key is the private key that corresponds to cacert. days specifies the length of time for which the generated certificate will be valid, in days. You can finetune the CSR signing by configargs. See openssl_csr_new() for more information about configargs. Since PHP 4.3.3 you can specify the serial number of issued certificate by serial. In earlier versions, it was always 0.
Returns an x509 certificate resource on success, FALSE on failure.
Poznßmka: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.
P°φklad 1. openssl_csr_sign() example - signing a CSR (how to implement your own CA)
|
Returns an error message string, or FALSE if there are no more error messages to return.
openssl_error_string() returns the last error from the openSSL library. Error messages are stacked, so this function should be called multiple times to collect all of the information.
Poznßmka: This function was added in 4.0.6.
openssl_free_key() uvolnφ klφΦ asociovan² s p°edan²m key_identifier z pam∞ti.
Pri ·sp∞chu vracφ klφΦ, p°i chyb∞ FALSE.
openssl_get_privatekey() rozparsuje sourkom² PEM klφΦ key a p°ipravφ ho k pou╛itφ v dal╣φch funkcφch. Voliteln² argument passphrase musφ b²t p°edßn, pokud je tento klφΦ zak≤dovßn (chrßn∞n heslem).
P°i ·sp∞chu vracφ identifikßtor klφΦe, p°i chyb∞ FALSE.
openssl_get_publickey() z X.509 certifikßtu certificate vyextrahuje ve°ejn² klφΦ a p°ipravφ ho k pou╛itφ v dal╣φch funkcφch.
P°i ·sp∞chu vracφ TRUE, p°i chyb∞ FALSE. ┌sp∞╣n∞ otev°enß data se umφstφ do argumentu open_data.
openssl_open() otev°e (dek≤duje) sealed_data pomocφ soukromΘho klφΦe asociovanΘho s identifikßtorem priv_key_id a obßlkou env_key. Tato obßlka se generuje p°i peΦet∞nφ dat a je pou╛itelnß pouze s jednφm utΦit²m soukrom²m klφΦem. Vφce informacφ viz openssl_seal().
P°φklad 1. Ukßzka openssl_open()
|
Viz takΘ openssl_seal().
Decrypts the S/MIME encrypted message contained in the file specified by infilename using the certificate and it's associated private key specified by recipcert and recipkey.
The decrypted message is output to the file specified by outfilename
P°φklad 1. openssl_pkcs7_decrypt() example
|
Poznßmka: This function was added in 4.0.6.
openssl_pkcs7_encrypt() takes the contents of the file named infile and encrypts them using an RC2 40-bit cipher so that they can only be read by the intended recipients specified by recipcerts, which is either a lone X.509 certificate, or an array of X.509 certificates. headers is an array of headers that will be prepended to the data after it has been encrypted. flags can be used to specify options that affect the encoding process - see PKCS7 constants. headers can be either an associative array keyed by header name, or an indexed array, where each element contains a single header line.
P°φklad 1. openssl_pkcs7_encrypt() example
|
openssl_pkcs7_sign() takes the contents of the file named infilename and signs them using the certificate and it's matching private key specified by signcert and privkey parameters.
headers is an array of headers that will be prepended to the data after it has been signed (see openssl_pkcs7_encrypt() for more information about the format of this parameter.
flags can be used to alter the output - see PKCS7 constants - if not specified, it defaults to PKCS7_DETACHED.
extracerts specifies the name of a file containing a bunch of extra certificates to include in the signature which can for example be used to help the recipient to verify the certificate that you used.
P°φklad 1. openssl_pkcs7_sign() example
|
Poznßmka: This function was added in 4.0.6.
openssl_pkcs7_verify() reads the S/MIME message contained in the filename specified by filename and examines the digital signature. It returns TRUE if the signature is verified, FALSE if it is not correct (the message has been tampered with, or the signing certificate is invalid), or -1 on error.
flags can be used to affect how the signature is verified - see PKCS7 constants for more information.
If the outfilename is specified, it should be a string holding the name of a file into which the certificates of the persons that signed the messages will be stored in PEM format.
If the cainfo is specified, it should hold information about the trusted CA certificates to use in the verification process - see certificate verification for more information about this parameter.
If the extracerts is specified, it is the filename of a file containing a bunch of certificates to use as untrusted CAs.
Poznßmka: This function was added in 4.0.6.
(PHP 4 >= 4.2.0)
openssl_pkey_export_to_file -- Gets an exportable representation of a key into a fileopenssl_pkey_export_to_file() saves an ascii-armoured (PEM encoded) rendition of key into the file named by outfilename. The key can be optionally protected by a passphrase. configargs can be used to fine-tune the export process by specifying and/or overriding options for the openssl configuration file. See openssl_csr_new() for more information about configargs. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.
openssl_pkey_export() exports key as a PEM encoded string and stores it into out (which is passed by reference). The key is optionally protected by passphrase. configargs can be used to fine-tune the export process by specifying and/or overriding options for the openssl configuration file. See openssl_csr_new() for more information about configargs. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.
Returns a positive key resource identifier on success, or FALSE on error.
openssl_get_privatekey() parses key and prepares it for use by other functions. key can be one of the following:
a string having the format file://path/to/file.pem. The named file must contain a PEM encoded certificate/private key (it may contain both).
A PEM formatted private key.
The optional parameter passphrase must be used if the specified key is encrypted (protected by a passphrase).
(PHP 4 >= 4.2.0)
openssl_pkey_get_public -- Extract public key from certificate and prepare it for useReturns a positive key resource identifier on success, or FALSE on error.
openssl_get_publickey() extracts the public key from certificate and prepares it for use by other functions. certificate can be one of the following:
an X.509 certificate resource
a string having the format file://path/to/file.pem. The named file must contain a PEM encoded certificate/private key (it may contain both).
A PEM formatted private key.
openssl_pkey_new() generates a new private and public key pair. The public component of the key can be obtained using openssl_pkey_get_public(). You can finetune the key generation (such as specifying the number of bits) using configargs. See openssl_csr_new() for more information about configargs.
Poznßmka: You need to have a valid openssl.cnf installed for this function to operate correctly. See the notes under the installation section for more information.
openssl_private_decrypt() decrypts data that was previous encrypted via openssl_private_encrypt() and stores the result into decrypted. key must be the private key corresponding that was used to encrypt the data. padding defaults to OPENSSL_PKCS1_PADDING, but can also be one of OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING OPENSSL_NO_PADDING.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
P°i ·sp∞chu vracφ dΘlku zapeΦet∞n²ch dat, p°i chyb∞ FALSE. ┌sp∞╣n∞ zapeΦet∞nß data se umφstφ do argumentu sealed_data, a obßlka do env_keys.
openssl_seal() zapeΦetφ (zak≤duje) data pomocφ RC4 s nßhodn∞ generovan²m tajn²m klφΦem. Tento klφΦ se zak≤duje v╣emi ve°ejn²mi klφΦi asociovan²mi s identifikßtory v pub_key_ids a zak≤dovanΘ klφΦe se vrßtφ v env_keys. To znamenß, ╛e lze poslat zapeΦet∞nß data vφce p°φjemc∙m (za p°edpokladu, ╛e mßme jejφch ve°ejnΘ klφΦe). Ka╛d² z p°φjemc∙ musφ obdr╛et zapeΦet∞nß data a obßlku, kterß byla zak≤dovßna jeho ve°ejn²m klφΦem.
P°φklad 1. Ukßzka openssl_seal()
|
Viz takΘ openssl_open().
P°i ·sp∞chu vracφ TRUE, p°i chyb∞ FALSE. ┌sp∞╣n∞ vytvo°en² podpis se umφstφ v signature.
openssl_sign() vypoΦφtß podpis pro danß specified data pomocφ SHA1 hashe a nßsledn∞ jej zak≤duje soukrom²m klφΦem asociovan²m s priv_key_id. Pozn.: samotnß data nejsou k≤dovßna.
P°φklad 1. openssl_sign() example
|
Viz takΘ openssl_verify().
Vracφ 1, pokud je podpis sprßvn², 0, pokud je nesprßvn², a -1 p°i chyb∞.
openssl_verify() ov∞°uje, zda je signature sprßvn² pro data pomocφ ve°ejnΘho klφΦe asociovanΘho s pub_key_id. Musφ to b²t ve°ejn² klφΦ odpovφdajφcφ soukromΘmu klφΦi pou╛itΘmu k podpisu.
P°φklad 1. Ukßzka openssl_verify()
|
Viz takΘ openssl_sign().
(PHP 4 >= 4.2.0)
openssl_x509_check_private_key -- Checks if a private key corresponds to a certificateopenssl_x509_check_private_key() returns TRUE if key is the private key that corresponds to cert, or FALSE otherwise.
(PHP 4 >= 4.0.6)
openssl_x509_checkpurpose -- Verifies if a certificate can be used for a particular purposeReturns TRUE if the certificate can be used for the intended purpose, FALSE if it cannot, or -1 on error.
openssl_x509_checkpurpose() examines the certificate specified by x509cert to see if it can be used for the purpose specified by purpose.
cainfo should be an array of trusted CA files/dirs as described in Certificate Verification.
untrustedfile, if specified, is the name of a PEM encoded file holding certificates that can be used to help verify the certificate, although no trust in placed in the certificates that come from that file.
Tabulka 1. openssl_x509_checkpurpose() purposes
Constant | Description |
---|---|
X509_PURPOSE_SSL_CLIENT | Can the certificate be used for the client side of an SSL connection? |
X509_PURPOSE_SSL_SERVER | Can the certificate be used for the server side of an SSL connection? |
X509_PURPOSE_NS_SSL_SERVER | Can the cert be used for Netscape SSL server? |
X509_PURPOSE_SMIME_SIGN | Can the cert be used to sign S/MIME email? |
X509_PURPOSE_SMIME_ENCRYPT | Can the cert be used to encrypt S/MIME email? |
X509_PURPOSE_CRL_SIGN | Can the cert be used to sign a certificate revocation list (CRL)? |
X509_PURPOSE_ANY | Can the cert be used for Any/All purposes? |
Poznßmka: This function was added in 4.0.6.
openssl_x509_export_to_file() stores x509 into a file named by outfilename in a PEM encoded format.
The optional parameter notext affects the verbosity of the output; if it is FALSE then additional human-readable information is included in the output. The default value of notext is TRUE.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
openssl_x509_export() stores x509 into a string named by output in a PEM encoded format.
The optional parameter notext affects the verbosity of the output; if it is FALSE then additional human-readable information is included in the output. The default value of notext is TRUE.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
openssl_x509_free() frees the certificate associated with the specified x509cert resource from memory.
Poznßmka: This function was added in 4.0.6.
(PHP 4 >= 4.0.6)
openssl_x509_parse -- Parse an X509 certificate and return the information as an arrayVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
openssl_x509_parse() returns information about the supplied x509cert, including fields such as subject name, issuer name, purposes, valid from and valid to dates etc. shortnames controls how the data is indexed in the array - if shortnames is TRUE (the default) then fields will be indexed with the short name form, otherwise, the long name form will be used - e.g.: CN is the shortname form of commonName.
The structure of the returned data is (deliberately) not yet documented, as it is still subject to change.
Poznßmka: This function was added in 4.0.6.
This extension adds support for Oracle database server access. See also the OCI8 extension.
You have to compile PHP with the option --with-oracle[=DIR], where DIR defaults to your environment variable ORACLE_HOME.
This function binds the named PHP variable with a SQL parameter. The SQL parameter must be in the form ":name". With the optional type parameter, you can define whether the SQL parameter is an in/out (0, default), in (1) or out (2) parameter. As of PHP 3.0.1, you can use the constants ORA_BIND_INOUT, ORA_BIND_IN and ORA_BIND_OUT instead of the numbers.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
ora_bind() must be called after ora_parse() and before ora_exec(). Input values can be given by assignment to the bound PHP variables, after calling ora_exec() the bound PHP variables contain the output values if available.
P°φklad 1. ora_bind() example
|
This function closes a data cursor opened with ora_open().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
Returns the name of the field/column column on the cursor cursor. The returned name is in all uppercase letters. Column 0 is the first column.
Returns the size of the Oracle column column on the cursor cursor. Column 0 is the first column.
Returns the Oracle data type name of the field/column column on the cursor cursor. Column 0 is the first column. The returned type will be one of the following:
"VARCHAR2" |
"VARCHAR" |
"CHAR" |
"NUMBER" |
"LONG" |
"LONG RAW" |
"ROWID" |
"DATE" |
"CURSOR" |
This function commits an Oracle transaction. A transaction is defined as all the changes on a given connection since the last commit/rollback, autocommit was turned off or when the connection was established.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_commiton() and ora_commitoff().
This function turns off automatic commit after each ora_exec() on the given connection.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_commiton() and ora_commit().
This function turns on automatic commit after each ora_exec() on the given connection.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_commitoff() and ora_commit().
ora_do() is quick combination of ora_parse(), ora_exec() and ora_fetch(). It will parse and execute a statement, then fetch the first result row.
This function returns a cursor index or FALSE on failure. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_parse(),ora_exec(), and ora_fetch().
Returns an error message of the form XXX-NNNNN where XXX is where the error comes from and NNNNN identifies the error message.
Poznßmka: Support for connection ids was added in 3.0.4.
On Unix versions of Oracle, you can find details about an error message like this: $ oerr ora 00001 00001, 00000, "unique constraint (%s.%s) violated" // *Cause: An update or insert statement attempted to insert a duplicate key // For Trusted ORACLE configured in DBMS MAC mode, you may see // this message if a duplicate entry exists at a different level. // *Action: Either remove the unique restriction or do not insert the key
Returns the numeric error code of the last executed statement on the specified cursor or connection.
Poznßmka: Support for connection ids was added in 3.0.4.
ora_exec() execute the parsed statement cursor, already parsed by ora_parse().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_parse(), ora_fetch(), and ora_do().
Fetches a row of data into an array. The flags has two flag values: if the ORA_FETCHINTO_NULLS flag is set, columns with NULL values are set in the array; and if the ORA_FETCHINTO_ASSOC flag is set, an associative array is created.
Returns the number of columns fetched.
See also ora_parse(),ora_exec(), ora_fetch(), and ora_do().
Retrieves a row of data from the specified cursor.
Returns TRUE (a row was fetched) or FALSE (no more rows, or an error occurred). If an error occurred, details can be retrieved using the ora_error() and ora_errorcode() functions. If there was no error, ora_errorcode() will return 0.
See also ora_parse(),ora_exec(), and ora_do().
Fetches the data for a column or function result.
Returns the column data. If an error occurs, FALSE is returned and ora_errorcode() will return a non-zero value. Note, however, that a test for FALSE on the results from this function may be TRUE in cases where there is not error as well (NULL result, empty string, the number 0, the string "0").
Logs out the user and disconnects from the server.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
See also ora_logon().
Establishes a connection between PHP and an Oracle database with the given username user and password password.
Connections can be made using SQL*Net by supplying the TNS name to user like this:
If you have character data with non-ASCII characters, you should make sure that NLS_LANG is set in your environment. For server modules, you should set it in the server's environment before starting the server.
Returns a connection index on success, or FALSE on failure. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
ora_numcols() returns the number of columns in a result. Only returns meaningful values after an parse/exec/fetch sequence.
See also ora_parse(),ora_exec(), ora_fetch(), and ora_do().
Opens an Oracle cursor associated with connection.
Returns a cursor index or FALSE on failure. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
This function parses an SQL statement or a PL/SQL block and associates it with the given cursor.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also ora_exec(), ora_fetch(), and ora_do().
Establishes a persistent connection between PHP and an Oracle database with the username user and password password.
See also ora_logon().
This function undoes an Oracle transaction. (See ora_commit() for the definition of a transaction.)
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Details about the error can be retrieved using the ora_error() and ora_errorcode() functions.
Ovrimos SQL Server, is a client/server, transactional RDBMS combined with Web capabilities and fast transactions.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
You'll need to install the sqlcli library available in the Ovrimos SQL Server distribution.
To enable Ovrimos support in PHP just compile PHP with the --with-ovrimos[=DIR] parameter to your configure line. DIR is the Ovrimos' libsqlcli install directory.
P°φklad 1. Connect to Ovrimos SQL Server and select from a system table
|
ovrimos_close() is used to close the specified connection to Ovrimos. This has the effect of rolling back uncommitted transactions.
ovrimos_commit() is used to commit the transaction. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
ovrimos_connect() is used to connect to the specified database.
ovrimos_connect() returns a connection id (greater than 0) or 0 for failure. The meaning of host and db are those used everywhere in Ovrimos APIs. host is a host name or IP address and db is either a database name, or a string containing the port number.
P°φklad 1. ovrimos_connect() Example
|
ovrimos_cursor() returns the name of the cursor. Useful when wishing to perform positioned updates or deletes.
ovrimos_exec() executes an SQL statement (query or update) and returns a result_id or FALSE. Evidently, the SQL statement should not contain parameters.
ovrimos_execute() executes a prepared statement. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. If the prepared statement contained parameters (question marks in the statement), the correct number of parameters should be passed in an array. Notice that I don't follow the PHP convention of placing just the name of the optional parameter inside square brackets. I couldn't bring myself on liking it.
ovrimos_fetch_into() fetches a row from the result set into result_array, which should be passed by reference. Which row is fetched is determined by the two last parameters. how is one of Next (default), Prev, First, Last, Absolute, corresponding to forward direction from current position, backward direction from current position, forward direction from the start, backward direction from the end and absolute position from the start (essentially equivalent to 'first' but needs 'rownumber'). Case is not significant. rownumber is optional except for absolute positioning. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. A fetch into example
|
ovrimos_fetch_row() fetches a row from the result set. Column values should be retrieved with other calls. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. A fetch row example
|
ovrimos_field_len() is used to get the length of the output column with number field_number (1-based), in result result_id.
ovrimos_field_name() returns the output column name at the (1-based) index specified.
ovrimos_field_num() returns the (1-based) index of the output column specified by field_name, or FALSE.
ovrimos_field_type() returns the (numeric) type of the output column at the (1-based) index specified by field_number.
ovrimos_free_result() frees the specified result_id. Returns TRUE.
(PHP 4 >= 4.0.3)
ovrimos_longreadlen -- Specifies how many bytes are to be retrieved from long datatypesovrimos_longreadlen() specifies how many bytes are to be retrieved from long datatypes (long varchar and long varbinary). Default is zero. It currently sets this parameter the specified result set. Returns TRUE.
ovrimos_num_fields() returns the number of columns in a result_id resulting from a query.
ovrimos_num_rows() returns the number of rows affected by update operations.
ovrimos_prepare() prepares an SQL statement and returns a result_id (or FALSE on failure).
P°φklad 1. Connect to Ovrimos SQL Server and prepare a statement
|
ovrimos_result_all() prints the whole result set as an HTML table. Returns the number of rows in the generated table.
P°φklad 1. Prepare a statement, execute, and view the result
|
P°φklad 2. ovrimos_result_all() with meta-information
|
P°φklad 3. ovrimos_result_all() example
|
ovrimos_result() retrieves the output column specified by field, either as a string or as an 1-based index. Returns FALSE on failure.
Funkce pro °φzenφ v²stupu vßm umo╛≥ujφ ovlßdat, kdy se ode╣le v²stup skriptu. To m∙╛e b²t u╛iteΦnΘ v n∞kolika r∙zn²ch situacφch, zvlß╣t∞ pokud pot°ebujete poslat browseru hlaviΦky potΘ, co vß╣ skript zaΦal odesφlat data. Output Control funkce neovliv≥ujφ hlaviΦky odeslanΘ pomocφ funkcφ header() nebo setcookie(), pouze funkce jako echo() a data mezi bloky PHP k≤du.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. KonfiguraΦnφ volby °φzenφ v²stupu
Nßzev | V²chozφ hodnota | Lze zm∞nit |
---|---|---|
output_buffering | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
output_handler | NULL | PHP_INI_PERDIR|PHP_INI_SYSTEM |
implicit_flush | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
╪φzenφ v²stupu m∙╛ete povolit pro v╣echny soubory nastavenφm tΘto direktivy na 'On'. Pokud chcete omezit velikost bufferu na urΦitou hodnotu, m∙╛ete jako hodnotu tΘto direktivy mφsto 'On' pou╛φt maximßlnφ poΦet byt∙ (nap°. output_buffering=4096).
Cel² v²stup va╣ich skript∙ m∙╛ete p°esm∞rovat do funkce. Nap°φklad pokud nastavφte output_handler na mb_output_handler(), k≤dovßnφ znak∙ bude transparentn∞ p°ek≤dovßno do zadanΘho k≤dovßnφ. Nastavenφ jakΘkoliv funkce automaticky zapne °φzenφ v²stupu.
Poznßmka: Nem∙╛ete pou╛φvat najednou mb_output_handler() s ob_inconv_handler() a nem∙╛ete pou╛φvat najednou ob_gzhandler() a zlib.output_compression.
Ve v²chozφ nastavenφ je FALSE. Zm∞na na TRUE oznßmφ PHP, aby oznßmilo v²stupnφ vrstv∞, aby se automaticky vyprßzdnila po ka╛dΘm vypsanΘm bloku. Je to ekvivalentnφ volßnφ PHP funkce flush() po ka╛dΘm zavolßnφ funkce print() nebo echo() a po ka╛dΘm HTML bloku.
Kdy╛ se PHP pou╛φvß v prost°edφ webu, zapnutφ tΘto volby mß zßva╛nΘ v²konnostnφ d∙sledky a obecn∞ se doporuΦuje ho pou╛φvat pouze pro lad∞nφ. Tato hodnota mß v²chozφ nastavenφ TRUE pokud pracujete pod CLI SAPI.
Viz takΘ ob_implicit_flush().
Ve v²╣e uvedenΘ ukßzce se v²stup z echo() ulo╛φ ve v²stupnφm bufferu a╛ do volßnφ ob_end_flush(). Mezitφm volßnφ setcookie() ·sp∞╣n∞ ulo╛ilo cookie bez vyvolßnφ chyby. (Normßln∞ nem∙╛ete odeslat do browseru hlaviΦky potΘ, co u╛ byla odeslßna data.)
Poznßmka: P°i p°echodu z PHP 4.1 (a 4.2) na 4.3 musφte kv∙li chyb∞ ve star╣φch verzφch zaruΦit, aby v php.ini byla direktiva implict_flush nastavena na OFF, jinak v²stup po zavolßnφ funkce ob_start() nebude skryt z v²stupu.
Vyprßzdnφ v²stupnφ buffery PHP a jakΘhokoli backendu, kter² PHP pou╛φvß (CGI, web server, atd.) Ode╣le ve╣ker² dosavadnφ v²stup do u╛ivatelova browseru.
Poznßmka: flush() nemß ╛ßdn² ·Φinek na bufferovacφ schΘma va╣eho webserveru nebo browseru na klientskΘ stran∞.
N∞kterΘ servery, zvlß╣t∞ na Win32, bufferujφ v²stup a╛ do ukonΦenφ b∞hu skriptu bez ohledu na flush(), a a╛ potom ode╣lou v²stup browseru.
Browser m∙╛e takΘ bufferovat sv∙j vstup p°ed zobrazenφm. Nap°φklad Netscape bufferuje text do tΘ doby ne╛ p°ijme konec °ßdku nebo zaΦßtek tagu, a nezobrazφ tabulku, dokud nedostane </table> nejzevn∞j╣φ tabulky.
This function discards the contents of the output buffer.
This function does not destroy the output buffer like ob_end_clean() does.
See also ob_flush(), ob_end_flush() and ob_end_clean().
Tato funkce odhodφ obsah v²stupnφho bufferu a vypne bufferovßnφ v²stupu.
Viz takΘ ob_start() a ob_end_flush().
Tato funkce ode╣le obsah v²stupnφho bufferu (pokud n∞jak² je) a vypne bufferovßnφ v²stupu. Pokud chcete obsah v²stupnφho bufferu dßle zpracovßvat, musφte p°ed ob_end_flush() zavolat ob_get_contents(), proto╛e obsah bufferu se po ob_end_flush() odhodφ.
Viz takΘ ob_start(), ob_get_contents() a ob_end_clean().
This function will send the contents of the output buffer (if any). If you want to further process the buffer's contents you have to call ob_get_contents() before ob_flush() as the buffer contents are discarded after ob_flush() is called.
This function does not destroy the output buffer like ob_end_flush() does.
See also ob_get_contents(), ob_clean(), ob_end_flush() and ob_end_clean().
This will return the contents of the output buffer and end output buffering. If output buffering isn't active then FALSE is returned. ob_get_clean() essentially executes both ob_get_contents() and ob_end_clean().
See also ob_start() and ob_get_contents().
Tato funkce vrßtφ obsah v²stupnφho bufferu nebo FALSE, pokud bufferovßnφ v²stupu nenφ aktivovßno.
Viz takΘ ob_start() a ob_get_length().
Tato funkce vrßtφ dΘlku obsahu v²stupnφho bufferu nebo This will return the length of the contents in the output buffer, nebo FALSE, pokud bufferovßnφ v²stupu nenφ aktivovßno.
Viz takΘ ob_start() a ob_get_contents().
This will return the level of nested output buffering handlers.
See also ob_start() and ob_get_contents().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This will return the current status of output buffers. It returns array contains buffer status or FALSE for error.
See also ob_get_level().
Poznßmka: mode was added in PHP 4.0.5.
ob_gzhandler() is intended to be used as a callback function for ob_start() to help facilitate sending gz-encoded data to web browsers that support compressed web pages. Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return it's output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages.
See also ob_start() and ob_end_flush().
Poznßmka: You cannot use both ob_gzhandler() and ini.zlib.output_compression. Also note that using ini.zlib.output_compression is preferred over ob_gzhandler().
ob_implicit_flush() vypne nebo zapne implicitnφ flushovßnφ (pokud nedostane ╛ßdn² flag, default je zapnout). Implicitnφ flushovßnφ zp∙sobφ flush po ka╛dΘm vygenerovßnφ v²stupu, tak╛e u╛ nebudou pot°eba explicitnφ volßnφ flush().
Zapnutφ implicitnφho flushovßnφ zru╣φ bufferovßnφ v²stupu, a aktußlnφ obsah v²stupnφch buffer∙ se ode╣le jako p°i volßnφ ob_end_flush().
Viz takΘ flush(), ob_start() a ob_end_flush().
This will return an array with the output handlers in use (if any). If output_buffering is enabled, ob_list_handlers() will return "default output handler".
See also ob_end_clean(), ob_end_flush() and ob_start().
Tato funkce zapφnß bufferovßnφ v²stupu. Pokud je bufferovßnφ v²stupu aktivovßno, ╛ßdn² v²stup ze skriptu se neode╣le, mφsto toho se uklßdß v internφm bufferu.
Obsah tohoto internφho bufferu je mo╛no zkopφrovat do prom∞nnΘ typu string pomocφ ob_get_contents(). K odeslßnφ obsahu internφho bufferu pou╛ijte ob_end_flush(). Naprotitomu ob_end_clean() ti╣e odstranφ obsah v²stupnφho bufferu.
M∙╛ete zadat voliteln² nßzev callback funkce, kterß se automaticky zavolß s obsahem bufferu jako argumentem. Tato funkce musφ p°ijφmat °et∞zec a vracet °et∞zec. Tato funkce bude volßna p°i ob_end_flush() a dostane obsah v²stupnφho bufferu jako sv∙j argument. Musφ vrßtit nov² v²stupnφ buffer, kter² se pak vytiskne.
V²stupnφ buffery se dajφ stackovat, tzn. m∙╛ete zavolat ob_start() zatφmco je aktivnφ dal╣φ ob_start(). Je pot°eba pouze sprßvn² poΦet volßnφ ob_end_flush()(). Pokud je akivnφch vφce output callback funkcφ, v²stup je filtrovßn postupn∞ p°es ka╛dou z nich tak jak jsou do sebe vno°enΘ.
P°φklad 1. Ukßzka callback funkce
|
Viz takΘ ob_get_contents(), ob_end_flush(), ob_end_clean(), and ob_implicit_flush()
The purpose of this extension is to allow overloading of object property access and method calls. Only one function is defined in this extension, overload() which takes the name of the class that should have this functionality enabled. The class named has to define appropriate methods if it wants to have this functionality: __get(), __set() and __call() respectively for getting/setting a property, or calling a method. This way overloading can be selective. Inside these handler functions the overloading is disabled so you can access object properties normally.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
In order to use these functions, you must compile PHP with the --enable-overload option. Starting with PHP 4.3.0 this extension is enabled by default. You can disable overload support with --disable--overload.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Poznßmka: Builtin support for overload is available with PHP 4.3.0.
Some simple examples on using the overload() function:
P°φklad 1. Overloading a PHP class
|
Varovßnφ |
As this is an experimental extension, not all things work. There is no __call() support currently, you can only overload the get and set operations for properties. You cannot invoke the original overloading handlers of the class, and __set() only works to one level of property access. |
The overload() function will enable property and method call overloading for a class identified by class_name. See an example in the introductory section of this part.
PDF funkce v PHP mohou vytvo°it PDF soubory s vyu╛itφm knihovny PDFlib vytvo°enΘ Thomasem Merzem.
Dokumentace tΘto sekce je my╣lena pouze jako p°ehled dostupn²ch funkcφ v knihovn∞ PDFlib a nem∞la by b²t pova╛ovßna za vyΦerpßvajφcφ p°ehled. Prosφm konzultujte dokumentaci obsa╛enou v distribuci PDFlib pro ·plnΘ a detailnφ vysv∞tlenΘ ka╛dΘ zde uvedenΘ funkce. Poskytuje velmi dobr² p°ehled toho, co PDFlib dokß╛e a obsahuje nejΦerstv∞j╣φ dokumentaci ke v╣em funkcφm.
V∞t╣ina funkcφ pdflib a p°φslu╣nΘho PHP modulu mß stejnΘ jmΘno. Argumenty jsou takΘ identickΘ. Pokud chcete tento modul vyu╛φvat opravdu efektivn∞, m∞li byste chßpat takΘ n∞kterΘ z koncept∙ PDF nebo Postscriptu. V╣echny rozm∞ry a koordinßty se udßvajφ v Postscriptov²ch bodech. Obecn∞ je 72 PostScriptov²ch bod∙ na palec, ale zßvisφ to na v²stupnφm rozli╣enφ. V∞nujte prosφm pozornost dokumentaci pdflib, kterß je souΦßstφ distribuce zdrojovΘho k≤du, pro bli╛╣φ vysv∞tlenφ pou╛itΘho sou°adnicovΘho systΘmu.
Vemte prosφm na v∞domφ, ╛e v∞t╣ina PDF funkcφ vy╛aduje pdfdoc jako prvnφ parametr. Viz p°φklady nφ╛e pro bli╛╣φ vysv∞tlenφ.
Poznßmka: Pokud se zajφmßtΘ o alternativnφ voln∞ dostupnΘ PDF generßtory, kterΘ nepot°ebujφ externφ PDF knihovny, podφvejte se na tuto souvisejφcφ FAQ.
PDFlib lze stßhnout na http://www.pdflib.com/products/pdflib/index.html, ale vy╛aduje, abyste zakoupili licenci pro komerΦnφ pou╛itφ. Pro zkompilovßnφ tohoto roz╣φ°enφ jsou pot°eba knihovny JPEG a TIFF.
Abyste mohli tyto funkce pou╛φvat, musφte PHP zkompilovat s volbou --with-pdflib[=DIR]. DIR je zßkladnφ instalaΦnφ adresß° PDFlib, v²chozφ hodnota je /usr/local. Navφc m∙╛ete urΦit knihovny jpeg, tiff a png, kterΘ mß PDFlib pou╛φvat, co╛ je volitelnΘ v PDFlib 4.x. Pokud tak chcete uΦinit, p°idejte volby configure --with-jpeg-dir[=DIR] --with-png-dir[=DIR] --with-tiff-dir[=DIR].
Od pdflib 3.0 by se pdflib m∞la konfigurovat s volbou --enable-shared-pdflib.
Od PHP 4.0.5 je PHP roz╣φ°enφ oficißln∞ podporovßno spoleΦnostφ PDFlib GmbH. To znamenß, ╛e v╣echny funkce popsanΘ v PDFlib manußlu (V3.00 nebo vy╣╣φ) jsou podporovßny v PHP 4 s p°esn∞ stejn²m v²znamem a stejn²mi parametry. Oproti manußlu PDFlib se mohou li╣it pouze nßvratovΘ hodnoty, proto╛e byla p°evzata konvence PHP pro vracenφ FALSE was adopted. Z d∙vodu kompatibility toto roz╣φ°enφ PDFlib stßle podporuje starΘ funkce, ale tyto by m∞ly b²t nahrazeny jejich nov∞j╣φmi verzemi. PDFlib GmbH nepomßhß s °e╣enφm ╛ßdn²ch problΘm∙ plynoucφch z pou╛φvßnφ t∞chto zastaral²ch funkcφ.
Tabulka 1. ZastaralΘ funkce a jejich nßhrady
Starß funkce | Nßhrada |
---|---|
pdf_put_image() | Nenφ pot°eba. |
pdf_execute_image() | Nenφ pot°eba. |
pdf_get_annotation() | pdf_get_bookmark() se stejn²mi parametry. |
pdf_get_font() | pdf_get_value() s "font" jako druh² argument. |
pdf_get_fontsize() | pdf_get_value() s "fontsize" jako druh² argument. |
pdf_get_fontname() | pdf_get_parameter() s "fontname" jako druh² argument. |
pdf_set_info_creator() | pdf_set_info() s "Creator" jako druh² argument. |
pdf_set_info_title() | pdf_set_info() s "Title" jako druh² argument. |
pdf_set_info_subject() | pdf_set_info() s "Subject" jako druh² argument. |
pdf_set_info_author() | pdf_set_info() s "Author" jako druh² argument. |
pdf_set_info_keywords() | pdf_set_info() s "Keywords" jako druh² argument. |
pdf_set_leading() | pdf_set_value() s "leading" jako druh² argument. |
pdf_set_text_rendering() | pdf_set_value() s "textrendering" jako druh² argument. |
pdf_set_text_rise() | pdf_set_value() s "textrise" jako druh² argument. |
pdf_set_horiz_scaling() | pdf_set_value() s "horizscaling" jako druh² argument. |
pdf_set_text_matrix() | neexistuje |
pdf_set_char_spacing() | pdf_set_value() s "charspacing" jako druh² argument. |
pdf_set_word_spacing() | pdf_set_value() s "wordspacing" jako druh² argument. |
pdf_set_transition() | pdf_set_parameter() s "transition" jako druh² argument. |
pdf_open() | pdf_new() plus nßslednΘ zavolßnφ pdf_open_file() |
pdf_set_font() | pdf_findfont() plus nßslednΘ zavolßnφ pdf_setfont() |
pdf_set_duration() | pdf_set_value() s "duration" jako druh² argument. |
pdf_open_gif() | pdf_open_image_file() s "gif" jako druh² argument. |
pdf_open_jpeg() | pdf_open_image_file() s "jpeg" jako druh² argument. |
pdf_open_tiff() | pdf_open_image_file() s "tiff" jako druh² argument. |
pdf_open_png() | pdf_open_image_file() s "png" jako druh² argument. |
pdf_get_image_width() | pdf_get_value() s "imagewidth" jako druh² argument a obrßzkem jako t°etφ argument. |
pdf_get_image_height() | pdf_get_value() s "imageheight" jako druh² argument a obrßzkem jako t°etφ argument. |
V∞t╣ina funkcφ se pou╛φvß docela snadno. Nejt∞╛╣φ je z°ejm∞ v∙bec n∞jak² jednoduch² PDF dokument v∙bec vytvo°it. Nßsledujφcφ ukßzka by m∞la pomoci zaΦφt. Vytvo°φ soubor test.pdf s jednou strßnkou. Tato strßnka obsahuje text "Times Roman outlined" napsan² 30ti bodov²m obrysem. Text je takΘ podtr╛en².
P°φklad 1. Tvorba PDF dokumentu s pdflib
|
Distribuce pdflib obsahuje rozsßhlej╣φ ukßzku, kterß obsahuje sΘrii strßnek s analogov²mi hodinami. Tato ukßzka p°evedenß do PHP vypadß takto (stejnou ukßzku najdete v dokumentaci k clibpdf modulu):
P°φklad 3. pdfclock ukßzka z pdflib distribuce
|
Poznßmka: Existuje dal╣φ PHP modul na tvorbu PDF dokument∙, zalo╛en² na ClibPDF od firmy FastIO. Detaily viz ClibPDF funkce. Mß mφrn∞ jinou API.
Add a nested bookmark under parent, or a new top-level bookmark if parent = 0. Returns a bookmark descriptor which may be used as parent for subsequent nested bookmarks. If open = 1, child bookmarks will be folded out, and invisible if open = 0.
P°φklad 1. pdf_add_bookmark() example
|
Adds a link to a web resource specified by filename. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_add_locallink().
Add a link annotation to a target within the current PDF file. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
dest is the zoom setting on the destination page, it can be one of retain, fitpage, fitwidth, fitheight or fitbbox.
See also pdf_add_launchlink().
Sets an annotation for the current page. icon is one of comment, insert, note, paragraph, newparagraph, key, or help. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Add a file link annotation (to a PDF target). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_add_locallink() and pdf_add_weblink().
Adds an existing image as thumbnail for the current page. Thumbnail images must not be wider or higher than 106 pixels. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_open_image(), pdf_open_image_file(), pdf_open_memory_image().
Add a weblink annotation to a target url on the Web. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Add a counterclockwise circular arc from alpha to beta degrees with center (x; y) and radius r. Actual drawing of the circle is performed by the next stroke or fill operation.
P°φklad 1. pdf_arcn() example
|
See also: pdf_arcn(), pdf_circle(), pdf_stroke(), pdf_fill() and pdf_fill_stroke().
Add a clockwise circular arc from alpha to beta degrees with center (x; y) and radius r. Actual drawing of the circle is performed by the next stroke or fill operation.
P°φklad 1. pdf_arcn() example
|
See also: pdf_arc(), pdf_circle(), pdf_stroke(), pdf_fill() and pdf_fillstroke().
Add a file attachment annotation. icon is one of graph, paperclip, pushpin, or tag. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: Only the 'Full' Acrobat software will be able to display these file attachments. All other PDF viewers will either show nothing or display a question mark.
Funkce pdf_begin_page() zaΦne novou strßnku s v²╣kou height a ╣φ°kou width. Pokud chcete vytvo°it validnφ dokument, musφte zavolat tuto funkci a pdf_end_page() p°inejmen╣φm jednou.
Viz takΘ pdf_end_page().
Starts a new pattern definition and returns a pattern handle. width, and height define the bounding box for the pattern. xstep and ystep give the repeated pattern offsets. painttype=1 means that the pattern has its own colour settings whereas a value of 2 indicates that the current colour is used when the pattern is applied.
See also pdf_end_pattern().
Start a new template definition.
Add a circle with center (x, y) and radius r to the current page. Actual drawing of the circle is performed by the next stroke or fill operation.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 1. pdf_circle() example
|
See also: pdf_arc(), pdf_arcn(), pdf_curveto(), pdf_stroke(), pdf_fill() and pdf_fill_stroke().
Use the current path as clipping path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Close an image retrieved with the pdf_open_image() function.
Close the page handle, and free all page-related resources. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Close all open page handles, and close the input PDF document. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_open_pdi().
Funkce pdf_close() zav°e PDF dokument.
Viz takΘ pdf_open(), fclose().
Close the path, fill, and stroke it. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_closepath() and pdf_closepath_stroke().
Close the path, and stroke it. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_closepath() and pdf_closepath_fil_stroke().
Close the current path. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_closepath_stroke() and pdf_closepath_fil_stroke().
Concatenate a matrix to the CTM. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Print text at the next line. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Draw a Bezier curve from the current point, using 3 more control points. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Delete the PDF resource, and free all internal resources. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_new().
Funkce pdf_end_page() ukonΦφ stranu. Jakmile je strana ukonΦena, nedß se u╛ upravovat.
Viz takΘ pdf_begin_page().
Finish the pattern definition. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_begin_pattern().
Finish the template definition. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function is deprecated, use one of the pdf_stroke(), pdf_clip() or pdf_closepath_fill_stroke() functions instead.
Fill and stroke the path with the current fill and stroke color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_setcolor().
Fill the interior of the path with the current fill color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_setcolor().
Prepare a font for later use with pdf_setfont(). The metrics will be loaded, and if embed is nonzero, the font file will be checked, but not yet used. encoding is one of builtin, macroman, winansi, host, a user-defined encoding name or the name of a CMap.
pdf_findfont() returns a font handle or FALSE on error.
Get the contents of the PDF output buffer. The result must be used by the client before calling any other PDFlib function.
Returns the major version number of the PDFlib.
See also pdf_get_minorversion().
Returns the minor version number of the PDFlib.
See also pdf_get_majorversion().
Get the contents of some PDFlib parameter with string type.
Get the contents of some PDI document parameter with string type.
Get the contents of some PDI document parameter with numerical type.
Get the contents of some PDFlib parameter with float type.
Reset all implicit color and graphics state parameters to their defaults. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Draw a line from the current point to (x, y). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Make a named spot color from the current color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_setcolor().
Set the current point to (x, y. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The current point for graphics and the current text output position are maintained separately. See pdf_set_text_pos() to set the text output position.
Create a new PDF resource, using default error handling and memory management.
See also pdf_close().
Open a raw CCITT image.
Create a new PDF file using the supplied file name. If filename is empty the PDF document will be generated in memory instead of on file. The result must be fetched by the client with the pdf_get_buffer() function. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The following example shows how to create a pdf document in memory and how to output it correctly.
P°φklad 1. Creating a PDF document in memory
|
Open an image file. Supported types are jpeg, tiff, gif, and png. stringparam is either , mask, masked, or page. intparamis either 0, the image id of the applied mask, or the page.
Use image data from a variety of data sources. Supported types are jpeg, ccitt, raw. Supported sources are memory, fileref, url. len is only used when type is raw, params is only used when type is ccitt.
The pdf_open_memory_image() function takes an image created with the PHP's image functions and makes it available for the pdf resource. The function returns a pdf image identifier.
See also pdf_close_image() and pdf_place_image().
Prepare a page for later use with pdf_place_image()
Opens an existing PDF document and prepares it for later use.
See also pdf_close_pdi().
Funkce pdf_open() otvφrß nov² PDF dokument. Odpovφdajφcφ soubor musφ b²t otev°en funkcφ fopen() a jeho deskriptor p°edßn jako argument file. Pokud tΘto funkci nep°edßte ╛ßdnΘ argumenty, dokument bude vytvo°en v pam∞ti a vrßcen strßnku po strßnce bu∩ na stdout (standardnφ v²stup) nebo do browseru.
Poznßmka: Nßvratovß hodnota je pot°eba jako prvnφ argument pro v╣echny ostatnφ funkce zapisujφcφ do PDF dokumentu.
Viz takΘ fopen(), pdf_close().
Place an image with the lower left corner at (x, y), and scale it. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Place a PDI page with the lower left corner at (x, y), and scale it. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Draw a (width * height) rectangle at lower left (x, y). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Restore the most recently saved graphics state. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Rotate the coordinate system by phi degrees. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Save the current graphics state. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Scale the coordinate system. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the border color for all kinds of annotations. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Sets the border dash style for all kinds of annotations. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_setdash().
Sets the border style for all kinds of annotations. style is solid or dashed. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Funkce pdf_set_font() nastavφ platn² font, velikost, a k≤dovßnφ. Pokud pou╛φvßte pdflib 0.6, budete muset poskytnout Adobe Font Metrics (afm soubory) pro dan² font ve font cest∞ (default je ./fonts). Pokud pou╛φvßte PHP 3 nebo pdflib ve verzi star╣φ ne╛ 2.20, Φtvrt² argument encoding m∙╛e mφt nßsledujφcφ hodnoty: 0 = builtin, 1 = pdfdoc, 2 = macroman, 3 = macexpert, 4 = winansi. P°i encoding v∞t╣φ ne╛ 4 a men╣φ ne╛ 0 se pou╛ije winansi. V∞t╣inou je to sprßvnß volba. Pokud pou╛φvßte PHP 4 a pdflib ve verzi >= 2.20, argument encoding se zm∞nil na °et∞zec. Pou╛φvejte 'winansi', 'builtin', 'host', 'macroman' atd. Pokud mß poslednφ argument hodnotu 1, font se vlo╛φ do PDF dokumentu. Vlo╛it font je obvykle dobr² napad, pokud tento font nenφ p°φli╣ roz╣φ°en² a nem∙╛ete zaruΦit, ╛e osoba, kterß vß╣ dokument Φte, mß p°φstup k font∙m v dokumentu pou╛it²m. Font se vlo╛φ pouze jednou, i kdy╛ volßte pdf_set_font() n∞kolikrßt.
Poznßmka: Pokud se mß vytvo°it validnφ PDF dokument, tato funkce se musφ volat a╛ po pdf_begin_page().
Poznßmka: Pokud v .upr souboru odkazujete na n∞jak² font, ujist∞te se, ╛e jmΘno v afm souboru a jmΘno fontu jsou stejnΘ. Jinak se font vlo╛φ vφcekrßt. (Dφky Paulu Haddonovi za toto zji╣t∞nφ.)
Funkce pdf_set_info() vyplnφ informaΦnφ pole PDF dokumentu. Mo╛nΘ hodnoty argumentu fieldname jsou 'Subject', 'Title', 'Creator', 'Author', 'Keywords' a jeden u╛ivatelsky definovan² nßzev. M∙╛e b²t volßna p°ed zaΦßtkem strßnky.
P°φklad 1. Zadßnφ informacφ o dokumentu
|
Poznßmka: Tato funkce nahrazuje pdf_set_info_keywords(), pdf_set_info_title(), pdf_set_info_subject(), pdf_set_info_creator() a pdf_set_info_sybject().
Funkce pdf_set_leading() nastavuje vzdßlenost mezi °ßdky textu. Toto nastavenφ se pou╛ije, pokud se text tvo°φ pomocφ pdf_continue_text().
Viz takΘ pdf_continue_text().
Funkce pdf_set_parameter() nastavφ urΦitΘ parametry pdflib, kterΘ jsou typu string.
Viz takΘ pdf_get_value(), pdf_set_value(), pdf_get_parameter().
Set the text output position specified by x and y. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the value of some PDFlib parameter with float type. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the current color space and color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The parameter type can be fill, stroke or both to specify that the color is set for filling, stroking or both filling and stroking. The parameter colorspace can be gray, rgb, cmyk, spot or pattern. The parameters c1, c2, c3 and c4 represent the color components for the color space specified by colorspace. Except as otherwise noted, the color components are floating-point values that range from 0 to 1.
For gray only c1 is used.
For rgb parameters c1, c2, and c3 specify the red, green and blue values respectively.
For cmyk, parameters c1, c2, c3, and c4 are the cyan, magenta, yellow and black values, respectively.
For spot, c1 should be a spot color handles returned by pdf_makespotcolor() and c2 is a tint value between 0 and 1.
For pattern, c1 should be a pattern handle returned by pdf_begin_pattern().
Set the current dash pattern to b black and w white units. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Sets the flatness to a value between 0 and 100 inclusive. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the current font in the given size, using a font handle returned by pdf_findfont(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pdf_findfont().
Set the current fill color to a gray value between 0 and 1 inclusive. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Set the current stroke color to a gray value between 0 and 1 inclusive. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Set the current fill and stroke color. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Set the linecap parameter to a value between 0 and 2 inclusive.
Sets the line join parameter to a value between 0 and 2 inclusive. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Sets the current linewidth to width. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Explicitly set the current transformation matrix. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the miter limit to a value greater than or equal to 1. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Set the current fill color to the supplied RGB values. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Set the current stroke color to the supplied RGB values. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Set the current fill and stroke color to the supplied RGB values. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: PDFlib V4.0: Deprecated, use pdf_setcolor() instead.
Funkce pdf_show_boxed() vytiskne °et∞zec text v rßmeΦku s lev²m dolnφm rohem na (x-coor, y-coor). Rozm∞ry rßmeΦku jsou height x width. Argument mode determines how the text is type set. Pokud jsou width a height nula, mode m∙╛e b²t "left", "right" nebo "center". Pokud jsou width nebo height r∙znΘ od nuly, m∙╛e b²t takΘ "justify" nebo "fulljustify".
Pokud mß argument feature hodnotu "blind", text se nezobrazφ.
Vracφ poΦet znak∙ kterΘ nebyly zpracovßny, proto╛e se neve╣ly do rßmeΦku.
Viz takΘ pdf_show(), pdf_show_xy().
Funkce pdf_show_xy() vytiskne °et∞zec text na pozici (x-coor, y-coor).
Viz takΘ pdf_show(), pdf_show_boxed().
Funkce pdf_show() umφstφ °et∞zec text na souΦasnou pozici s vyu╛itφm aktußlnφho fontu.
Viz takΘ pdf_show_xy(), pdf_show_boxed(), pdf_set_text_pos(), pdf_set_font().
Skew the coordinate system in x and y direction by alpha and beta degrees. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Returns the width of text using the last font set by pdf_setfont(). If the optional parameters font and size are specified, the width will be calculated using that font and size instead. Please note that font is a font handle returned by pdf_findfont().
Poznßmka: Both the font and size parameters must be used together.
See also pdf_setfont() and pdf_findfont().
Stroke the path with the current color and line width, and clear it. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Toto roz╣φ°enφ umo╛≥uje zpracovßvat kreditnφ karty a provßd∞t jinΘ finanΦnφ transakce pomocφ Verisign Payment Services (d°φve Signio, http://www.verisign.com/products/payflow/pro/index.html).
P°i vyu╛φvßnφ t∞chto funkcφ m∙╛ete vynechat volßnφ pfpro_init() a pfpro_cleanup(), tato extenze to ud∞lß podle pot°eby automaticky. Tyto funkce jsou ale p°esto dostupnΘ pro p°φpad, ╛e byste pot°ebovali zpracovßvat velkΘ mno╛stvφ transakcφ a vy╛adovali naprostou kontrolu nad touto knihovnou. Mezi pfpro_init() a pfpro_cleanup() m∙╛ete provΘst libovolnΘ mno╛stvφ transakcφ.
Tyto funkce byly p°idßny v PHP 4.0.2.
Poznßmka: Tyto funkce poskytujφ pouze spojenφ s Verisign Payment Services. Kompletnφ detaily vy╛adovan²ch parametr∙ viz Payflow Pro Developer's Guide.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Budete pot°ebovat SDK pro va╣i platformu, kter² se dß po registraci stßhnout z mana╛erskΘho rozhranφ. Pokud se chystßte pou╛φvat toto roz╣φ°enφ s webov²m serverem s povolen²m SSL nebo s jin²mi SSL komponentami (jako je roz╣φ°enφ CURL+SSL), musφte stßhnout beta verzi SDK.
Pokud jste si stßhli SDK, zkopφrujte nßsledujφcφ soubory z lib adresß°e tΘto distribuce: pfpro.h do /usr/local/include a libpfpro.so do /usr/local/lib.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. KonfiguraΦnφ volby pro Verisign Payflow Pro
Nßzev | V²chozφ hodnota | Lze zm∞nit |
---|---|---|
pfpro.defaulthost/PFPRO_VERSION < 3 | "test.signio.com" | PHP_INI_ALL |
pfpro.defaulthost | "test-payflow.verisign.com" | PHP_INI_ALL |
pfpro.defaultport | "443" | PHP_INI_ALL |
pfpro.defaulttimeout | "30" | PHP_INI_ALL |
pfpro.proxyaddress | "" | PHP_INI_ALL |
pfpro.proxyport | "" | PHP_INI_ALL |
pfpro.proxylogon | "" | PHP_INI_ALL |
pfpro.proxypassword | "" | PHP_INI_ALL |
pfpro_cleanup() se pou╛φvß k ΦistΘmu vypnutφ Payflow Pro knihovny. M∞la by se volat po provedenφ v╣ech transakcφ a p°ed ukonΦenφm skriptu. Tuto funkci nicmΘn∞ volat nemusφte, tato extenze automaticky zavolß pfpro_cleanup() p°i ukonΦenφ skriptu.
Viz takΘ pfpro_init().
pfpro_init() se pou╛φvß k inicializaci Payflow Pro knihovny. Tuto funkci volat nemusφte, tato extenze automaticky zavolß pfpro_init() p°ed prvnφ transakcφ.
Viz takΘ pfpro_cleanup().
Vracφ °et∞zec obsahujφcφ odpov∞∩.
pfpro_process_raw() zpracuje raw °et∞zec transakce s Payflow Pro. Opravdu byste ale m∞li pou╛φvat pfpro_process(), proto╛e pravidla k≤dovßnφ t∞chto transakcφ jsou nestandardnφ.
Prvnφ argument je v tomto p°φpad∞ °et∞zec obsahujφcφ raw po╛adavek na transakci. V╣echny ostatnφ argumenty jsou stejnΘ jako u pfpro_process(). Nßvratovß hodnota je °et∞zec obsahujφcφ raw odpov∞∩.
Poznßmka: Kompletnφ detaily vy╛adovan²ch parametr∙ a pravidel k≤dovßnφ viz Payflow Pro Developer's Guide. Dob°e vßm radφme, pou╛φvejte rad╣i pfpro_process().
P°φklad 1. Ukßzka Payflow Pro raw
|
Vracφ asociativnφ pole obsahujφcφ odpov∞∩.
pfpro_process() zpracuje transakci s Payflow Pro. Prvnφ argument je asociativnφ pole obsahujφcφ klφΦe a hodnoty, kterΘ se zak≤dujφ a ode╣lou zpracovateli.
Druh² argument je voliteln² a urΦuje serveer, ke kterΘmu se p°ipojit. Default je "test.signio.com", tak╛e pokud chcete zpracovßvat skuteΦnΘ transakce, budete chtφt tento argument nastavit na "connect.signio.com".
T°etφ argument urΦuje port, ke kterΘmu se p°ipojit. Default je 443, standardnφ SSL port.
╚tvrt² argument urΦuje v sekundßch, jak² Φasov² limit se mß pou╛φt. Default je 30 sekund. Tento Φasov² limit vstupuje v platnost v okam╛iku spojenφ se zpracovatelem, a tak by vß╣ skript mohl potencißln∞ b∞╛et velmi dlouhou dobu, pokud by nastaly problΘmy s DNS nebo sφtφ.
Pßt² argument urΦuje hostname va╣φ p°φpadnΘ SSL proxy. ⌐est² argument specifikuje port.
Sedm² a osm² argument urΦujφ p°ihla╣ovacφ jmΘno a heslo na tuto proxy.
Tato funkce vracφ asociativnφ pole klφΦ∙ a hodnot odpov∞di.
Poznßmka: Kompletnφ detaily vy╛adovan²ch parametr∙ viz Payflow Pro Developer's Guide.
P°φklad 1. Ukßzka Payflow Pro
|
Tyto funkce vßm umo╛≥ujφ zjistit °adu informacφ o vlastnφm PHP, jako je konfigurace, nahranß roz╣φ°enφ, verze a mnohΘ dal╣φ. Naleznete zde takΘ funkce, kterΘ vßm umo╛≥φ nastavit volby b∞╛φcφho PHP. Pravd∞porobn∞ nejznßm∞j╣φ funkce PHP - phpinfo() - se nachßzφ prßv∞ v tΘto sekci.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. PHP Options/Inf Configuration Options
Name | Default | Changeable |
---|---|---|
assert.active | "1" | PHP_INI_ALL |
assert.bail | "0" | PHP_INI_ALL |
assert.warning | "1" | PHP_INI_ALL |
assert.callback | NULL | PHP_INI_ALL |
assert.quiet_eval | "0" | PHP_INI_ALL |
enable_dl | "1" | PHP_INI_SYSTEM |
max_execution_time | "30" | PHP_INI_ALL |
magic_quotes_gpc | "1" | PHP_INI_PERDIR|PHP_INI_SYSTEM |
magic_quotes_runtime | "0" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Enable assert() evaluation.
Terminate script execution on failed assertions.
Issue a PHP warning for each failed assertion.
user function to call on failed assertions
Use the current setting of error_reporting() during assertion expression evaluation. If enabled, no errors are shown (implicit error_reporting(0)) while evaluation. If disabled, errors are shown according to the settings of error_reporting()
This directive is really only useful in the Apache module version of PHP. You can turn dynamic loading of PHP extensions with dl() on and off per virtual server or per directory.
The main reason for turning dynamic loading off is security. With dynamic loading, it's possible to ignore all open_basedir restrictions. The default is to allow dynamic loading, except when using bezpeΦn² re╛im. In bezpeΦn² re╛im, it's always impossible to use dl().
This sets the maximum time in seconds a script is allowed to run before it is terminated by the parser. This helps prevent poorly written scripts from tying up the server. The default setting is 30.
The maximum execution time is not affected by system calls, the sleep() function, etc. Please see the set_time_limit() function for more details.
You can not change this setting with ini_set() when running in bezpeΦn² re╛im. The only workaround is to turn off safe mode or by changing the time limit in the php.ini.
Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are escaped with a backslash automatically.
Poznßmka: If the magic_quotes_sybase directive is also ON it will completely override magic_quotes_gpc. Having both directives enabled means only single quotes are escaped as ''. Double quotes, backslashes and NUL's will remain untouched and unescaped.
See also get_magic_quotes_gpc()
If magic_quotes_runtime is enabled, most functions that return data from any sort of external source including databases and text files will have quotes escaped with a backslash. If magic_quotes_sybase is also on, a single-quote is escaped with a single-quote instead of a backslash.
Konstanty z tohoto seznamu jsou v╛dy dostupnΘ jako souΦßst jßdra PHP.
Tabulka 2. Pre-defined phpcredits() constants
Constant | Value | Description |
---|---|---|
CREDITS_GROUP | 1 | A list of the core developers |
CREDITS_GENERAL | 2 | General credits: Language design and concept, PHP 4.0 authors and SAPI module. |
CREDITS_SAPI | 4 | A list of the server API modules for PHP, and their authors. |
CREDITS_MODULES | 8 | A list of the extension modules for PHP, and their authors. |
CREDITS_DOCS | 16 | The credits for the documentation team. |
CREDITS_FULLPAGE | 32 | Usually used in combination with the other flags. Indicates that the a complete stand-alone HTML page needs to be printed including the information indicated by the other flags. |
CREDITS_QA | 64 | The credits for the quality assurance team. |
CREDITS_ALL | -1 | All the credits, equivalent to using: CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_QA CREDITS_FULLPAGE. It generates a complete stand-alone HTML page with the appropriate tags. This is the default value. |
Tabulka 3. phpinfo() constants
Constant | Value | Description |
---|---|---|
INFO_GENERAL | 1 | The configuration line, php.ini location, build date, Web Server, System and more. |
INFO_CREDITS | 2 | PHP 4 Credits. See also phpcredits(). |
INFO_CONFIGURATION | 4 | Current Local and Master values for PHP directives. See also ini_get(). |
INFO_MODULES | 8 | Loaded modules and their respective settings. |
INFO_ENVIRONMENT | 16 | Environment Variable information that's also available in $_ENV. |
INFO_VARIABLES | 32 | Shows all predefined variables from EGPCS (Environment, GET, POST, Cookie, Server). |
INFO_LICENSE | 64 | PHP License information. See also the license faq. |
INFO_ALL | -1 | Shows all of the above. This is the default value. |
S pou╛itφm funkce assert_options() m∙╛ete nastavit r∙znΘ °φdφcφ volby funkce assert(), nebo jen zφskat jejich souΦasnΘ nastavenφ.
Tabulka 1. Volby v²rok∙
volba | ini parametr | v²chozφ hodnota | popis |
---|---|---|---|
ASSERT_ACTIVE | assert.active | 1 | zapne assert() vyhodnocovßnφ |
ASSERT_WARNING | assert.warning | 1 | vytvo°φ PHP varovßnφ pro ka╛d² selhav╣φ v²rok |
ASSERT_BAIL | assert.bail | 0 | ukonΦφ provßd∞nφ skiptu, pokud v²rok sel╛e |
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | vypne error_reporting b∞hem vyhodnocovßnφ v²raz∙ v²rok∙ |
ASSERT_CALLBACK | assert_callback | (NULL) | u╛ivatelskß funkce, kterß se zavolß pro ka╛d² selhav╣φ v²rok |
assert_options() vracφ p∙vodnφ nastavenφ volby, nebo FALSE p°i chyb∞.
assert() ov∞°φ p°edanou assertion a provede p°φslu╣nou akci, pokud je v²sledek FALSE.
Pokud je p°edanß assertion °et∞zec, vyhodnotφ se funkcφ assert() jako PHP k≤d. V²hody °et∞zcovΘ assertion jsou men╣φ re╛ie, kdy╛ je kontrola v²rok∙ vypnutß, a zprßvy obsahujφcφ assertion v²raz, kdy╛ v²rok sel╛e.
Kontrola v²rok∙ by se m∞la pou╛φvat jen pro odla∩ovßnφ skript∙. M∙╛ete je pou╛φt na kontrolu podmφnek, kterΘ by m∞ly b²t v╛dycky TRUE, a kterΘ jinak indikujφ n∞jakΘ chyby v programovßnφ, nebo na kontrolu existence urΦit²ch vlastnostφ, jako jsou funkce obsa╛enΘ v extenzφch, nebo urΦitΘ systΘmovΘ limity a vlastnosti.
V²roky by se nem∞ly pou╛φvat pro b∞╛nΘ operace jako kontrola vstupnφch parametr∙. Jako zßkladnφ pravidlo platφ, ╛e vß╛ k≤d by m∞l fungovat sprßvn∞, pokud nenφ kontrola v²rok∙ aktivovßna.
Chovßnφ funkce assert() lze konfigurovat skrze assert_options() nebo .ini direktivy popsanΘ na manußlovΘ strßnce tΘto funkce.
NaΦte extenzi PHP definovanou v library. Viz takΘ konfiguraΦnφ direktivu extension_dir.
Vracφ TRUE, pokud je extenze identifikovanß argumentem name naΦtena. Nßzvy r∙zn²ch extenzφ m∙╛ete vid∞t, pokud pou╛ijete phpinfo().
Viz takΘ phpinfo().
Poznßmka: Tato funkce byla p°idßna v PHP 3.0.10.
Vrßtφ souΦasnou hodnotu konfiguraΦnφ prom∞nnΘ PHP urΦenΘ argumentem varname, nebo FALSE pokud dojde k chyb∞.
Nevracφ konfiguraΦnφ hodnoty nastavenΘ p°i kompilaci PHP a neΦte konfiguraΦnφ soubor Apache (pou╛itφ php3_configuration_option direktiv).
Pokud chcete zjistit, jestli dan² systΘm pou╛φvß konfiguraΦnφ soubor, zkuste zφskat hodnotu konfiguraΦnφ volby cfg_file_path. Pokud je tato dostupnß, pou╛φvß se konfiguraΦnφ soubor.
Vrßtφ jmΘno vlastnφka souΦasnΘho PHP skriptu.
Viz takΘ getmyuid(), getmypid(), getmyinode(), a getlastmod().
(PHP 4 >= 4.1.0)
get_defined_constants -- Returns an associative array with the names of all the constants and their valuesThis function returns the names and values of all the constants currently defined. This includes those created by extensions as well as those created with the define() function.
For example the line below:
<?php print_r(get_defined_constants()); ?> |
will print a list like:
Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 ) |
See also get_loaded_extensions(), get_defined_functions(), and get_defined_vars().
Tato funkce vracφ jmΘna v╣ech funkcφ definovan²ch v modulu urΦenΘm argumentem module_name.
Nap°φklad nßsledujφcφ °ßdky
vytisknou seznam v╣ech funkcφ v modulech xml a gd.Viz takΘ: get_loaded_extensions()
Gets the current include_path configuration option value.
See also ini_get(), restore_include_path(), set_include_path(), and include().
(PHP 4 )
get_included_files -- Vrßtit pole jmen v╣ech soubor∙, kterΘ byly ve skriptu naΦteny pomocφ include_once()Tato funkce vrßtφ asociativnφ pole jmen v╣ech soubor∙, kterΘ byly naΦteny do skriptu pomocφ include_once(). Indexy tohoto pole jsou nßzvy soubor∙ pou╛it²ch v include_once() bez p°φpony ".php".
Poznßmka: Od verze PHP 4.0.1pl2 tato funkce p°edpoklßdß, ╛e soubory v include_once konΦφ p°φponou ".php", jinΘ p°φpony nefungujφ.
Viz takΘ: require_once(), include_once(), get_required_files()
(PHP 4 )
get_loaded_extensions -- Vrßtit pole se jmΘny v╣ech zkompilovan²ch a naΦten²ch modul∙ (extenzφ)Tato funkce vracφ jmΘna v╣ech modul∙ (extenzφ) zkompilovan²ch a naΦten²ch do PHP interpretru.
Nap°φklad nßsledujφcφ °ßdek
vypφ╣e seznam podobn² tomuto:Array ( [0] => xml [1] => wddx [2] => standard [3] => session [4] => posix [5] => pgsql [6] => pcre [7] => gd [8] => ftp [9] => db [10] => Calendar [11] => bcmath ) |
Viz takΘ: get_extension_funcs().
Vrßtφ souΦasnΘ aktivnφ nastavenφ magic_quotes_gpc. (0 pro vypnuto, 1 pro zapnuto).
Viz takΘ get_magic_quotes_runtime(), set_magic_quotes_runtime().
(PHP 3>= 3.0.6, PHP 4 )
get_magic_quotes_runtime -- Vrßtit souΦasnΘ aktivnφ nastavenφ magic_quotes_runtimeVrßtφ souΦasnΘ aktivnφ nastavenφ magic_quotes_runtime. (0 pro vypnuto, 1 pro zapnuto).
Viz takΘ get_magic_quotes_gpc(), set_magic_quotes_runtime().
(PHP 4 )
get_required_files -- Vrßtit pole jmen v╣ech soubor∙, kterΘ byly v urΦitΘm skriptu naΦteny pomocφ require_once()Tato funkce vrßtφ asociativnφ pole jmen v╣ech soubor∙, kterΘ byly naΦteny do probφhajφcφho skriptu pomocφ require_once(). Indexy tohoto pole jsou nßzvy soubor∙ pou╛it²ch v require_once() bez p°φpony ".php".
Nßsledujφcφ p°φklad
P°φklad 1. Tisk require()ovan²ch a include()ovan²ch soubor∙
|
Required_once files Array ( [local] => local.php [../inc/global] => /full/path/to/inc/global.php ) Included_once files Array ( [util1] => util1.php [util2] => util2.php [util3] => util3.php [util4] => util4.php ) |
Poznßmka: Od verze PHP 4.0.1pl2 tato funkce p°edpoklßdß, ╛e soubory v required_once konΦφ p°φponou ".php", jinΘ p°φpony nefungujφ.
Viz takΘ: require_once(), include_once(), get_included_files()
Vrßtφ hodnotu systΘmovΘ prom∞nnΘ varname, nebo FALSE p°i chyb∞.
Seznam v╣ech systΘmov²ch prom∞nn²ch si m∙╛ete prohlΘdnout pou╛itφm phpinfo(). V²znam mnoha z nich najdete v CGI specifikaci, zvlß╣t∞ na strßnce o systΘmov²ch prom∞nn²ch.
Poznßmka: Tato funkce nefunguje v ISAPI m≤du.
Vrßtφ Φas poslenφ modifikace souΦasnΘ strßnky. Nßvratovß hodnota je Unixov² timestamp, vhodn² jako vstup pro date(). P°i chyb∞ vracφ FALSE.
See alse date(), getmyuid(), get_current_user(), getmyinode(), and getmypid().
Returns the group ID of the current script, or FALSE on error.
See also getmyuid(), getmypid(), get_current_user(), getmyinode(), and getlastmod().
Vrßtφ inode souΦasnΘho skriptu, nebo FALSE p°i chyb∞.
Viz takΘ getmyuid(), get_current_user(), getmypid(), and getlastmod().
Poznßmka: Tato funkce nenφ podporovßna na Windows systΘmech.
Vrßtφ process ID souΦasnΘho PHP procesu, nebo FALSE p°i chyb∞.
Varovßnφ |
Process ID nejsou unikßtnφ, a jsou tudφ╛ slab²m zdrojem entropie. NedoporuΦujeme pou╛φvat PIDy v prost°edφch zßvisl²ch na bezpeΦnosti. |
Viz takΘ getmyuid(), get_current_user(), getmyinode(), a getlastmod().
Vrßtφ user ID souΦasnΘho skriptu, nebo FALSE p°i chyb∞.
Viz takΘ getmypid(), get_current_user(), getmyinode(), a getlastmod().
Returns an associative array of option / argument pairs based on the options format specified in options, or FALSE on an error.
The options parameter may contain the following elements: individual characters, and characters followed by a colon to indicate an option argument is to follow. For example, an option string x recognizes an option -x, and an option string x: recognizes an option and argument -x argument. It does not matter if an argument has leading white space.
This function will return an array of option / argument pairs. If an option does not have an argument, the value will be set to FALSE.
Poznßmka: Tato funkce nenφ implementovßna na platformßch Windows.
Toto je rozhranφ ke to getrusage(2). Vrßtφ asociativnφ pole obsahujφcφ v╣echna data vrßcenß systΘmov²m volßnφm. Pokud je who 1, getrusage se zavolß s RUSAGE_CHILDREN.
V╣echny polo╛ky jsou p°φstupnΘ skrze svß dokumentovanß jmΘna.
Zm∞nφ hodnotu konfiguraΦnφ volby, vrßtφ FALSE p°i selhßnφ, a p°edchozφ hodnotu konfiguraΦnφ volby p°i ·sp∞chu.
Poznßmka: Toto je alias k ini_set()
Viz takΘ ini_get(), ini_restore(), ini_set()
Returns all the registered configuration options as an associative array. If the optional extension parameter is set, returns only options specific for that extension.
The returned array uses the directive name as the array key, with elements of that array being global_value (set in php.ini), local_value (perhaps set with ini_set() or .htaccess), and access (the access level). See the manual section on configuration changes for information on what access levels mean.
Poznßmka: It's possible for a directive to have multiple access levels, which is why access shows the appropriate bitmask values.
P°φklad 1. A ini_get_all() example
Partial output may look like:
|
See also: ini_get(), ini_restore(), ini_set(), get_loaded_extensions(), and phpinfo().
Vrßtφ hodnotu konfiguraΦnφ volby p°i ·sp∞chu, FALSE p°i selhßnφ.
Viz takΘ ini_alter(), ini_restore(), ini_set()
Obnovφ p∙vodnφ hodnotu konfiguraΦnφ volby.
Viz takΘ ini_alter(), ini_get(), ini_set()
Zm∞nφ hodnotu konfiguraΦnφ volby, vrßtφ FALSE p°i selhßnφ, a p°edchozφ hodnotu konfiguraΦnφ volby p°i ·sp∞chu.
Viz takΘ ini_alter(), ini_get(), ini_restore()
There is no function named main() except in the PHP source. In PHP 4.3.0, a new type of error handling in the PHP source (php_error_docref) was introduced. One feature is to provide links to a manual page in PHP error messages when the PHP directives html_errors (on by default) and docref_root (on by default until PHP 4.3.2) are set.
Sometimes error messages refer to a manual page for the function main() which is why this page exists. Please add a user comment below that mentions what PHP function caused the error that linked to main() and it will be fixed and properly documented.
Tabulka 1. Known errors that point to main()
Function name | No longer points here as of |
---|---|
include() | 4.3.2 |
include_once() | 4.3.2 |
require() | 4.3.2 |
require_once() | 4.3.2 |
See also html_errors and display_errors.
Returns the amount of memory, in bytes, that's currently being allocated to your PHP script.
memory_get_usage() will only be defined if your PHP is compiled with the --enable-memory-limit configuration option.
See also memory_limit.
(PHP 4 >= 4.3.0)
php_ini_scanned_files -- Return a list of .ini files parsed from the additional ini dirphp_ini_scanned_files() returns a comma-separated list of configuration files parsed after php.ini. These files are found in a directory defined by the --with-config-file-scan-dir. option which is set during compilation.
Returns a comma-separated string of .ini files on success. If the directive --with-config-files-scan-dir wasn't set, FALSE is returned. If it was set and the directory was empty, an empty string is returned. If a file is unrecognizable, the file will still make it into the returned string but a PHP error will also result. This PHP error will be seen both at compile time and while using php_ini_scanned_files().
The returned configuration files also include the path as declared in the --with-config-file-scan-dir directive. Also, each comma is followed by a newline.
Poznßmka: Tato funkcionalita byla p°idßna v PHP 4 Beta 4.
Viz takΘ phpinfo(). phpversion(), phpcredits()
(PHP 4 >= 4.0.1)
php_sapi_name -- Vrßtit typ rozhranφ mezi web serverem a PHP Returns the type of interface between web server and PHPphp_sapi_name() vrßtφ °et∞zec popisujφcφ mal²mi pφsmeny typ rozhranφ mezi web serverem a PHP (Server API, SAPI). U CGI PHP je tento °et∞zec "cgi", u mod_php pro Apache je tento °et∞zec "apache" a tak dßle.
php_uname() vrßtφ °et∞zec s popisem operaΦnφho systΘmu, na kterΘm bylo PHP zkompilovßno.
Tato funkce vytiskne credits vΦ. seznamu v²vojß°∙ PHP, modul∙, atd. Generuje p°φslu╣n² HTML k≤d, kter²m se tyto informace vklßdajφ do strßnky. Je t°eba p°edat argument indikujφcφ co se vytiskne (p°eddefinovanß konstanta flag, viz nφ╛e). Nap°φklad k vyti╣t∞nφ v╣eobecn²ch credits m∙╛ete n∞kde ve svΘm k≤du pou╛φt:
A pokud chcete vytisknout u╛╣φ kruh v²vojß°∙ a dokumentaΦnφ skupinu na samostatnΘ strßnce, pou╛ijte: A pokud chcete vlo╛it v╣echny credits do vlastnφ strßnky, pom∙╛e vßm nßsledujφcφ k≤d:<html> <head> <title>Mß strßnka s credits</title> </head> <body> <?php // vß╣ vlastnφ k≤d phpcredits(CREDITS_ALL + CREDITS_FULLPAGE); // dal╣φ k≤d ?> </body> </html> |
Tabulka 1. P°eddefinovanΘ phpcredits() p°φznaky
nßzev | popis |
---|---|
CREDITS_ALL | V╣echny credits, ekvivalentnφ k: CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE. Vygeneruje kompletnφ samostatnou HTML strßnku s p°φslu╣n²mi tagy. |
CREDITS_DOCS | Credits dokumentaΦnφho t²mu |
CREDITS_FULLPAGE | Obvykle se pou╛φvß v kombinaci s jin²mi p°φznaky. Indikuje, ╛e se mß vytisknout kompletnφ samostatnß HTML strßnka, vΦetn∞ informacφ indikovan²ch jin²mi p°φznaky. |
CREDITS_GENERAL | V╣eobecnΘ credits: Design a koncept jazyka, auto°i PHP 4.0 a SAPI modul. |
CREDITS_GROUP | Seznam u╛╣φho kruhu v²vojß°∙ |
CREDITS_MODULES | Seznam roz╣i°ujφcφch modul∙ (extenzφ) PHP a jejich autor∙ |
CREDITS_SAPI | Seznam server API modul∙ PHP a jejich autor∙ |
Viz takΘ phpinfo(), phpversion(), php_logo_guid().
Vytiskne velkΘ mno╛stvφ informacφ o souΦasnΘm stavu PHP. To zahrnuje informace o kompilaΦnφch volbßch a extenzφch, verzi PHP, informaci o serveru a systΘm∙ (pokud je PHP zkompilovßno jako modul), PHP prost°edφ, verzi OS, cesty, hlavnφ a lokßlnφ hodnoty konfiguraΦnφch voleb, HTTP hlaviΦky, a PHP licenci.
V²stup se dß upravit p°edßnφm jednou nebo vφce z nßsledujφcφch hodnot ulo╛en²ch ve volitelnΘm argumentu what.
INFO_GENERAL
INFO_CREDITS
INFO_CONFIGURATION
INFO_MODULES
INFO_ENVIRONMENT
INFO_VARIABLES
INFO_LICENSE
INFO_ALL
Viz takΘ phpversion(), phpcredits(), php_logo_guid()
Vrßtφ °et∞zec obsahujφcφ verzi prßv∞ b∞╛φcφho PHP parseru.
Viz takΘ phpinfo(), phpcredits(), php_logo_guid()
Restores the include_path configuration option back to its original master value as set in php.ini
P°φklad 1. restore_include_path() example
|
See also ini_restore(), set_include_path(), get_include_path(), and include().
Sets the include_path configuration option for the duration of the script. Returns the old include_path on success or FALSE on failure.
See also ini_set(), get_include_path(), restore_include_path(), and include().
(PHP 3>= 3.0.6, PHP 4 )
set_magic_quotes_runtime -- Nastavit souΦasnou aktivnφ hodnotu magic_quotes_runtimeNastavφ souΦasnou aktivnφ konfiguraΦnφ volby magic_quotes_runtime. (0 vypnuto, 1 zapnuto)
Viz takΘ get_magic_quotes_gpc(), get_magic_quotes_runtime().
UrΦφ poΦet sekund po kterΘ m∙╛e skript b∞╛et. Pokud je dosa╛eno tohoto Φasu, skript vrßtφ fatßlnφ chybu. Standardnφ limit je 30 sekund, nebo, pokud existuje, hodnota direktivy max_execution_time definovanß v konfiguraΦnφm souboru. Pokud je seconds nula, neexistuje ╛ßdn² Φasov² limit.
set_time_limit() p°i svΘm zavolßnφ restartuje ΦφtaΦ Φasu od nuly. Jin²mi slovy, pokud je limit standardnφch ╣Θ sekund a po 25 sekundßch provßd∞nφ skriptu dojde k volßnφ set_time_limit(20), tento skript pob∞╛φ celkem 45 sekund p°edtφm, ne╛ skonΦφ na ΦasovΘm limitu.
V╣imn∞te si, ╛e set_time_limit() nemß ╛ßdn² ·Φinek, kdy╛ PHP b∞╛φ v bezpeΦnΘm m≤du. Obejφt to lz jedine vypnutφm bezpeΦnΘho m≤du nebo zm∞nou ΦasovΘho limitu v konfiguraΦnφm souboru.
version_compare() compares two "PHP-standardized" version number strings. This is useful if you would like to write programs working only on some versions of PHP.
version_compare() returns -1 if the first version is lower than the second, 0 if they are equal, and +1 if the second is lower.
The function first replaces _, - and + with a dot . in the version strings and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'. Then it splits the results like if you were using explode('.', $ver). Then it compares the parts starting from left to right. If a part contains special version strings these are handled in the following order: dev < alpha = a < beta = b < RC < pl. This way not only versions with different levels like '4.1' and '4.1.2' can be compared but also any PHP specific version containing development state.
If you specify the third optional operator argument, you can test for a particular relationship. The possible operators are: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne respectively. Using this argument, the function will return 1 if the relationship is the one specified by the operator, 0 otherwise.
Returns a string containing the version of the currently running Zend Engine.
See also phpinfo(), phpcredits(), php_logo_guid(), and phpversion().
This module contains an interface to those functions defined in the IEEE 1003.1 (POSIX.1) standards document which are not accessible through other means. POSIX.1 for example defined the open(), read(), write() and close() functions, too, which traditionally have been part of PHP 3 for a long time. Some more system specific functions have not been available before, though, and this module tries to remedy this by providing easy access to these functions.
Varovßnφ |
Sensitive data can be retrieved with the POSIX functions, e.g. posix_getpwnam() and friends. None of the POSIX function perform any kind of access checking when safe mode is enabled. It's therefore strongly advised to disable the POSIX extension at all (use --disable-posix in your configure line) if you're operating in such an environment. |
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.2.0)
posix_get_last_error -- Retrieve the error number set by the last posix function that failed.Returns the errno (error number) set by the last posix function that failed. If no errors exist, 0 is returned. If you're wanting the system error message associated with the errno, use posix_strerror().
See also posix_strerror().
posix_getcwd() returns the absolute pathname of the script's current working directory. posix_getcwd() returns FALSE on error.
Return the numeric effective group ID of the current process. See also posix_getgrgid() for information on how to convert this into a useable group name.
Return the numeric effective user ID of the current process. See also posix_getpwuid() for information on how to convert this into a useable username.
Return the numeric real group ID of the current process. See also posix_getgrgid() for information on how to convert this into a useable group name.
Returns an array of information about a group and FALSE on failure. If gid isn't a number then NULL is returned and an E_WARNING level error is generated.
Poznßmka: As of PHP 4.2.0, members is returned as an array of member usernames in the group. Before this time it was simply an integer (the number of members in the group) and the member names were returned with numerical indices.
See also posix_getegid(), filegroup(), stat(), and safe_mode_gid.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns an array of integers containing the numeric group ids of the group set of the current process. See also posix_getgrgid() for information on how to convert this into useable group names.
Returns the login name of the user owning the current process. See posix_getpwnam() for information how to get more information about this user.
Returns the process group identifier of the process pid.
This is not a POSIX function, but is common on BSD and System V systems. If your system does not support this function at system level, this PHP function will always return FALSE.
Return the process group identifier of the current process. See POSIX.1 and the getpgrp(2) manual page on your POSIX system for more information on process groups.
Return the process identifier of the parent process of the current process.
Returns an associative array containing information about a user referenced by an alphanumeric username, passed in the username parameter.
The array elements returned are:
Tabulka 1. The user information array
Element | Description |
---|---|
name | The name element contains the username of the user. This is a short, usually less than 16 character "handle" of the user, not her real, full name. This should be the same as the username parameter used when calling the function, and hence redundant. |
passwd | The passwd element contains the user's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead. |
uid | User ID of the user in numeric form. |
gid | The group ID of the user. Use the function posix_getgrgid() to resolve the group name and a list of its members. |
gecos | GECOS is an obsolete term that refers to the finger information field on a Honeywell batch processing system. The field, however, lives on, and its contents have been formalized by POSIX. The field contains a comma separated list containing the user's full name, office phone, office number, and home phone number. On most systems, only the user's full name is available. |
dir | This element contains the absolute path to the home directory of the user. |
shell | The shell element contains the absolute path to the executable of the user's default shell. |
Returns an associative array containing information about a user referenced by a numeric user ID, passed in the uid parameter.
The array elements returned are:
Tabulka 1. The user information array
Element | Description |
---|---|
name | The name element contains the username of the user. This is a short, usually less than 16 character "handle" of the user, not her real, full name. |
passwd | The passwd element contains the user's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead. |
uid | User ID, should be the same as the uid parameter used when calling the function, and hence redundant. |
gid | The group ID of the user. Use the function posix_getgrgid() to resolve the group name and a list of its members. |
gecos | GECOS is an obsolete term that refers to the finger information field on a Honeywell batch processing system. The field, however, lives on, and its contents have been formalized by POSIX. The field contains a comma separated list containing the user's full name, office phone, office number, and home phone number. On most systems, only the user's full name is available. |
dir | This element contains the absolute path to the home directory of the user. |
shell | The shell element contains the absolute path to the executable of the user's default shell. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Return the sid of the process pid. If pid is 0, the sid of the current process is returned.
This is not a POSIX function, but is common on System V systems. If your system does not support this function at system level, this PHP function will always return FALSE.
Return the numeric real user ID of the current process. See also posix_getpwuid() for information on how to convert this into a useable username.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Send the signal sig to the process with the process identifier pid. Returns FALSE, if unable to send the signal, TRUE otherwise.
See also the kill(2) manual page of your POSIX system, which contains additional information about negative process identifiers, the special pid 0, the special pid -1, and the signal number 0.
posix_mkfifo() creates a special FIFO file which exists in the file system and acts as a bidirectional communication endpoint for processes.
The second parameter mode has to be given in octal notation (e.g. 0644). The permission of the newly created FIFO also depends on the setting of the current umask(). The permissions of the created file are (mode & ~umask).
Poznßmka: Pokud je zapnut bezpeΦn² re╛im (safe-mode), PHP kontroluje, zda adresß°, ve kterΘm pracujete, mß stejnΘ UID jako spu╣t∞n² skript.
Set the effective group ID of the current process. This is a privileged function and you need appropriate privileges (usually root) on your system to be able to perform this function.
Returns TRUE on success, FALSE otherwise.
Set the real user ID of the current process. This is a privileged function and you need appropriate privileges (usually root) on your system to be able to perform this function.
Returns TRUE on success, FALSE otherwise. See also posix_setgid().
Set the real group ID of the current process. This is a privileged function and you need appropriate privileges (usually root) on your system to be able to perform this function. The appropriate order of function calls is posix_setgid() first, posix_setuid() last.
Returns TRUE on success, FALSE otherwise.
Let the process pid join the process group pgid. See POSIX.1 and the setsid(2) manual page on your POSIX system for more informations on process groups and job control. Returns TRUE on success, FALSE otherwise.
Make the current process a session leader. See POSIX.1 and the setsid(2) manual page on your POSIX system for more informations on process groups and job control. Returns the session id.
Set the real user ID of the current process. This is a privileged function and you need appropriate privileges (usually root) on your system to be able to perform this function.
Returns TRUE on success, FALSE otherwise. See also posix_setgid().
(PHP 4 >= 4.2.0)
posix_strerror -- Retrieve the system error message associated with the given errno.Returns the POSIX system error message associated with the given errno. If errno is 0, then the string "Success" is returned. The function posix_get_last_error() is used for retrieving the last POSIX errno.
See also posix_get_last_error().
Returns a hash of strings with information about the current process CPU usage. The indices of the hash are
ticks - the number of clock ticks that have elapsed since reboot.
utime - user time used by the current process.
stime - system time used by the current process.
cutime - user time used by current process and children.
cstime - system time used by current process and children.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Returns a hash of strings with information about the system. The indices of the hash are
sysname - operating system name (e.g. Linux)
nodename - system name (e.g. valiant)
release - operating system release (e.g. 2.2.10)
version - operating system version (e.g. #4 Tue Jul 20 17:01:36 MEST 1999)
machine - system architecture (e.g. i586)
domainname - DNS domainname (e.g. php.net)
domainname is a GNU extension and not part of POSIX.1, so this field is only available on GNU systems or when using the GNU libc.
Posix requires that you must not make any assumptions about the format of the values, e.g. you cannot rely on three digit version numbers or anything else returned by this function.
PostgreSQL database is Open Source product and available without cost. Postgres, developed originally in the UC Berkeley Computer Science Department, pioneered many of the object-relational concepts now becoming available in some commercial databases. It provides SQL92/SQL99 language support, transactions, referential integrity, stored procedures and type extensibility. PostgreSQL is an open source descendant of this original Berkeley code.
To use PostgreSQL support, you need PostgreSQL 6.5 or later, PostgreSQL 7.0 or later to enable all PostgreSQL module features. PostgreSQL supports many character encoding including multibyte character encoding. The current version and more information about PostgreSQL is available at http://www.postgresql.org/ and http://techdocs.postgresql.org/.
In order to enable PostgreSQL support, --with-pgsql[=DIR] is required when you compile PHP. DIR is the PostgreSQL base install directory, defaults to /usr/local/pgsql. If shared object module is available, PostgreSQL module may be loaded using extension directive in php.ini or dl() function.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. PostgreSQL configuration options
Name | Default | Changeable |
---|---|---|
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM |
pgsql.max_links | "-1" | PHP_INI_SYSTEM |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM |
pgsql.ignore_notice | "0" | PHP_INI_ALL |
pgsql.log_notice | "0" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to allow persistent Postgres connections.
The maximum number of persistent Postgres connections per process.
The maximum number of Postgres connections per process, including persistent connections.
Detect broken persistent links with pg_pconnect(). Needs a little overhead.
Whether or not to ignore PostgreSQL backend notices.
Whether or not to log PostgreSQL backends notice messages. The PHP directive pgsql.ignore_notice must be off in order to log notice messages.
Varovßnφ |
Using the PostgreSQL module with PHP 4.0.6 is not recommended due to a bug in the notice message handling code. Use 4.1.0 or later. |
Varovßnφ | ||||||||||||||||||||||||||||||||||||||||||||||
PostgreSQL function names will be changed in 4.2.0 release to confirm to current coding standards. Most of new names will have additional underscores, e.g. pg_lo_open(). Some functions are renamed to different name for consistency. e.g. pg_exec() to pg_query(). Older names can be used in 4.2.0 and a few releases from 4.2.0, but they may be deleted in the future. Tabulka 2. Function names changed
The old pg_connect()/pg_pconnect() syntax will be deprecated to support asynchronous connections in the future. Please use a connection string for pg_connect() and pg_pconnect(). |
Not all functions are supported by all builds. It depends on your libpq (The PostgreSQL C Client interface) version and how libpq is compiled. If there is missing function, libpq does not support the feature required for the function.
It is also important that you do not use an older libpq than the PostgreSQL Server to which you will be connecting. If you use libpq older than PostgreSQL Server expects, you may have problems.
Since version 6.3 (03/02/1998) PostgreSQL uses unix domain sockets by default. TCP port will NOT be opened by default. A table is shown below describing these new connection possibilities. This socket will be found in /tmp/.s.PGSQL.5432. This option can be enabled with the '-i' flag to postmaster and it's meaning is: "listen on TCP/IP sockets as well as Unix domain sockets".
Tabulka 3. Postmaster and PHP
Postmaster | PHP | Status |
---|---|---|
postmaster & | pg_connect("dbname=MyDbName"); | OK |
postmaster -i & | pg_connect("dbname=MyDbName"); | OK |
postmaster & | pg_connect("host=localhost dbname=MyDbName"); | Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php on line 20. |
postmaster -i & | pg_connect("host=localhost dbname=MyDbName"); | OK |
A connection to PostgreSQL server can be established with the following value pairs set in the command string: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword ");
The previous syntax of: $conn = pg_connect ("host", "port", "options", "tty", "dbname") has been deprecated.
Environmental variables affect PostgreSQL server/client behavior. For example, PostgreSQL module will lookup PGHOST environment variable when the hostname is omitted in the connection string. Supported environment variables are different from version to version. Refer to PostgreSQL Programmer's Manual (libpq - Environment Variables) for details.
Make sure you set environment variables for appropriate user. Use $_ENV or getenv() to check which environment variables are available to the current process.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Starting with PostgreSQL 7.1.0, you can store up to 1GB into a field of type text. In older versions, this was limited to the block size (default was 8KB, maximum was 32KB, defined at compile time)
To use the large object (lo) interface, it is required to enclose large object functions within a transaction block. A transaction block starts with a SQL statement BEGIN and if the transaction was valid ends with COMMIT or END. If the transaction fails the transaction should be closed with ROLLBACK or ABORT.
P°φklad 2. Using Large Objects
|
pg_affected_rows() returns the number of tuples (instances/records/rows) affected by INSERT, UPDATE, and DELETE queries executed by pg_query(). If no tuple is affected by this function, it will return 0.
Poznßmka: This function used to be called pg_cmdtuples().
See also pg_query() and pg_num_rows().
pg_cancel_query() cancel asynchronous query sent by pg_send_query(). You cannot cancel query executed by pg_query().
See also pg_send_query() and pg_connection_busy().
pg_client_encoding() returns the client encoding as the string. The returned string should be either : SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.
Poznßmka: This function requires PHP-4.0.3 or higher and PostgreSQL-7.0 or higher. If libpq is compiled without multibyte encoding support, pg_set_client_encoding() always return "SQL_ASCII". Supported encoding depends on PostgreSQL version. Refer to PostgreSQL manual for details to enable multibyte support and encoding supported.
The function used to be called pg_clientencoding().
See also pg_set_client_encoding().
pg_close() closes the non-persistent connection to a PostgreSQL database associated with the given connection resource. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: Using pg_close() is not usually necessary, as non-persistent open connections are automatically closed at the end of the script.
If there is open large object resource on the connection, do not close the connection before closing all large object resources.
pg_connect() returns a connection resource that is needed by other PostgreSQL functions.
pg_connect() opens a connection to a PostgreSQL database specified by the connection_string. It returns a connection resource on success. It returns FALSE if the connection could not be made. connection_string should be a quoted string.
P°φklad 1. Using pg_connect()
|
If a second call is made to pg_connect() with the same connection_string, no new connection will be established, but instead, the connection resource of the already opened connection will be returned. You can have multiple connections to the same database if you use different connection strings.
The old syntax with multiple parameters $conn = pg_connect("host", "port", "options", "tty", "dbname") has been deprecated.
See also pg_pconnect(), pg_close(), pg_host(), pg_port(), pg_tty(), pg_options() and pg_dbname().
pg_connection_busy() returns TRUE if the connection is busy. If it is busy, a previous query is still executing. If pg_get_result() is called, it will be blocked.
See also pg_connection_status() and pg_get_result().
pg_connection_reset() resets the connection. It is useful for error recovery. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pg_connect(), pg_pconnect() and pg_connection_status().
pg_connection_status() returns a connection status. Possible statuses are PGSQL_CONNECTION_OK and PGSQL_CONNECTION_BAD. The return value 0 as integer indicates a valid connection.
See also pg_connection_busy().
pg_convert() checks and converts the values in assoc_array into suitable values for use in a SQL statement. Precondition for pg_convert() is the existence of a table table_name which has at least as many columns as assoc_array has elements. The fieldnames as well as the fieldvalues in table_name must match the indices and values of assoc_array. Returns an array with the converted values on success, FALSE otherwise.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_meta_data().
pg_copy_from() insert records into a table from rows. It issues COPY FROM SQL command internally to insert records. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also pg_copy_to().
pg_copy_to() copies a table to an array. It issues COPY TO SQL command internally to insert records. The resulting array is returned. It returns FALSE on failure.
See also pg_copy_from().
pg_dbname() returns the name of the database that the given PostgreSQL connection resource. It returns FALSE, if connection is not a valid PostgreSQL connection resource.
pg_delete() deletes record condition specified by assoc_array which has field=>value. If option is specified, pg_convert() is applied to assoc_array with specified option.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_convert().
pg_end_copy() syncs the PostgreSQL frontend (usually a web server process) with the PostgreSQL server after doing a copy operation performed by pg_put_line(). pg_end_copy() must be issued, otherwise the PostgreSQL server may get out of sync with the frontend and will report an error. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
For further details and an example, see also pg_put_line().
pg_escape_bytea() escapes string for bytea datatype. It returns escaped string.
Poznßmka: When you SELECT bytea type, PostgreSQL returns octal byte value prefixed by \ (e.g. \032). Users are supposed to convert back to binary format by yourself.
This function requires PostgreSQL 7.2 or later. With PostgreSQL 7.2.0 and 7.2.1, bytea type must be casted when you enable multi-byte support. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 or later does not need cast. Exception is when client and backend character encoding does not match, there may be multi-byte stream error. User must cast to bytea to avoid this error.
See also pg_unescape_bytea() and pg_escape_string().
pg_escape_string() escapes string for text/char datatype. It returns escaped string for PostgreSQL. Use of this function is recommended instead of addslashes().
Poznßmka: This function requires PostgreSQL 7.2 or later.
See also pg_escape_bytea()
pg_fetch_all() returns an array that contains all rows (tuples/records) in result resource. It returns FALSE, if there are no rows.
See also pg_fetch_row(), pg_fetch_array(), pg_fetch_object() and pg_fetch_result().
pg_fetch_array() returns an array that corresponds to the fetched row (tuples/records). It returns FALSE, if there are no more rows.
pg_fetch_array() is an extended version of pg_fetch_row(). In addition to storing the data in the numeric indices (field index) to the result array, it also stores the data in associative indices (field name) by default.
row is row (record) number to be retrieved. First row is 0.
result_type is an optional parameter that controls how the return value is initialized. result_type is a constant and can take the following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH. pg_fetch_array() returns associative array that has field name as key for PGSQL_ASSOC, field index as key with PGSQL_NUM and both field name/index as key with PGSQL_BOTH. Default is PGSQL_BOTH.
Poznßmka: result_type was added in PHP 4.0.
pg_fetch_array() is NOT significantly slower than using pg_fetch_row(), while it provides a significant ease of use.
P°φklad 1. pg_fetch_array() example
|
Poznßmka: From 4.1.0, row became optional. Calling pg_fetch_array() will increment internal row counter by 1.
See also pg_fetch_row(), pg_fetch_object() and pg_fetch_result().
pg_fetch_assoc() returns an associative array that corresponds to the fetched row (tuples/records). It returns FALSE, if there are no more rows.
pg_fetch_assoc() is equivalent to calling pg_fetch_array() with PGSQL_ASSOC for the optional third parameter. It only returns an associative array. If you need the numeric indices, use pg_fetch_row().
row is row (record) number to be retrieved. First row is 0.
pg_fetch_assoc() is NOT significantly slower than using pg_fetch_row(), while it provides a significant ease of use.
P°φklad 1. pg_fetch_assoc() example
|
See also pg_fetch_row(), pg_fetch_array(), pg_fetch_object() and pg_fetch_result().
pg_fetch_object() returns an object with properties that correspond to the fetched row. It returns FALSE if there are no more rows or error.
pg_fetch_object() is similar to pg_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).
row is row (record) number to be retrieved. First row is 0.
Speed-wise, the function is identical to pg_fetch_array(), and almost as quick as pg_fetch_row() (the difference is insignificant).
Poznßmka: From 4.1.0, row is optional.
From 4.3.0, result_type is default to PGSQL_ASSOC while older versions' default was PGSQL_BOTH. There is no use for numeric property, since numeric property name is invalid in PHP.
result_type may be deleted in future versions.
P°φklad 1. pg_fetch_object() example
|
Poznßmka: From 4.1.0, row became optional. Calling pg_fetch_object() will increment internal row counter counter by 1.
See also pg_query(), pg_fetch_array(), pg_fetch_assoc(), pg_fetch_row() and pg_fetch_result().
pg_fetch_result() returns values from a result resource returned by pg_query(). row is integer. field is field name (string) or field index (integer). The row and field specify what cell in the table of results to return. Row numbering starts from 0. Instead of naming the field, you may use the field index as an unquoted number. Field indices start from 0.
PostgreSQL has many built in types and only the basic ones are directly supported here. All forms of integer types are returned as integer values. All forms of float, and real types are returned as float values. Boolean is returned as "t" or "f". All other types, including arrays are returned as strings formatted in the same default PostgreSQL manner that you would see in the psql program.
pg_fetch_row() fetches one row of data from the result associated with the specified result resource. The row (record) is returned as an array. Each result column is stored in an array offset, starting at offset 0.
It returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
P°φklad 1. pg_fetch_row() example
|
Poznßmka: From 4.1.0, row became optional. Calling pg_fetch_row() will increment internal row counter by 1.
See also pg_query(), pg_fetch_array(), pg_fetch_object() and pg_fetch_result().
pg_field_is_null() tests if a field is NULL or not. It returns 1 if the field in the given row is NULL. It returns 0 if the field in the given row is NOT NULL. Field can be specified as column index (number) or fieldname (string). Row numbering starts at 0.
P°φklad 1. pg_field_is_null() example
|
Poznßmka: This function used to be called pg_fieldisnull().
pg_field_name() returns the name of the field occupying the given field_number in the given PostgreSQL result resource. Field numbering starts from 0.
P°φklad 1. Getting informations about fields
The above example would produce the following output:
|
Poznßmka: This function used to be called pg_fieldname().
See also pg_field_num().
pg_field_num() will return the number of the column (field) slot that corresponds to the field_name in the given PostgreSQL result resource. Field numbering starts at 0. This function will return -1 on error.
See the example given at the pg_field_name() page.
Poznßmka: This function used to be called pg_fieldnum().
See also pg_field_name().
pg_field_prtlen() returns the actual printed length (number of characters) of a specific value in a PostgreSQL result. Row numbering starts at 0. This function will return -1 on an error.
See the example given at the pg_field_name() page.
Poznßmka: This function used to be called pg_fieldprtlen().
See also pg_field_size().
pg_field_size() returns the internal storage size (in bytes) of the field number in the given PostgreSQL result. Field numbering starts at 0. A field size of -1 indicates a variable length field. This function will return FALSE on error.
See the example given at the pg_field_name() page.
Poznßmka: This function used to be called pg_fieldsize().
See also pg_field_prtlen() and pg_field_type().
pg_field_type() returns a string containing the type name of the given field_number in the given PostgreSQL result resource. Field numbering starts at 0.
See the example given at the pg_field_name() page.
Poznßmka: This function used to be called pg_fieldtype().
See also pg_field_prtlen() and pg_field_name().
pg_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script is finished. But, if you are sure you are not going to need the result data anymore in a script, you may call pg_free_result() with the result resource as an argument and the associated result memory will be freed. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: This function used to be called pg_freeresult().
See also pg_query().
pg_get_notify() gets notify message sent by NOTIFY SQL command. To receive notify messages, LISTEN SQL command must be issued. If there is notify message on the connection, array contains message name and backend PID is returned. If there is no message, FALSE is returned.
See also pg_get_pid()
P°φklad 1. PostgreSQL NOTIFY message
|
pg_get_pid() gets backend (database server process) PID. PID is useful to check if NOTIFY message is sent from other process or not.
See also pg_get_notify().
pg_get_result() get result resource from async query executed by pg_send_query(). pg_send_query() can send multiple queries to PostgreSQL server and pg_get_result() is used to get query result one by one. It returns result resource. If there is no more results, it returns FALSE.
pg_host() returns the host name of the given PostgreSQL connection resource is connected to.
See also pg_connect() and pg_pconnect().
pg_insert() inserts the values of assoc_array into the table specified by table_name. table_name must at least have as many columns as assoc_array has elements. The fieldnames as well as the fieldvalues in table_name must match the indices and values of assoc_array. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. If options is specified, pg_insert() is applied to assoc_array with specified option.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_convert().
pg_last_error() returns the last error message for given connection.
Error messages may be overwritten by internal PostgreSQL(libpq) function calls. It may not return appropriate error message, if multiple errors are occurred inside a PostgreSQL module function.
Use pg_result_error(), pg_result_status() and pg_connection_status() for better error handling.
Poznßmka: This function used to be called pg_errormessage().
See also pg_result_error().
pg_last_notice() returns the last notice message from the PostgreSQL server specified by connection. The PostgreSQL server sends notice messages in several cases, e.g. if the transactions can't be continued. With pg_last_notice(), you can avoid issuing useless queries, by checking whether the notice is related to the transaction or not.
Varovßnφ |
This function is EXPERIMENTAL and it is not fully implemented yet. pg_last_notice() was added in PHP 4.0.6. However, PHP 4.0.6 has problem with notice message handling. Use of the PostgreSQL module with PHP 4.0.6 is not recommended even if you are not using pg_last_notice(). This function is fully implemented in PHP 4.3.0. PHP earlier than PHP 4.3.0 ignores database connection parameter. |
Notice message tracking can be set to optional by setting 1 for pgsql.ignore_notice in php.ini from PHP 4.3.0.
Notice message logging can be set to optional by setting 0 for pgsql.log_notice in php.ini from PHP 4.3.0. Unless pgsql.ignore_notice is set to 0, notice message cannot be logged.
See also pg_query() and pg_last_error().
pg_last_oid() is used to retrieve the oid assigned to an inserted tuple (record) if the result resource is used from the last command sent via pg_query() and was an SQL INSERT. Returns a positive integer if there was a valid oid. It returns FALSE if an error occurs or the last command sent via pg_query() was not an INSERT or INSERT is failed.
OID field became an optional field from PostgreSQL 7.2. When OID field is not defined in a table, programmer must use pg_result_status() to check if record is is inserted successfully or not.
Poznßmka: This function used to be called pg_getlastoid().
See also pg_query() and pg_result_status()
pg_lo_close() closes a Large Object. large_object is a resource for the large object from pg_lo_open().
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_loclose().
See also pg_lo_open(), pg_lo_create() and pg_lo_import().
pg_lo_create() creates a Large Object and returns the oid of the large object. connection specifies a valid database connection opened by pg_connect() or pg_pconnect(). PostgreSQL access modes INV_READ, INV_WRITE, and INV_ARCHIVE are not supported, the object is created always with both read and write access. INV_ARCHIVE has been removed from PostgreSQL itself (version 6.3 and above). It returns large object oid, otherwise it returns FALSE if an error occurred.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_locreate().
The oid argument specifies oid of the large object to export and the pathname argument specifies the pathname of the file. It returns FALSE if an error occurred, TRUE otherwise.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_loexport().
See also pg_lo_import().
In versions before PHP 4.2.0 the syntax of this function was different, see the following definition:
int pg_lo_import ( string pathname [, resource connection])The pathname argument specifies the pathname of the file to be imported as a large object. It returns FALSE if an error occurred, oid of the just created large object otherwise.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: Pokud je zapnut bezpeΦn² re╛im (safe-mode), PHP kontroluje, zda soubory/adresß°e, se kter²mi pracujete, majφ stejnΘ UID jako spu╣t∞n² skript.
Poznßmka: This function used to be called pg_loimport().
See also pg_lo_export() and pg_lo_open().
pg_lo_open() opens a Large Object and returns large object resource. The resource encapsulates information about the connection. oid specifies a valid large object oid and mode can be either "r", "w", or "rw". It returns FALSE if there is an error.
Varovßnφ |
Do not close the database connection before closing the large object resource. |
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_loopen().
See also pg_lo_close() and pg_lo_create().
pg_lo_read_all() reads a large object and passes it straight through to the browser after sending all pending headers. Mainly intended for sending binary data like images or sound. It returns number of bytes read. It returns FALSE, if an error occurred.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_loreadall().
See also pg_lo_read().
pg_lo_read() reads at most len bytes from a large object and returns it as a string. large_object specifies a valid large object resource andlen specifies the maximum allowable size of the large object segment. It returns FALSE if there is an error.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_loread().
See also pg_lo_read_all().
pg_lo_seek() seeks position of large object resource. whence is PGSQL_SEEK_SET, PGSQL_SEEK_CUR or PGSQL_SEEK_END.
See also pg_lo_tell().
pg_lo_tell() returns current position (offset from the beginning of large object).
See also pg_lo_seek().
pg_lo_unlink() deletes a large object with the oid. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_lo_unlink().
See also pg_lo_create() and pg_lo_import().
pg_lo_write() writes at most to a large object from a variable data and returns the number of bytes actually written, or FALSE in the case of an error. large_object is a large object resource from pg_lo_open().
To use the large object (lo) interface, it is necessary to enclose it within a transaction block.
Poznßmka: This function used to be called pg_lowrite().
See also pg_lo_create() and pg_lo_open().
pg_meta_data() returns table definition for table_name as an array. If there is error, it returns FALSE
P°φklad 1. Getting table metadata
The above example would produce the following output:
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_convert().
pg_num_fields() returns the number of fields (columns) in a PostgreSQL result. The argument is a result resource returned by pg_query(). This function will return -1 on error.
Poznßmka: This function used to be called pg_numfields().
See also pg_num_rows() and pg_affected_rows().
pg_num_rows() will return the number of rows in a PostgreSQL result resource. result is a query result resource returned by pg_query(). This function will return -1 on error.
Poznßmka: Use pg_affected_rows() to get number of rows affected by INSERT, UPDATE and DELETE query.
Poznßmka: This function used to be called pg_numrows().
See also pg_num_fields() and pg_affected_rows().
pg_options() will return a string containing the options specified on the given PostgreSQL connection resource.
pg_pconnect() opens a connection to a PostgreSQL database. It returns a connection resource that is needed by other PostgreSQL functions.
For a description of the connection_string parameter, see pg_connect().
To enable persistent connection, the pgsql.allow_persistent php.ini directive must be set to "On" (which is the default). The maximum number of persistent connection can be defined with the pgsql.max_persistent php.ini directive (defaults to -1 for no limit). The total number of connections can be set with the pgsql.max_links php.ini directive.
pg_close() will not close persistent links generated by pg_pconnect().
See also pg_connect(), and the section Persistent Database Connections for more information.
pg_ping() ping database connection, try to reconnect if it is broken. It returns TRUE if connection is alive, otherwise FALSE.
See also pg_connection_status() and pg_connection_reset().
pg_port() returns the port number that the given PostgreSQL connection resource is connected to.
pg_put_line() sends a NULL-terminated string to the PostgreSQL backend server. This is useful for example for very high-speed inserting of data into a table, initiated by starting a PostgreSQL copy-operation. That final NULL-character is added automatically. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The application must explicitly send the two characters "\." on the last line to indicate to the backend that it has finished sending its data.
P°φklad 1. High-speed insertion of data into a table
|
See also pg_end_copy().
pg_query() returns a query result resource if query could be executed. It returns FALSE on failure or if connection is not a valid connection. Details about the error can be retrieved using the pg_last_error() function if connection is valid. pg_query() sends an SQL statement to the PostgreSQL database specified by the connection resource. The connection must be a valid connection that was returned by pg_connect() or pg_pconnect(). The return value of this function is an query result resource to be used to access the results from other PostgreSQL functions such as pg_fetch_array().
Poznßmka: connection is an optional parameter for pg_query(). If connection is not set, default connection is used. Default connection is the last connection made by pg_connect() or pg_pconnect().
Although connection can be omitted, it is not recommended, since it could be a cause of hard to find bug in script.
Poznßmka: This function used to be called pg_exec(). pg_exec() is still available for compatibility reasons but users are encouraged to use the newer name.
See also pg_connect(), pg_pconnect(), pg_fetch_array(), pg_fetch_object(), pg_num_rows() and pg_affected_rows().
pg_result_error() returns error message associated with result resource. Therefore, user has better chance to get better error message than pg_last_error().
See also pg_query(), pg_send_query(), pg_get_result(), pg_last_error() and pg_last_notice()
pg_result_seek() set internal row offset in result resource. It returns FALSE, if there is error.
See also pg_fetch_row(), pg_fetch_assoc(), pg_fetch_array(), pg_fetch_object() and pg_fetch_result().
pg_result_status() returns status of result resource. Possible return values are PGSQL_EMPTY_QUERY, PGSQL_COMMAND_OK, PGSQL_TUPLES_OK, PGSQL_COPY_TO, PGSQL_COPY_FROM, PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR and PGSQL_FATAL_ERROR.
See also pg_connection_status().
pg_select() selects records specified by assoc_array which has field=>value. For successful query, it returns array contains all records and fields that match the condition specified by assoc_array. If options is specified, pg_convert() is applied to assoc_array with specified option.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_convert()
pg_send_query() send asynchronous query to the connection. Unlike pg_query(), it can send multiple query to PostgreSQL and get the result one by one using pg_get_result(). Script execution is not blocked while query is executing. Use pg_connection_busy() to check connection is busy (i.e. query is executing). Query may be cancelled by calling pg_cancel_query().
Although user can send multiple query at once, user cannot send multiple query over busy connection. If query is sent while connection is busy, it waits until last query is finished and discards all result.
P°φklad 1. Asynchronous Queries
The above example would produce the following output:
|
See also pg_query(), pg_cancel_query(), pg_get_result() and pg_connection_busy().
pg_set_client_encoding() sets the client encoding and returns 0 if success or -1 if error.
encoding is the client encoding and can be either : SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250. Available encoding depends on your PostgreSQL and libpq version. Refer to PostgreSQL manual for supported encodings for your PostgreSQL.
Poznßmka: This function requires PHP-4.0.3 or higher and PostgreSQL-7.0 or higher. Supported encoding depends on PostgreSQL version. Refer to PostgreSQL manual for details.
The function used to be called pg_setclientencoding().
See also pg_client_encoding().
pg_trace() enables tracing of the PostgreSQL frontend/backend communication to a debugging file specified as pathname. To fully understand the results, one needs to be familiar with the internals of PostgreSQL communication protocol. For those who are not, it can still be useful for tracing errors in queries sent to the server, you could do for example grep '^To backend' trace.log and see what query actually were sent to the PostgreSQL server. For more information, refer to PostgreSQL manual.
pathname and mode are the same as in fopen() (mode defaults to 'w'), connection specifies the connection to trace and defaults to the last one opened.
pg_trace() returns TRUE if pathname could be opened for logging, FALSE otherwise.
See also fopen() and pg_untrace().
pg_tty() returns the tty name that server side debugging output is sent to on the given PostgreSQL connection resource.
pg_unescape_bytea() unescapes string from bytea datatype. It returns unescaped string (binary).
Poznßmka: When you SELECT bytea type, PostgreSQL returns octal byte value prefixed by \ (e.g. \032). Users are supposed to convert back to binary format by yourself.
This function requires PostgreSQL 7.2 or later. With PostgreSQL 7.2.0 and 7.2.1, bytea type must be casted when you enable multi-byte support. i.e. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 or later does not need cast. Exception is when client and backend character encoding does not match, there may be multi-byte stream error. User must cast to bytea to avoid this error.
See also pg_escape_bytea() and pg_escape_string()
Stop tracing started by pg_trace(). connection specifies the connection that was traced and defaults to the last one opened.
Returns always TRUE.
See also pg_trace().
pg_update() updates records that matches condition with data. If options is specified, pg_convert() is applied to data with specified options.
P°φklad 1. pg_update() example
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
See also pg_convert().
Process Control support in PHP implements the Unix style of process creation, program execution, signal handling and process termination. Process Control should not be enabled within a webserver environment and unexpected results may happen if any Process Control functions are used within a webserver environment.
This documentation is intended to explain the general usage of each of the Process Control functions. For detailed information about Unix process control you are encouraged to consult your systems documentation including fork(2), waitpid(2) and signal(2) or a comprehensive reference such as Advanced Programming in the UNIX Environment by W. Richard Stevens (Addison-Wesley).
PCNTL now uses ticks as the signal handle callback mechanism, which is much faster than the previous mechanism. This change follows the same semantics as using "user ticks". You use the declare() statement to specify the locations in your program where callbacks are allowed to occur. This allows you to minimize the overhead of handling asynchronous events. In the past, compiling PHP with pcntl enabled would always incur this overhead, whether or not your script actually used pcntl.
There is one adjustment that all pcntl scripts prior to PHP 4.3.0 must make for them to work which is to either to use declare() on a section where you wish to allow callbacks or to just enable it across the entire script using the new global syntax of declare().
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Process Control support in PHP is not enabled by default. You have to compile the CGI or CLI version of PHP with --enable-pcntl configuration option when compiling PHP to enable Process Control support.
Poznßmka: Currently, this module will not function on non-Unix platforms (Windows).
The following list of signals are supported by the Process Control functions. Please see your systems signal(7) man page for details of the default behavior of these signals.
This example forks off a daemon process with a signal handler.
P°φklad 1. Process Control Example
|
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The pcntl_fork() function creates a child process that differs from the parent process only in it's PID and PPID. Please see your system's fork(2) man page for specific details as to how fork works on your system.
On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and a PHP error is raised.
See also pcntl_waitpid() and pcntl_signal().
The pcntl_signal() function installs a new signal handler for the signal indicated by signo. The signal handler is set to handler which may be the name of a user created function, or either of the two global constants SIG_IGN or SIG_DFL. The optional restart_syscalls specifies whether system call restarting should be used when this signal arrives and defaults to TRUE.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The optional restart_syscalls parameter became available in PHP 4.3.0.
Poznßmka: The ability to use an object method as a callback became available in PHP 4.3.0. Note that when you set a handler to an object method, that object's reference count is increased which makes it persist until you either change the handler to something else, or your script ends.
P°φklad 1. pcntl_signal() example
|
See also pcntl_fork() and pcntl_waitpid().
The pcntl_waitpid() function suspends execution of the current process until a child as specified by the pid argument has exited, or until a signal is delivered whose action is to terminate the current process or to call a signal handling function. If a child as requested by pid has already exited by the time of the call (a so-called "zombie" process), the function returns immediately. Any system resources used by the child are freed. Please see your system's waitpid(2) man page for specific details as to how waitpid works on your system.
pcntl_waitpid() returns the process ID of the child which exited, -1 on error or zero if WNOHANG was used and no child was available
The value of pid can be one of the following:
Tabulka 1. possible values for pid
< -1 | wait for any child process whose process group ID is equal to the absolute value of pid. |
-1 | wait for any child process; this is the same behaviour that the wait function exhibits. |
0 | wait for any child process whose process group ID is equal to that of the calling process. |
> 0 | wait for the child whose process ID is equal to the value of pid. |
pcntl_waitpid() will store status information in the status parameter which can be evaluated using the following functions: pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig() and pcntl_wstopsig().
The value of options is the value of zero or more of the following two global constants OR'ed together:
Tabulka 2. possible values for options
WNOHANG | return immediately if no child has exited. |
WUNTRACED | return for children which are stopped, and whose status has not been reported. |
See also pcntl_fork(), pcntl_signal(), pcntl_wifexited(), pcntl_wifstopped(), pcntl_wifsignaled(), pcntl_wexitstatus(), pcntl_wtermsig() and pcntl_wstopsig().
Returns the return code of a terminated child. This function is only useful if pcntl_wifexited() returned TRUE.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid() and pcntl_wifexited().
Returns TRUE if the child status code represents a successful exit.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid() and pcntl_wexitstatus().
(PHP 4 >= 4.1.0)
pcntl_wifsignaled -- Returns TRUE if status code represents a termination due to a signalReturns TRUE if the child process exited because of a signal which was not caught.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid() and pcntl_signal().
Returns TRUE if the child process which caused the return is currently stopped; this is only possible if the call to pcntl_waitpid() was done using the option WUNTRACED.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid().
Returns the number of the signal which caused the child to stop. This function is only useful if pcntl_wifstopped() returned TRUE.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid() and pcntl_wifstopped().
Returns the number of the signal that caused the child process to terminate. This function is only useful if pcntl_wifsignaled() returned TRUE.
The parameter status is the status parameter supplied to a successfull call to pcntl_waitpid().
See also pcntl_waitpid(), pcntl_signal() and pcntl_wifsignaled().
Tyto funkce poskytujφ zp∙soby spou╣t∞nφ p°φkaz∙ na vlastnφm systΘmu a zp∙soby zabezpeΦenφ t∞chto p°φkaz∙.
Tyto funkce jsou rovn∞╛ blφzkΘ operßtoru zp∞tn² apostrof. Pokud pou╛φvßte bezpeΦn² re╛im, musφte takΘ pamatovat na nastavenφ direktivy safe_mode_exec_dir.
EscapeShellArg() p°idß jednoduchΘ uvozovky na zaΦßtek a konec °et∞zce a ouvozovkuje/escapes v╣echny v²skyty jednoduch²ch uvozovek, tak╛e tento °et∞zec m∙╛ete p°φmo p°edat shell funkci, p°iΦem╛ tento bude brßn jako bezpeΦn² argument. Tato funkce by se m∞la pou╛φvat k oescapovßnφ jednotliv²ch argument∙ urΦen²ch pro shell funkce pochßzejφcφch z u╛ivatelskΘho vstupu. Shell funkce zahrnujφc exec(), system() a backtick operator. Standardnφ pou╛itφ:
Viz takΘ exec(), popen(), system(), a backtick operßtor.
EscapeShellCmd() oescapuje v╣echny znaky v °et∞zci, kterΘ by se daly pou╛φt ke zneu╛itφ shellovΘho p°φkazu k vykonßnφ libovoln²ch p°φkaz∙. Tato funkce by se m∞la pou╛φvat k zabezpeΦenφ toho, aby v╣echna data pochßzejφcφ z u╛ivatelskΘho vstupu byla oescapovßna p°etφm, ne╛ budou p°edßna funkci exec() nebo system(), nebo backtick operßtoru. Standardnφ pou╛itφ:
$e = EscapeShellCmd($userinput); system("echo $e"); // tady nßs nezajφmß, jestli jsou v $e mezery $f = EscapeShellCmd($filename); system("touch \"/tmp/$f\"; ls -l \"/tmp/$f\""); // a tady ano, proto pou╛ijeme uvozovky |
Viz takΘescapeshellarg(), exec(), popen(), system(), a backtick operßtor.
exec() provßdφ p°edan² command, nicmΘn∞ nic netiskne. Pouze vracφ poslednφ °ßdek v²stupu danΘho p°φkazu. Pokud pot°ebujete provΘst p°φkaz a nechat v╣echna data z tohoto p°φkazu p°edat rovnou bez jakΘhokoli zßsahu, pou╛ijte funkci PassThru().
Pokud je p°φtomen argument array, p°edanΘ pole se naplnφ v╣emi °ßdky v²stupu danΘho p°φkazu. Pozn.: Pokud toto pole u╛ obsahuje n∞jakΘ prvky, exec() p°ipojφ tento v²stup na konec tohoto pole. Pokud nechcete, aby tato funkce p°ipojovala prvky na konec danΘho pole, zavolejte na toto pole unset() p°edtφm, ne╛ ho p°edßte funkci exec().
Pokud je vedle argumentu array p°φtomen argument return_var, nßvratovß hodnota provedenΘho p°φkazu se zapφ╣e do tΘto prom∞nnΘ.
Pozn.: Pokud chcete pou╛φvat v tΘto funkci data z u╛ivatelskΘho vstupu, m∞li byste pou╛φvat EscapeShellCmd(), abyste m∞li jistotu, ╛e u╛ivatelΘ nevmanipulujφ systΘm do provßd∞nφ libovoln²ch p°φkaz∙.
Pozn.: Pokud touto funkcφ nastartujete n∞jak² program a chcete ho nechat b∞╛et v pozadφ, musφte se zajistit p°esm∞rovßnφ v²stupu z tohoto programu do souboru nebo jineho v²stupnφho streamu, jinak se PHP zasekne a╛ do ukonΦenφ b∞hu tohoto programu.
Viz takΘsystem(), PassThru(), popen(), EscapeShellCmd(), a backtick operßtor.
Funkce passthru() se podobß funkci exec() v tom ohledu, ╛e provede command. Pokud je p°φtomen argument return_var, nßvratovß hodnota tohoto p°φkazu se umφstφ sem. Tato funkce by se m∞la pou╛φvat mφsto exec() a system(), pokud jsou v²stupem danΘho p°φkazu binßrnφ data, kterß je pot°eba odeslat p°φmo do browseru. B∞╛n²m pou╛itφm tΘto funkce vykonat nap°. pbmplus utility, kterΘ mohou poslat stream obrßzku na stdout. Nastavenφm content-type na image/gif a zavolßnφm pbmplus programu k odeslßnφ gifu na stdout gifu m∙╛ete vytvo°it PHP skripty, kterΘ p°φmo tvo°φ obrßzky.
Pozn.: Pokud touto funkcφ nastartujete n∞jak² program a chcete ho nechat b∞╛et v pozadφ, musφte se zajistit p°esm∞rovßnφ v²stupu z tohoto programu do souboru nebo jineho v²stupnφho streamu, jinak se PHP zasekne a╛ do ukonΦenφ b∞hu tohoto programu.
Viz takΘexec(), system(), popen(), EscapeShellCmd(), a backtick operßtor.
(PHP 4 >= 4.3.0)
proc_close -- Close a process opened by proc_open() and return the exit code of that process.proc_close() is similar to pclose() except that it only works on processes opened by proc_open(). proc_close() waits for the process to terminate, and returns it's exit code. If you have open pipes to that process, you should fclose() them prior to calling this function in order to avoid a deadlock - the child process may not be able to exit while the pipes are open.
proc_get_status() fetches data about a process opened using proc_open(). The collected information is returned in an array containing the following elements:
element | type | description |
---|---|---|
command | string | The command string that was passed to proc_open() |
pid | int | process id |
running | bool | TRUE if the process is still running, FALSE if it has terminated |
signaled | bool | TRUE if the child process has been terminated by an uncaught signal. Always set to FALSE on Windows. |
stopped | bool | TRUE if the child process has been stopped by a signal. Always set to FALSE on Windows. |
exitcode | int | the exit code returned by the process (which is only meaningful if running is FALSE) |
termsig | int | the number of the signal that caused the child process to terminate its execution (only meaningful if signaled is TRUE) |
stopsig | int | the number of the signal that caused the child process to stop its execution (only meaningful if stopped is TRUE) |
See also proc_open().
proc_nice() changes the priority of the current process. If an error occurs, like the user lacks permission to change the priority, an error of level E_WARNING is generated and FALSE is returned. Otherwise, TRUE is returned.
Poznßmka: proc_nice() will only exist if your system has 'nice' capabilities. 'nice' conforms to: SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3. This means that proc_nice() is not available on Windows.
proc_nice() is not related to proc_open() and its associated functions in any way.
proc_open() is similar to popen() but provides a much greater degree of control over the program execution. cmd is the command to be executed by the shell. descriptorspec is an indexed array where the key represents the descriptor number and the value represents how PHP will pass that descriptor to the child process. pipes will be set to an indexed array of file pointers that correspond to PHP's end of any pipes that are created. The return value is a resource representing the process; you should free it using proc_close() when you are finished with it.
<?php $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to ); $process = proc_open("php", $descriptorspec, $pipes); if (is_resource($process)) { // $pipes now looks like this: // 0 => writeable handle connected to child stdin // 1 => readable handle connected to child stdout // Any error output will be appended to /tmp/error-output.txt fwrite($pipes[0], "<?php echo \"Hello World!\"; ?>"); fclose($pipes[0]); while (!feof($pipes[1])) { echo fgets($pipes[1], 1024); } fclose($pipes[1]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); echo "command returned $return_value\n"; } ?> |
The file descriptor numbers in descriptorspec are not limited to 0, 1 and 2 - you may specify any valid file descriptor number and it will be passed to the child process. This allows your script to interoperate with other scripts that run as "co-processes". In particular, this is useful for passing passphrases to programs like PGP, GPG and openssl in a more secure manner. It is also useful for reading status information provided by those programs on auxiliary file descriptors.
Poznßmka: Windows compatibility: Descriptors beyond 2 (stderr) are made available to the child process as inheritable handles, but since the Windows architecture does not associate file descriptor numbers with low-level handles, the child process does not (yet) have a means of accessing those handles. Stdin, stdout and stderr work as expected.
Poznßmka: If you only need a uni-directional (one-way) process pipe, use popen() instead, as it is much easier to use.
See also stream_select(), exec(), system(), passthru(), popen(), escapeshellcmd(), and the backtick operator.
Signals a process (created using proc_open()) that it should terminate. proc_terminate() returns immediately and does not wait for the process to terminate.
The optional signal is only useful on POSIX operating systems; you may specify a signal to send to the process using the kill(2) system call. The default is SIGTERM.
proc_terminate() allows you terminate the process and continue with other tasks. You may poll the process (to see if it has stopped yet) by using the proc_get_status() function.
See also proc_open(), proc_close(), and proc_get_status().
This function is identical to the backtick operator.
Poznßmka: Tyto funkce jsou v bezpeΦnΘm re╛imu (safe-mode) deaktivovßny.
system() je verzφ stejnojmennΘ C funkce; vykonß p°edan² command a zobrazφ v²stup. Pokud jφ p°edßte prom∞nnou jako druh² argument, nßvratovß hodnota provedenΘho p°φkazu se zapφ╣e do tΘto prom∞nnΘ.
Pozn.: Pokud chcete pou╛φvat v tΘto funkci data z u╛ivatelskΘho vstupu, m∞li byste pou╛φvat EscapeShellCmd(), abyste m∞li jistotu, ╛e u╛ivatelΘ nevmanipulujφ systΘm do provßd∞nφ libovoln²ch p°φkaz∙.
Pozn.: Pokud touto funkcφ nastartujete n∞jak² program a chcete ho nechat b∞╛et v pozadφ, musφte se zajistit p°esm∞rovßnφ v²stupu z tohoto programu do souboru nebo jineho v²stupnφho streamu, jinak se PHP zasekne a╛ do ukonΦenφ b∞hu tohoto programu.
Pokud PHP b∞╛φ jako modul serveru, system() takΘ automaticky flushne v²stupnφ buffer web serveru po ka╛dΘm °ßdku v²stupu.
P°i ·sp∞chu vracφ poslednφ °ßdek v²stupu p°φkazu, p°i selhßnφ FALSE.
Pokud pot°ebujete provΘst p°φkaz a nechat v╣echna data z tohoto p°φkazu p°edat rovnou bez jakΘhokoli zßsahu, pou╛ijte funkci PassThru().
Viz takΘexec(), PassThru(), popen(), EscapeShellCmd(), a backtick operßtor.
These functions are only available under Windows 9.x, ME, NT4 and 2000. They have been added in PHP 4.0.4.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
For further details and definition of the PHP_INI_* constants see ini_set().
This function deletes the printers spool file.
handle must be a valid handle to a printer.
This function closes the printer connection. printer_close() also closes the active device context.
handle must be a valid handle to a printer.
The function creates a new brush and returns a handle to it. A brush is used to fill shapes. For an example see printer_select_brush(). color must be a color in RGB hex format, i.e. "000000" for black, style must be one of the following constants:
PRINTER_BRUSH_SOLID: creates a brush with a solid color.
PRINTER_BRUSH_DIAGONAL: creates a brush with a 45-degree upward left-to-right hatch ( / ).
PRINTER_BRUSH_CROSS: creates a brush with a cross hatch ( + ).
PRINTER_BRUSH_DIAGCROSS: creates a brush with a 45 cross hatch ( x ).
PRINTER_BRUSH_FDIAGONAL: creates a brush with a 45-degree downward left-to-right hatch ( \ ).
PRINTER_BRUSH_HORIZONTAL: creates a brush with a horizontal hatch ( - ).
PRINTER_BRUSH_VERTICAL: creates a brush with a vertical hatch ( | ).
PRINTER_BRUSH_CUSTOM: creates a custom brush from an BMP file. The second parameter is used to specify the BMP instead of the RGB color code.
The function creates a new device context. A device context is used to customize the graphic objects of the document. handle must be a valid handle to a printer.
P°φklad 1. printer_create_dc() example
|
The function creates a new font and returns a handle to it. A font is used to draw text. For an example see printer_select_font(). face must be a string specifying the font face. height specifies the font height, and width the font width. The font_weight specifies the font weight (400 is normal), and can be one of the following predefined constants.
PRINTER_FW_THIN: sets the font weight to thin (100).
PRINTER_FW_ULTRALIGHT: sets the font weight to ultra light (200).
PRINTER_FW_LIGHT: sets the font weight to light (300).
PRINTER_FW_NORMAL: sets the font weight to normal (400).
PRINTER_FW_MEDIUM: sets the font weight to medium (500).
PRINTER_FW_BOLD: sets the font weight to bold (700).
PRINTER_FW_ULTRABOLD: sets the font weight to ultra bold (800).
PRINTER_FW_HEAVY: sets the font weight to heavy (900).
italic can be TRUE or FALSE, and sets whether the font should be italic.
underline can be TRUE or FALSE, and sets whether the font should be underlined.
strikeout can be TRUE or FALSE, and sets whether the font should be stroked out.
orientation specifies a rotation. For an example see printer_select_font().
The function creates a new pen and returns a handle to it. A pen is used to draw lines and curves. For an example see printer_select_pen(). color must be a color in RGB hex format, i.e. "000000" for black, width specifies the width of the pen whereas style must be one of the following constants:
PRINTER_PEN_SOLID: creates a solid pen.
PRINTER_PEN_DASH: creates a dashed pen.
PRINTER_PEN_DOT: creates a dotted pen.
PRINTER_PEN_DASHDOT: creates a pen with dashes and dots.
PRINTER_PEN_DASHDOTDOT: creates a pen with dashes and double dots.
PRINTER_PEN_INVISIBLE: creates an invisible pen.
The function deletes the selected brush. For an example see printer_select_brush(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. handle must be a valid handle to a brush.
The function deletes the device context. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. For an example see printer_create_dc(). handle must be a valid handle to a printer.
The function deletes the selected font. For an example see printer_select_font(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. handle must be a valid handle to a font.
The function deletes the selected pen. For an example see printer_select_pen(). Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. handle must be a valid handle to a pen.
The function simply draws an bmp the bitmap filename at position x, y. handle must be a valid handle to a printer.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The function simply draws an chord. handle must be a valid handle to a printer.
rec_x is the upper left x coordinate of the bounding rectangle.
rec_y is the upper left y coordinate of the bounding rectangle.
rec_x1 is the lower right x coordinate of the bounding rectangle.
rec_y1 is the lower right y coordinate of the bounding rectangle.
rad_x is x coordinate of the radial defining the beginning of the chord.
rad_y is y coordinate of the radial defining the beginning of the chord.
rad_x1 is x coordinate of the radial defining the end of the chord.
rad_y1 is y coordinate of the radial defining the end of the chord.
P°φklad 1. printer_draw_chord() example
|
The function simply draws an ellipse. handle must be a valid handle to a printer.
ul_x is the upper left x coordinate of the ellipse.
ul_y is the upper left y coordinate of the ellipse.
lr_x is the lower right x coordinate of the ellipse.
lr_y is the lower right y coordinate of the ellipse.
P°φklad 1. printer_draw_elipse() example
|
The function simply draws a line from position from_x, from_y to position to_x, to_y using the selected pen. printer_handle must be a valid handle to a printer.
P°φklad 1. printer_draw_line() example
|
The function simply draws an pie. handle must be a valid handle to a printer.
rec_x is the upper left x coordinate of the bounding rectangle.
rec_y is the upper left y coordinate of the bounding rectangle.
rec_x1 is the lower right x coordinate of the bounding rectangle.
rec_y1 is the lower right y coordinate of the bounding rectangle.
rad1_x is x coordinate of the first radial's ending.
rad1_y is y coordinate of the first radial's ending.
rad2_x is x coordinate of the second radial's ending.
rad2_y is y coordinate of the second radial's ending.
P°φklad 1. printer_draw_pie() example
|
The function simply draws a rectangle.
handle must be a valid handle to a printer.
ul_x is the upper left x coordinate of the rectangle.
ul_y is the upper left y coordinate of the rectangle.
lr_x is the lower right x coordinate of the rectangle.
lr_y is the lower right y coordinate of the rectangle.
P°φklad 1. printer_draw_rectangle() example
|
(no version information, might be only in CVS)
printer_draw_roundrect -- Draw a rectangle with rounded cornersThe function simply draws a rectangle with rounded corners.
handle must be a valid handle to a printer.
ul_x is the upper left x coordinate of the rectangle.
ul_y is the upper left y coordinate of the rectangle.
lr_x is the lower right x coordinate of the rectangle.
lr_y is the lower right y coordinate of the rectangle.
width is the width of the ellipse.
height is the height of the ellipse.
P°φklad 1. printer_draw_roundrect() example
|
The function simply draws text at position x, y using the selected font. printer_handle must be a valid handle to a printer.
P°φklad 1. printer_draw_text() example
|
Closes a new document in the printer spooler. The document is now ready for printing. For an example see printer_start_doc(). handle must be a valid handle to a printer.
The function closes the active page in the active document. For an example see printer_start_doc(). handle must be a valid handle to a printer.
(no version information, might be only in CVS)
printer_get_option -- Retrieve printer configuration dataThe function retrieves the configuration setting of option. handle must be a valid handle to a printer. Take a look at printer_set_option() for the settings that can be retrieved, additionally the following settings can be retrieved:
PRINTER_DEVICENAME returns the devicename of the printer.
PRINTER_DRIVERVERSION returns the printer driver version.
(no version information, might be only in CVS)
printer_list -- Return an array of printers attached to the serverThe function enumerates available printers and their capabilities. level sets the level of information request. Can be 1,2,4 or 5. enumtype must be one of the following predefined constants:
PRINTER_ENUM_LOCAL: enumerates the locally installed printers.
PRINTER_ENUM_NAME: enumerates the printer of name, can be a server, domain or print provider.
PRINTER_ENUM_SHARED: this parameter can't be used alone, it has to be OR'ed with other parameters, i.e. PRINTER_ENUM_LOCAL to detect the locally shared printers.
PRINTER_ENUM_DEFAULT: (Win9.x only) enumerates the default printer.
PRINTER_ENUM_CONNECTIONS: (WinNT/2000 only) enumerates the printers to which the user has made connections.
PRINTER_ENUM_NETWORK: (WinNT/2000 only) enumerates network printers in the computer's domain. Only valid if level is 1.
PRINTER_ENUM_REMOTE: (WinNT/2000 only) enumerates network printers and print servers in the computer's domain. Only valid if level is 1.
The function calculates the logical font height of height. handle must be a valid handle to a printer.
This function tries to open a connection to the printer devicename, and returns a handle on success or FALSE on failure.
If no parameter was given it tries to open a connection to the default printer (if not specified in php.ini as printer.default_printer, PHP tries to detect it).
printer_open() also starts a device context.
The function selects a brush as the active drawing object of the actual device context. A brush is used to fill shapes. If you draw an rectangle the brush is used to draw the shapes, while the pen is used to draw the border. If you haven't selected a brush before drawing shapes, the shape won't be filled. printer_handle must be a valid handle to a printer. brush_handle must be a valid handle to a brush.
P°φklad 1. printer_select_brush() example
|
The function selects a font to draw text. printer_handle must be a valid handle to a printer. font_handle must be a valid handle to a font.
P°φklad 1. printer_select_font() example
|
The function selects a pen as the active drawing object of the actual device context. A pen is used to draw lines and curves. I.e. if you draw a single line the pen is used. If you draw an rectangle the pen is used to draw the borders, while the brush is used to fill the shape. If you haven't selected a pen before drawing shapes, the shape won't be outlined. printer_handle must be a valid handle to a printer. pen_handle must be a valid handle to a pen.
P°φklad 1. printer_select_pen() example
|
(no version information, might be only in CVS)
printer_set_option -- Configure the printer connectionThe function sets the following options for the current connection. handle must be a valid handle to a printer. For option can be one of the following constants:
PRINTER_COPIES: sets how many copies should be printed, value must be an integer.
PRINTER_MODE: specifies the type of data (text, raw or emf), value must be a string.
PRINTER_TITLE: specifies the name of the document, value must be a string.
PRINTER_ORIENTATION: specifies the orientation of the paper, value can be either PRINTER_ORIENTATION_PORTRAIT or PRINTER_ORIENTATION_LANDSCAPE
PRINTER_RESOLUTION_Y: specifies the y-resolution in DPI, value must be an integer.
PRINTER_RESOLUTION_X: specifies the x-resolution in DPI, value must be an integer.
PRINTER_PAPER_FORMAT: specifies the a predefined paper format, set value to PRINTER_FORMAT_CUSTOM if you want to specify a custom format with PRINTER_PAPER_WIDTH and PRINTER_PAPER_LENGTH. value can be one of the following constants.
PRINTER_FORMAT_CUSTOM: let's you specify a custom paper format.
PRINTER_FORMAT_LETTER: specifies standard letter format (8 1/2- by 11-inches).
PRINTER_FORMAT_LETTER: specifies standard legal format (8 1/2- by 14-inches).
PRINTER_FORMAT_A3: specifies standard A3 format (297- by 420-millimeters).
PRINTER_FORMAT_A4: specifies standard A4 format (210- by 297-millimeters).
PRINTER_FORMAT_A5: specifies standard A5 format (148- by 210-millimeters).
PRINTER_FORMAT_B4: specifies standard B4 format (250- by 354-millimeters).
PRINTER_FORMAT_B5: specifies standard B5 format (182- by 257-millimeter).
PRINTER_FORMAT_FOLIO: specifies standard FOLIO format (8 1/2- by 13-inch).
PRINTER_PAPER_LENGTH: if PRINTER_PAPER_FORMAT is set to PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_LENGTH specifies a custom paper length in mm, value must be an integer.
PRINTER_PAPER_WIDTH: if PRINTER_PAPER_FORMAT is set to PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_WIDTH specifies a custom paper width in mm, value must be an integer.
PRINTER_SCALE: specifies the factor by which the printed output is to be scaled. the page size is scaled from the physical page size by a factor of scale/100. for example if you set the scale to 50, the output would be half of it's original size. value must be an integer.
PRINTER_BACKGROUND_COLOR: specifies the background color for the actual device context, value must be a string containing the rgb information in hex format i.e. "005533".
PRINTER_TEXT_COLOR: specifies the text color for the actual device context, value must be a string containing the rgb information in hex format i.e. "005533".
PRINTER_TEXT_ALIGN: specifies the text alignment for the actual device context, value can be combined through OR'ing the following constants:
PRINTER_TA_BASELINE: text will be aligned at the base line.
PRINTER_TA_BOTTOM: text will be aligned at the bottom.
PRINTER_TA_TOP: text will be aligned at the top.
PRINTER_TA_CENTER: text will be aligned at the center.
PRINTER_TA_LEFT: text will be aligned at the left.
PRINTER_TA_RIGHT: text will be aligned at the right.
The function creates a new document in the printer spooler. A document can contain multiple pages, it's used to schedule the print job in the spooler. handle must be a valid handle to a printer. The optional parameter document can be used to set an alternative document name.
The function creates a new page in the active document. For an example see printer_start_doc(). handle must be a valid handle to a printer.
These functions allow you to check the spelling of a word and offer suggestions.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
To compile PHP with pspell support, you need the aspell library, available from http://aspell.sourceforge.net/.
pspell_add_to_personal() adds a word to the personal wordlist. If you used pspell_new_config() with pspell_config_personal() to open the dictionary, you can save the wordlist later with pspell_save_wordlist(). Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
pspell_add_to_session() adds a word to the wordlist associated with the current session. It is very similar to pspell_add_to_personal()
pspell_check() checks the spelling of a word and returns TRUE if the spelling is correct, FALSE if not.
pspell_clear_session() clears the current session. The current wordlist becomes blank, and, for example, if you try to save it with pspell_save_wordlist(), nothing happens.
P°φklad 1. pspell_add_to_personal()
|
pspell_config_create() has a very similar syntax to pspell_new(). In fact, using pspell_config_create() immediately followed by pspell_new_config() will produce the exact same result. However, after creating a new config, you can also use pspell_config_*() functions before calling pspell_new_config() to take advantage of some advanced functionality.
The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.
The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.
The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.
The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.
The mode parameter is the mode in which spellchecker will work. There are several modes available:
PSPELL_FAST - Fast mode (least number of suggestions)
PSPELL_NORMAL - Normal mode (more suggestions)
PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
For more information and examples, check out inline manual pspell website:http://aspell.net/.
pspell_config_ignore() should be used on a config before calling pspell_new_config(). This function allows short words to be skipped by the spellchecker. Words less then n characters will be skipped.
pspell_config_mode() should be used on a config before calling pspell_new_config(). This function determines how many suggestions will be returned by pspell_suggest().
The mode parameter is the mode in which spellchecker will work. There are several modes available:
PSPELL_FAST - Fast mode (least number of suggestions)
PSPELL_NORMAL - Normal mode (more suggestions)
PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
pspell_config_personal() should be used on a config before calling pspell_new_config(). The personal wordlist will be loaded and used in addition to the standard one after you call pspell_new_config(). If the file does not exist, it will be created. The file is also the file where pspell_save_wordlist() will save personal wordlist to. The file should be writable by whoever PHP runs as (e.g. nobody). Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
pspell_config_repl() should be used on a config before calling pspell_new_config(). The replacement pairs improve the quality of the spellchecker. When a word is misspelled, and a proper suggestion was not found in the list, pspell_store_replacement() can be used to store a replacement pair and then pspell_save_wordlist() to save the wordlist along with the replacement pairs. The file should be writable by whoever PHP runs as (e.g. nobody). Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
P°φklad 1. pspell_config_repl()
|
pspell_config_runtogether() should be used on a config before calling pspell_new_config(). This function determines whether run-together words will be treated as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
(PHP 4 >= 4.0.2)
pspell_config_save_repl -- Determine whether to save a replacement pairs list along with the wordlistpspell_config_save_repl() should be used on a config before calling pspell_new_config(). It determines whether pspell_save_wordlist() will save the replacement pairs along with the wordlist. Usually there is no need to use this function because if pspell_config_repl() is used, the replacement pairs will be saved by pspell_save_wordlist() anyway, and if it is not, the replacement pairs will not be saved. Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
pspell_new_config() opens up a new dictionary with settings specified in a config, created with with pspell_config_create() and modified with pspell_config_*() functions. This method provides you with the most flexibility and has all the functionality provided by pspell_new() and pspell_new_personal().
The config parameter is the one returned by pspell_config_create() when the config was created.
pspell_new_personal() opens up a new dictionary with a personal wordlist and returns the dictionary link identifier for use in other pspell functions. The wordlist can be modified and saved with pspell_save_wordlist(), if desired. However, the replacement pairs are not saved. In order to save replacement pairs, you should create a config using pspell_config_create(), set the personal wordlist file with pspell_config_personal(), set the file for replacement pairs with pspell_config_repl(), and open a new dictionary with pspell_new_config().
The personal parameter specifies the file where words added to the personal list will be stored. It should be an absolute filename beginning with '/' because otherwise it will be relative to $HOME, which is "/root" for most systems, and is probably not what you want.
The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.
The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.
The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.
The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.
The mode parameter is the mode in which spellchecker will work. There are several modes available:
PSPELL_FAST - Fast mode (least number of suggestions)
PSPELL_NORMAL - Normal mode (more suggestions)
PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
PSPELL_RUN_TOGETHER - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
For more information and examples, check out inline manual pspell website:http://aspell.net/.
pspell_new() opens up a new dictionary and returns the dictionary link identifier for use in other pspell functions.
The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.
The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.
The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.
The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.
The mode parameter is the mode in which spellchecker will work. There are several modes available:
PSPELL_FAST - Fast mode (least number of suggestions)
PSPELL_NORMAL - Normal mode (more suggestions)
PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
PSPELL_RUN_TOGETHER - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
For more information and examples, check out inline manual pspell website:http://aspell.net/.
pspell_save_wordlist() saves the personal wordlist from the current session. The dictionary has to be open with pspell_new_personal(), and the location of files to be saved specified with pspell_config_personal() and (optionally) pspell_config_repl(). Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
P°φklad 1. pspell_add_to_personal()
|
pspell_store_replacement() stores a replacement pair for a word, so that replacement can be returned by pspell_suggest() later. In order to be able to take advantage of this function, you have to use pspell_new_personal() to open the dictionary. In order to permanently save the replacement pair, you have to use pspell_config_personal() and pspell_config_repl() to set the path where to save your custom wordlists, and then use pspell_save_wordlist() for the changes to be written to disk. Please, note that this function will not work unless you have pspell .11.2 and aspell .32.5 or later.
P°φklad 1. pspell_store_replacement()
|
readline() funkce implementujφ rozhranφ ke GNU Readline knihovn∞. Tyto funkce poskytujφ editovatelnΘ p°φkazovΘ °ßdky. P°φkladem m∙╛e b²t zp∙sob, jak²m vßm Bash umo╛≥uje vklßdat znaky nebo listovat historiφ p°φkaz∙ pomocφ klßves pro pohyb kurzoru. Z interaktivnφ povahy tΘto knihovny vypl²vß, ╛e nenφ p°φli╣ u╛iteΦnß pro psanφ webov²ch aplikacφ, ale m∙╛e b²t u╛iteΦnß p°i psanφ skript∙, kterΘ se majφ spou╣t∞t z p°φkazovΘ °ßdky.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Abyste mohli pou╛φvat readline funkce, musφte nainstalovat libreadline. Domovskou strßnkou GNU Readline projektu je http://cnswww.cns.cwru.edu/~chet/readline/rltop.html. Udr╛uje jej Chet Ramey, kter² je takΘ autorem Bashe.
Tyto funkce m∙╛ete pou╛φvat takΘ s knihovnou libedit, ne-GPL nßhradou za knihovnu readline. Knihovna libedit je pod licencφ BSD a stßhnout lze z http://sourceforge.net/projects/libedit/.
Tato funkce zaregistruje dokonΦujφcφ funkci. Musφte zadat nßzev existujφcφ funkce, kterß p°ijφmß ΦßsteΦn² p°φkaz a vracφ pole mo╛n²ch prot∞j╣k∙. Toto je stejnß funkcionalita jakou dostanete, pokud v Bashi zmßΦknete klßvesu tab.
P°i volßnφ bez argument∙ tato funkce vrßtφ pole hodnot pro v╣echna nastavenφ, kterß readline pou╛φvß. Prvky jsou indexovßny podle nßsledujφcφch hodnot: done, end, erase_empty_line, library_version, line_buffer, mark, pending_input, point, prompt, readline_name a terminal_name.
P°i volßnφ s jednφm argumentem vrßtφ hodnotu tohoto nastavenφ. P°i volßnφ se dv∞ma argumenty se nastavenφ zmenφ na danou hodnotu.
Tato funkce vrßtφ pole celΘ historie p°φkazovΘ °ßdky. Prvky jsou indexovßny integery, poΦφnaje nulou.
Tato funkce p°eΦte historii p°φkazovΘ °ßdky ze souboru.
Tato funkce zapφ╣e historii p°φkazovΘ °ßdky do souboru.
Tato funkce vrßtφ jeden °ßdek od u╛ivatele. M∙╛ete specifikovat °et∞zec, kter² se mß u╛ivateli zobrazit jako v²zva. Z vrßcenΘho °ßdku je odstran∞na sekvence konce °ßdku. Do historie tento °ßdek musφte p°idat sami pomocφ readline_add_history().
Tento modul obsahuje rozhranφ ke GNU Recode knihovn∞, verze 3.5. GNU Recode knihovna konvertuje soubory mezi r∙zn²mi znakov²mi sadami a k≤dovßnφmi. Kdy╛ nelze dosßhnout p°esnΘ konverze, m∙╛e se uch²lit k aproximacφm. Tato knihovna rozeznßvß nebo produkuje tΘm∞° 150 r∙zn²ch znakov²ch sad, a je schopnß konvertovat soubory mezi tΘm∞° libovoln²m pßrem. Podporuje v∞t╣inu znakov²ch sad z RFC 1345.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Na svΘm systΘmu musφte mφt nainstalovanou GNU Recode 3.nebo vy╣╣φ. BalφΦek lze stßhnout z http://www.gnu.org/directory/All_GNU_Packages/recode.html.
Pokud cchete pou╛φvat funkce definovanΘ v tomto modulu, musφte zkompilovat vß╣ PHP interpretr s volbou --with-recode[=DIR].
Varovßnφ |
Padßnφ a problΘmy p°i startu PHP mohou b²t zaznamenßny kdy╛ nahrßvßte roz╣φ°enφ Recode po nahrßnφ roz╣φ°enφ mysql nebo imap. Nahrßnφ Recode p°ed t∞mito roz╣φ°enφmi problΘm vy°e╣φ. Je to kv∙li technickΘmu problΘmu spoΦφvajφcφmu v tom, ╛e ob∞ C-knihovny pou╛φvanΘ knihovnou imap a recode majφ svou vlastnφ funkci hash_lookup() a ob∞ knihovny pou╛φvanΘ mysql a recode majφ svou vlastnφ funkci hash_insert. |
P°ek≤duje soubor odkazovan² deskriptorem input do souboru odkazovanΘm deskriptorem output podle po╛adavku request. Pokud se nepoda°ilo po╛adavek provΘst, vracφ FALSE, jinak TRUE.
Tato funkce v souΦasnosti nezpracovßvß deskriptory odkazujφcφ na vzdßlenΘ soubory (URL). Oba deskriptory musφ ukazovat na mφstnφ soubory.
P°ek≤duje °et∞zec string podle po╛adavku request. Vracφ p°ek≤dovan² °et∞zec nebo FALSE, pokud nebylo mo╛nΘ provΘst po╛adavek na p°ek≤dovßnφ.
Jednoduch² po╛adavek na p°ek≤dovßnφ m∙╛e b²t "lat1..iso646-de". Detailnφ instrukce k po╛adavk∙m viz GNU Recode dokumentaci u va╣φ instalace.
Poznßmka: Toto je alias k recode_string(). Byl p°idßn v PHP 4.
The syntax for patterns used in these functions closely resembles Perl. The expression should be enclosed in the delimiters, a forward slash (/), for example. Any character can be used for delimiter as long as it's not alphanumeric or backslash (\). If the delimiter character has to be used in the expression itself, it needs to be escaped by backslash. Since PHP 4.0.4, you can also use Perl-style (), {}, [], and <> matching delimiters.
The ending delimiter may be followed by various modifiers that affect the matching. See Pattern Modifiers.
PHP also supports regular expressions using a POSIX-extended syntax using the POSIX-extended regex functions..
Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England. It is available at ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/.
Beginning with PHP 4.2.0 these functions are enabled by default. You can disable the pcre functions with --without-pcre-regex. Use --with-pcre-regex=DIR to specify DIR where PCRE's include and library files are located, if not using bundled library. For older versions you have to configure and compile PHP with --with-pcre-regex[=DIR] in order to use these functions.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Tabulka 1. PREG constants
constant | description |
---|---|
PREG_PATTERN_ORDER | Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on. This flag is only used with preg_match_all(). |
PREG_SET_ORDER | Orders results so that $matches[0] is an array of first set of matches, $matches[1] is an array of second set of matches, and so on. This flag is only used with preg_match_all(). |
PREG_OFFSET_CAPTURE | See the description of PREG_SPLIT_OFFSET_CAPTURE. This flag is available since PHP 4.3.0. |
PREG_SPLIT_NO_EMPTY | This flag tells preg_split() to return only non-empty pieces. |
PREG_SPLIT_DELIM_CAPTURE | This flag tells preg_split() to capture parenthesized expression in the delimiter pattern as well. This flag is available since PHP 4.0.5. |
PREG_SPLIT_OFFSET_CAPTURE | If this flag is set, for every occurring match the appendant string offset will also be returned. Note that this changes the return value in an array where very element is an array consisting of the matched string at offset 0 and it's string offset into subject at offset 1. This flag is available since PHP 4.3.0 and is only used for preg_split(). |
The current possible PCRE modifiers are listed below. The names in parentheses refer to internal PCRE names for these modifiers.
- i (PCRE_CASELESS)
If this modifier is set, letters in the pattern match both upper and lower case letters.
- m (PCRE_MULTILINE)
By default, PCRE treats the subject string as consisting of a single "line" of characters (even if it actually contains several newlines). The "start of line" metacharacter (^) matches only at the start of the string, while the "end of line" metacharacter ($) matches only at the end of the string, or before a terminating newline (unless D modifier is set). This is the same as Perl.
When this modifier is set, the "start of line" and "end of line" constructs match immediately following or immediately before any newline in the subject string, respectively, as well as at the very start and end. This is equivalent to Perl's /m modifier. If there are no "\n" characters in a subject string, or no occurrences of ^ or $ in a pattern, setting this modifier has no effect.
- s (PCRE_DOTALL)
If this modifier is set, a dot metacharacter in the pattern matches all characters, including newlines. Without it, newlines are excluded. This modifier is equivalent to Perl's /s modifier. A negative class such as [^a] always matches a newline character, independent of the setting of this modifier.
- x (PCRE_EXTENDED)
If this modifier is set, whitespace data characters in the pattern are totally ignored except when escaped or inside a character class, and characters between an unescaped # outside a character class and the next newline character, inclusive, are also ignored. This is equivalent to Perl's /x modifier, and makes it possible to include comments inside complicated patterns. Note, however, that this applies only to data characters. Whitespace characters may never appear within special character sequences in a pattern, for example within the sequence (?( which introduces a conditional subpattern.
- e
If this modifier is set, preg_replace() does normal substitution of backreferences in the replacement string, evaluates it as PHP code, and uses the result for replacing the search string.
Only preg_replace() uses this modifier; it is ignored by other PCRE functions.
Poznßmka: This modifier was not available in PHP 3.
- A (PCRE_ANCHORED)
If this modifier is set, the pattern is forced to be "anchored", that is, it is constrained to match only at the start of the string which is being searched (the "subject string"). This effect can also be achieved by appropriate constructs in the pattern itself, which is the only way to do it in Perl.
- D (PCRE_DOLLAR_ENDONLY)
If this modifier is set, a dollar metacharacter in the pattern matches only at the end of the subject string. Without this modifier, a dollar also matches immediately before the final character if it is a newline (but not before any other newlines). This modifier is ignored if m modifier is set. There is no equivalent to this modifier in Perl.
- S
When a pattern is going to be used several times, it is worth spending more time analyzing it in order to speed up the time taken for matching. If this modifier is set, then this extra analysis is performed. At present, studying a pattern is useful only for non-anchored patterns that do not have a single fixed starting character.
- U (PCRE_UNGREEDY)
This modifier inverts the "greediness" of the quantifiers so that they are not greedy by default, but become greedy if followed by "?". It is not compatible with Perl. It can also be set by a (?U) modifier setting within the pattern.
- X (PCRE_EXTRA)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Any backslash in a pattern that is followed by a letter that has no special meaning causes an error, thus reserving these combinations for future expansion. By default, as in Perl, a backslash followed by a letter with no special meaning is treated as a literal. There are at present no other features controlled by this modifier.
- u (PCRE_UTF8)
This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32.
The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5, with just a few differences (see below). The current implementation corresponds to Perl 5.005.
The differences described here are with respect to Perl 5.005.
By default, a whitespace character is any character that the C library function isspace() recognizes, though it is possible to compile PCRE with alternative character type tables. Normally isspace() matches space, formfeed, newline, carriage return, horizontal tab, and vertical tab. Perl 5 no longer includes vertical tab in its set of whitespace characters. The \v escape that was in the Perl documentation for a long time was never in fact recognized. However, the character itself was treated as whitespace at least up to 5.002. In 5.004 and 5.005 it does not match \s.
PCRE does not allow repeat quantifiers on lookahead assertions. Perl permits them, but they do not mean what you might think. For example, (?!a){3} does not assert that the next three characters are not "a". It just asserts that the next character is not "a" three times.
Capturing subpatterns that occur inside negative lookahead assertions are counted, but their entries in the offsets vector are never set. Perl sets its numerical variables from any such patterns that are matched before the assertion fails to match something (thereby succeeding), but only if the negative lookahead assertion contains just one branch.
Though binary zero characters are supported in the subject string, they are not allowed in a pattern string because it is passed as a normal C string, terminated by zero. The escape sequence "\\x00" can be used in the pattern to represent a binary zero.
The following Perl escape sequences are not supported: \l, \u, \L, \U, \E, \Q. In fact these are implemented by Perl's general string-handling and are not part of its pattern matching engine.
The Perl \G assertion is not supported as it is not relevant to single pattern matches.
Fairly obviously, PCRE does not support the (?{code}) construction.
There are at the time of writing some oddities in Perl 5.005_02 concerned with the settings of captured strings when part of a pattern is repeated. For example, matching "aba" against the pattern /^(a(b)?)+$/ sets $2 to the value "b", but matching "aabbaa" against /^(aa(bb)?)+$/ leaves $2 unset. However, if the pattern is changed to /^(aa(b(b))?)+$/ then $2 (and $3) get set. In Perl 5.004 $2 is set in both cases, and that is also TRUE of PCRE. If in the future Perl changes to a consistent state that is different, PCRE may change to follow.
Another as yet unresolved discrepancy is that in Perl 5.005_02 the pattern /^(a)?(?(1)a|b)+$/ matches the string "a", whereas in PCRE it does not. However, in both Perl and PCRE /^(a)?a/ matched against "a" leaves $1 unset.
PCRE provides some extensions to the Perl regular expression facilities:
Although lookbehind assertions must match fixed length strings, each alternative branch of a lookbehind assertion can match a different length of string. Perl 5.005 requires them all to have the same length.
If PCRE_DOLLAR_ENDONLY is set and PCRE_MULTILINE is not set, the $ meta-character matches only at the very end of the string.
If PCRE_EXTRA is set, a backslash followed by a letter with no special meaning is faulted.
If PCRE_UNGREEDY is set, the greediness of the repetition quantifiers is inverted, that is, by default they are not greedy, but if followed by a question mark they are.
The syntax and semantics of the regular expressions supported by PCRE are described below. Regular expressions are also described in the Perl documentation and in a number of other books, some of which have copious examples. Jeffrey Friedl's "Mastering Regular Expressions", published by O'Reilly (ISBN 1-56592-257-3), covers them in great detail. The description here is intended as reference documentation.
A regular expression is a pattern that is matched against a subject string from left to right. Most characters stand for themselves in a pattern, and match the corresponding characters in the subject. As a trivial example, the pattern The quick brown fox matches a portion of a subject string that is identical to itself.
The power of regular expressions comes from the ability to include alternatives and repetitions in the pattern. These are encoded in the pattern by the use of meta-characters, which do not stand for themselves but instead are interpreted in some special way.
There are two different sets of meta-characters: those that are recognized anywhere in the pattern except within square brackets, and those that are recognized in square brackets. Outside square brackets, the meta-characters are as follows:
general escape character with several uses
assert start of subject (or line, in multiline mode)
assert end of subject (or line, in multiline mode)
match any character except newline (by default)
start character class definition
end character class definition
start of alternative branch
start subpattern
end subpattern
extends the meaning of (, also 0 or 1 quantifier, also quantifier minimizer
0 or more quantifier
1 or more quantifier
start min/max quantifier
end min/max quantifier
general escape character
negate the class, but only if the first character
indicates character range
terminates the character class
The backslash character has several uses. Firstly, if it is followed by a non-alphanumeric character, it takes away any special meaning that character may have. This use of backslash as an escape character applies both inside and outside character classes.
For example, if you want to match a "*" character, you write "\*" in the pattern. This applies whether or not the following character would otherwise be interpreted as a meta-character, so it is always safe to precede a non-alphanumeric with "\" to specify that it stands for itself. In particular, if you want to match a backslash, you write "\\".
If a pattern is compiled with the PCRE_EXTENDED option, whitespace in the pattern (other than in a character class) and characters between a "#" outside a character class and the next newline character are ignored. An escaping backslash can be used to include a whitespace or "#" character as part of the pattern.
A second use of backslash provides a way of encoding non-printing characters in patterns in a visible manner. There is no restriction on the appearance of non-printing characters, apart from the binary zero that terminates a pattern, but when a pattern is being prepared by text editing, it is usually easier to use one of the following escape sequences than the binary character it represents:
alarm, that is, the BEL character (hex 07)
"control-x", where x is any character
escape (hex 1B)
formfeed (hex 0C)
newline (hex 0A)
carriage return (hex 0D)
tab (hex 09)
character with hex code hh
character with octal code ddd, or backreference
The precise effect of "\cx" is as follows: if "x" is a lower case letter, it is converted to upper case. Then bit 6 of the character (hex 40) is inverted. Thus "\cz" becomes hex 1A, but "\c{" becomes hex 3B, while "\c;" becomes hex 7B.
After "\x", up to two hexadecimal digits are read (letters can be in upper or lower case).
After "\0" up to two further octal digits are read. In both cases, if there are fewer than two digits, just those that are present are used. Thus the sequence "\0\x\07" specifies two binary zeros followed by a BEL character. Make sure you supply two digits after the initial zero if the character that follows is itself an octal digit.
The handling of a backslash followed by a digit other than 0 is complicated. Outside a character class, PCRE reads it and any following digits as a decimal number. If the number is less than 10, or if there have been at least that many previous capturing left parentheses in the expression, the entire sequence is taken as a back reference. A description of how this works is given later, following the discussion of parenthesized subpatterns.
Inside a character class, or if the decimal number is greater than 9 and there have not been that many capturing subpatterns, PCRE re-reads up to three octal digits following the backslash, and generates a single byte from the least significant 8 bits of the value. Any subsequent digits stand for themselves. For example:
is another way of writing a space
is the same, provided there are fewer than 40 previous capturing subpatterns
is always a back reference
might be a back reference, or another way of writing a tab
is always a tab
is a tab followed by the character "3"
is the character with octal code 113 (since there can be no more than 99 back references)
is a byte consisting entirely of 1 bits
is either a back reference, or a binary zero followed by the two characters "8" and "1"
Note that octal values of 100 or greater must not be introduced by a leading zero, because no more than three octal digits are ever read.
All the sequences that define a single byte value can be used both inside and outside character classes. In addition, inside a character class, the sequence "\b" is interpreted as the backspace character (hex 08). Outside a character class it has a different meaning (see below).
The third use of backslash is for specifying generic character types:
any decimal digit
any character that is not a decimal digit
any whitespace character
any character that is not a whitespace character
any "word" character
any "non-word" character
Each pair of escape sequences partitions the complete set of characters into two disjoint sets. Any given character matches one, and only one, of each pair.
A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word". The definition of letters and digits is controlled by PCRE's character tables, and may vary if locale-specific matching is taking place (see "Locale support" above). For example, in the "fr" (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w.
These character type sequences can appear both inside and outside character classes. They each match one character of the appropriate type. If the current matching point is at the end of the subject string, all of them fail, since there is no character to match.
The fourth use of backslash is for certain simple assertions. An assertion specifies a condition that has to be met at a particular point in a match, without consuming any characters from the subject string. The use of subpatterns for more complicated assertions is described below. The backslashed assertions are
word boundary
not a word boundary
start of subject (independent of multiline mode)
end of subject or newline at end (independent of multiline mode)
end of subject(independent of multiline mode)
These assertions may not appear in character classes (but note that "\b" has a different meaning, namely the backspace character, inside a character class).
A word boundary is a position in the subject string where the current character and the previous character do not both match \w or \W (i.e. one matches \w and the other matches \W), or the start or end of the string if the first or last character matches \w, respectively.
The \A, \Z, and \z assertions differ from the traditional circumflex and dollar (described below) in that they only ever match at the very start and end of the subject string, whatever options are set. They are not affected by the PCRE_NOTBOL or PCRE_NOTEOL options. The difference between \Z and \z is that \Z matches before a newline that is the last character of the string as well as at the end of the string, whereas \z matches only at the end.
Outside a character class, in the default matching mode, the circumflex character is an assertion which is true only if the current matching point is at the start of the subject string. Inside a character class, circumflex has an entirely different meaning (see below).
Circumflex need not be the first character of the pattern if a number of alternatives are involved, but it should be the first thing in each alternative in which it appears if the pattern is ever to match that branch. If all possible alternatives start with a circumflex, that is, if the pattern is constrained to match only at the start of the subject, it is said to be an "anchored" pattern. (There are also other constructs that can cause a pattern to be anchored.)
A dollar character is an assertion which is TRUE only if the current matching point is at the end of the subject string, or immediately before a newline character that is the last character in the string (by default). Dollar need not be the last character of the pattern if a number of alternatives are involved, but it should be the last item in any branch in which it appears. Dollar has no special meaning in a character class.
The meaning of dollar can be changed so that it matches only at the very end of the string, by setting the PCRE_DOLLAR_ENDONLY option at compile or matching time. This does not affect the \Z assertion.
The meanings of the circumflex and dollar characters are changed if the PCRE_MULTILINE option is set. When this is the case, they match immediately after and immediately before an internal "\n" character, respectively, in addition to matching at the start and end of the subject string. For example, the pattern /^abc$/ matches the subject string "def\nabc" in multiline mode, but not otherwise. Consequently, patterns that are anchored in single line mode because all branches start with "^" are not anchored in multiline mode. The PCRE_DOLLAR_ENDONLY option is ignored if PCRE_MULTILINE is set.
Note that the sequences \A, \Z, and \z can be used to match the start and end of the subject in both modes, and if all branches of a pattern start with \A is it always anchored, whether PCRE_MULTILINE is set or not.
Outside a character class, a dot in the pattern matches any one character in the subject, including a non-printing character, but not (by default) newline. If the PCRE_DOTALL option is set, then dots match newlines as well. The handling of dot is entirely independent of the handling of circumflex and dollar, the only relationship being that they both involve newline characters. Dot has no special meaning in a character class.
An opening square bracket introduces a character class, terminated by a closing square bracket. A closing square bracket on its own is not special. If a closing square bracket is required as a member of the class, it should be the first data character in the class (after an initial circumflex, if present) or escaped with a backslash.
A character class matches a single character in the subject; the character must be in the set of characters defined by the class, unless the first character in the class is a circumflex, in which case the subject character must not be in the set defined by the class. If a circumflex is actually required as a member of the class, ensure it is not the first character, or escape it with a backslash.
For example, the character class [aeiou] matches any lower case vowel, while [^aeiou] matches any character that is not a lower case vowel. Note that a circumflex is just a convenient notation for specifying the characters which are in the class by enumerating those that are not. It is not an assertion: it still consumes a character from the subject string, and fails if the current pointer is at the end of the string.
When caseless matching is set, any letters in a class represent both their upper case and lower case versions, so for example, a caseless [aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not match "A", whereas a caseful version would.
The newline character is never treated in any special way in character classes, whatever the setting of the PCRE_DOTALL or PCRE_MULTILINE options is. A class such as [^a] will always match a newline.
The minus (hyphen) character can be used to specify a range of characters in a character class. For example, [d-m] matches any letter between d and m, inclusive. If a minus character is required in a class, it must be escaped with a backslash or appear in a position where it cannot be interpreted as indicating a range, typically as the first or last character in the class.
It is not possible to have the literal character "]" as the end character of a range. A pattern such as [W-]46] is interpreted as a class of two characters ("W" and "-") followed by a literal string "46]", so it would match "W46]" or "-46]". However, if the "]" is escaped with a backslash it is interpreted as the end of range, so [W-\]46] is interpreted as a single class containing a range followed by two separate characters. The octal or hexadecimal representation of "]" can also be used to end a range.
Ranges operate in ASCII collating sequence. They can also be used for characters specified numerically, for example [\000-\037]. If a range that includes letters is used when caseless matching is set, it matches the letters in either case. For example, [W-c] is equivalent to [][\^_`wxyzabc], matched caselessly, and if character tables for the "fr" locale are in use, [\xc8-\xcb] matches accented E characters in both cases.
The character types \d, \D, \s, \S, \w, and \W may also appear in a character class, and add the characters that they match to the class. For example, [\dABCDEF] matches any hexadecimal digit. A circumflex can conveniently be used with the upper case character types to specify a more restricted set of characters than the matching lower case type. For example, the class [^\W_] matches any letter or digit, but not underscore.
All non-alphanumeric characters other than \, -, ^ (at the start) and the terminating ] are non-special in character classes, but it does no harm if they are escaped.
Vertical bar characters are used to separate alternative patterns. For example, the pattern gilbert|sullivan matches either "gilbert" or "sullivan". Any number of alternatives may appear, and an empty alternative is permitted (matching the empty string). The matching process tries each alternative in turn, from left to right, and the first one that succeeds is used. If the alternatives are within a subpattern (defined below), "succeeds" means matching the rest of the main pattern as well as the alternative in the subpattern.
The settings of PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, and PCRE_EXTENDED can be changed from within the pattern by a sequence of Perl option letters enclosed between "(?" and ")". The option letters are
Tabulka 1. Internal option letters
i | for PCRE_CASELESS |
m | for PCRE_MULTILINE |
s | for PCRE_DOTALL |
x | for PCRE_EXTENDED |
For example, (?im) sets caseless, multiline matching. It is also possible to unset these options by preceding the letter with a hyphen, and a combined setting and unsetting such as (?im-sx), which sets PCRE_CASELESS and PCRE_MULTILINE while unsetting PCRE_DOTALL and PCRE_EXTENDED, is also permitted. If a letter appears both before and after the hyphen, the option is unset.
The scope of these option changes depends on where in the pattern the setting occurs. For settings that are outside any subpattern (defined below), the effect is the same as if the options were set or unset at the start of matching. The following patterns all behave in exactly the same way:
(?i)abc
a(?i)bc
ab(?i)c
abc(?i)
which in turn is the same as compiling the pattern abc with PCRE_CASELESS set. In other words, such "top level" settings apply to the whole pattern (unless there are other changes inside subpatterns). If there is more than one setting of the same option at top level, the rightmost setting is used.
If an option change occurs inside a subpattern, the effect is different. This is a change of behaviour in Perl 5.005. An option change inside a subpattern affects only that part of the subpattern that follows it, so (a(?i)b)c matches abc and aBc and no other strings (assuming PCRE_CASELESS is not used). By this means, options can be made to have different settings in different parts of the pattern. Any changes made in one alternative do carry on into subsequent branches within the same subpattern. For example, (a(?i)b|c) matches "ab", "aB", "c", and "C", even though when matching "C" the first branch is abandoned before the option setting. This is because the effects of option settings happen at compile time. There would be some very weird behaviour otherwise.
The PCRE-specific options PCRE_UNGREEDY and PCRE_EXTRA can be changed in the same way as the Perl-compatible options by using the characters U and X respectively. The (?X) flag setting is special in that it must always occur earlier in the pattern than any of the additional features it turns on, even when it is at top level. It is best put at the start.
Subpatterns are delimited by parentheses (round brackets), which can be nested. Marking part of a pattern as a subpattern does two things:
1. It localizes a set of alternatives. For example, the pattern cat(aract|erpillar|) matches one of the words "cat", "cataract", or "caterpillar". Without the parentheses, it would match "cataract", "erpillar" or the empty string.
2. It sets up the subpattern as a capturing subpattern (as defined above). When the whole pattern matches, that portion of the subject string that matched the subpattern is passed back to the caller via the ovector argument of pcre_exec(). Opening parentheses are counted from left to right (starting from 1) to obtain the numbers of the capturing subpatterns.
For example, if the string "the red king" is matched against the pattern the ((red|white) (king|queen)) the captured substrings are "red king", "red", and "king", and are numbered 1, 2, and 3.
The fact that plain parentheses fulfil two functions is not always helpful. There are often times when a grouping subpattern is required without a capturing requirement. If an opening parenthesis is followed by "?:", the subpattern does not do any capturing, and is not counted when computing the number of any subsequent capturing subpatterns. For example, if the string "the white queen" is matched against the pattern the ((?:red|white) (king|queen)) the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of captured substrings is 99, and the maximum number of all subpatterns, both capturing and non-capturing, is 200.
As a convenient shorthand, if any option settings are required at the start of a non-capturing subpattern, the option letters may appear between the "?" and the ":". Thus the two patterns
(?i:saturday|sunday)
(?:(?i)saturday|sunday)
match exactly the same set of strings. Because alternative branches are tried from left to right, and options are not reset until the end of the subpattern is reached, an option setting in one branch does affect subsequent branches, so the above patterns match "SUNDAY" as well as "Saturday".
Repetition is specified by quantifiers, which can follow any of the following items:
a single character, possibly escaped
the . metacharacter
a character class
a back reference (see next section)
a parenthesized subpattern (unless it is an assertion - see below)
The general repetition quantifier specifies a minimum and maximum number of permitted matches, by giving the two numbers in curly brackets (braces), separated by a comma. The numbers must be less than 65536, and the first must be less than or equal to the second. For example: z{2,4} matches "zz", "zzz", or "zzzz". A closing brace on its own is not a special character. If the second number is omitted, but the comma is present, there is no upper limit; if the second number and the comma are both omitted, the quantifier specifies an exact number of required matches. Thus [aeiou]{3,} matches at least 3 successive vowels, but may match many more, while \d{8} matches exactly 8 digits. An opening curly bracket that appears in a position where a quantifier is not allowed, or one that does not match the syntax of a quantifier, is taken as a literal character. For example, {,6} is not a quantifier, but a literal string of four characters.
The quantifier {0} is permitted, causing the expression to behave as if the previous item and the quantifier were not present.
For convenience (and historical compatibility) the three most common quantifiers have single-character abbreviations:
It is possible to construct infinite loops by following a subpattern that can match no characters with a quantifier that has no upper limit, for example: (a?)*
Earlier versions of Perl and PCRE used to give an error at compile time for such patterns. However, because there are cases where this can be useful, such patterns are now accepted, but if any repetition of the subpattern does in fact match no characters, the loop is forcibly broken.
By default, the quantifiers are "greedy", that is, they match as much as possible (up to the maximum number of permitted times), without causing the rest of the pattern to fail. The classic example of where this gives problems is in trying to match comments in C programs. These appear between the sequences /* and */ and within the sequence, individual * and / characters may appear. An attempt to match C comments by applying the pattern /\*.*\*/ to the string /* first command */ not comment /* second comment */ fails, because it matches the entire string due to the greediness of the .* item.
However, if a quantifier is followed by a question mark, then it ceases to be greedy, and instead matches the minimum number of times possible, so the pattern /\*.*?\*/ does the right thing with the C comments. The meaning of the various quantifiers is not otherwise changed, just the preferred number of matches. Do not confuse this use of question mark with its use as a quantifier in its own right. Because it has two uses, it can sometimes appear doubled, as in \d??\d which matches one digit by preference, but can match two if that is the only way the rest of the pattern matches.
If the PCRE_UNGREEDY option is set (an option which is not available in Perl) then the quantifiers are not greedy by default, but individual ones can be made greedy by following them with a question mark. In other words, it inverts the default behaviour.
When a parenthesized subpattern is quantified with a minimum repeat count that is greater than 1 or with a limited maximum, more store is required for the compiled pattern, in proportion to the size of the minimum or maximum.
If a pattern starts with .* or .{0,} and the PCRE_DOTALL option (equivalent to Perl's /s) is set, thus allowing the . to match newlines, then the pattern is implicitly anchored, because whatever follows will be tried against every character position in the subject string, so there is no point in retrying the overall match at any position after the first. PCRE treats such a pattern as though it were preceded by \A. In cases where it is known that the subject string contains no newlines, it is worth setting PCRE_DOTALL when the pattern begins with .* in order to obtain this optimization, or alternatively using ^ to indicate anchoring explicitly.
When a capturing subpattern is repeated, the value captured is the substring that matched the final iteration. For example, after (tweedle[dume]{3}\s*)+ has matched "tweedledum tweedledee" the value of the captured substring is "tweedledee". However, if there are nested capturing subpatterns, the corresponding captured values may have been set in previous iterations. For example, after /(a|(b))+/ matches "aba" the value of the second captured substring is "b".
Outside a character class, a backslash followed by a digit greater than 0 (and possibly further digits) is a back reference to a capturing subpattern earlier (i.e. to its left) in the pattern, provided there have been that many previous capturing left parentheses.
However, if the decimal number following the backslash is less than 10, it is always taken as a back reference, and causes an error only if there are not that many capturing left parentheses in the entire pattern. In other words, the parentheses that are referenced need not be to the left of the reference for numbers less than 10. See the section entitled "Backslash" above for further details of the handling of digits following a backslash.
A back reference matches whatever actually matched the capturing subpattern in the current subject string, rather than anything matching the subpattern itself. So the pattern (sens|respons)e and \1ibility matches "sense and sensibility" and "response and responsibility", but not "sense and responsibility". If caseful matching is in force at the time of the back reference, then the case of letters is relevant. For example, ((?i)rah)\s+\1 matches "rah rah" and "RAH RAH", but not "RAH rah", even though the original capturing subpattern is matched caselessly.
There may be more than one back reference to the same subpattern. If a subpattern has not actually been used in a particular match, then any back references to it always fail. For example, the pattern (a|(bc))\2 always fails if it starts to match "a" rather than "bc". Because there may be up to 99 back references, all digits following the backslash are taken as part of a potential back reference number. If the pattern continues with a digit character, then some delimiter must be used to terminate the back reference. If the PCRE_EXTENDED option is set, this can be whitespace. Otherwise an empty comment can be used.
A back reference that occurs inside the parentheses to which it refers fails when the subpattern is first used, so, for example, (a\1) never matches. However, such references can be useful inside repeated subpatterns. For example, the pattern (a|b\1)+ matches any number of "a"s and also "aba", "ababaa" etc. At each iteration of the subpattern, the back reference matches the character string corresponding to the previous iteration. In order for this to work, the pattern must be such that the first iteration does not need to match the back reference. This can be done using alternation, as in the example above, or by a quantifier with a minimum of zero.
An assertion is a test on the characters following or preceding the current matching point that does not actually consume any characters. The simple assertions coded as \b, \B, \A, \Z, \z, ^ and $ are described above. More complicated assertions are coded as subpatterns. There are two kinds: those that look ahead of the current position in the subject string, and those that look behind it.
An assertion subpattern is matched in the normal way, except that it does not cause the current matching position to be changed. Lookahead assertions start with (?= for positive assertions and (?! for negative assertions. For example, \w+(?=;) matches a word followed by a semicolon, but does not include the semicolon in the match, and foo(?!bar) matches any occurrence of "foo" that is not followed by "bar". Note that the apparently similar pattern (?!foo)bar does not find an occurrence of "bar" that is preceded by something other than "foo"; it finds any occurrence of "bar" whatsoever, because the assertion (?!foo) is always TRUE when the next three characters are "bar". A lookbehind assertion is needed to achieve this effect.
Lookbehind assertions start with (?<= for positive assertions and (?<! for negative assertions. For example, (?<!foo)bar does find an occurrence of "bar" that is not preceded by "foo". The contents of a lookbehind assertion are restricted such that all the strings it matches must have a fixed length. However, if there are several alternatives, they do not all have to have the same fixed length. Thus (?<=bullock|donkey) is permitted, but (?<!dogs?|cats?) causes an error at compile time. Branches that match different length strings are permitted only at the top level of a lookbehind assertion. This is an extension compared with Perl 5.005, which requires all branches to match the same length of string. An assertion such as (?<=ab(c|de)) is not permitted, because its single top-level branch can match two different lengths, but it is acceptable if rewritten to use two top-level branches: (?<=abc|abde) The implementation of lookbehind assertions is, for each alternative, to temporarily move the current position back by the fixed width and then try to match. If there are insufficient characters before the current position, the match is deemed to fail. Lookbehinds in conjunction with once-only subpatterns can be particularly useful for matching at the ends of strings; an example is given at the end of the section on once-only subpatterns.
Several assertions (of any sort) may occur in succession. For example, (?<=\d{3})(?<!999)foo matches "foo" preceded by three digits that are not "999". Notice that each of the assertions is applied independently at the same point in the subject string. First there is a check that the previous three characters are all digits, then there is a check that the same three characters are not "999". This pattern does not match "foo" preceded by six characters, the first of which are digits and the last three of which are not "999". For example, it doesn't match "123abcfoo". A pattern to do that is (?<=\d{3}...)(?<!999)foo
This time the first assertion looks at the preceding six characters, checking that the first three are digits, and then the second assertion checks that the preceding three characters are not "999".
Assertions can be nested in any combination. For example, (?<=(?<!foo)bar)baz matches an occurrence of "baz" that is preceded by "bar" which in turn is not preceded by "foo", while (?<=\d{3}(?!999)...)foo is another pattern which matches "foo" preceded by three digits and any three characters that are not "999".
Assertion subpatterns are not capturing subpatterns, and may not be repeated, because it makes no sense to assert the same thing several times. If any kind of assertion contains capturing subpatterns within it, these are counted for the purposes of numbering the capturing subpatterns in the whole pattern. However, substring capturing is carried out only for positive assertions, because it does not make sense for negative assertions.
Assertions count towards the maximum of 200 parenthesized subpatterns.
With both maximizing and minimizing repetition, failure of what follows normally causes the repeated item to be re-evaluated to see if a different number of repeats allows the rest of the pattern to match. Sometimes it is useful to prevent this, either to change the nature of the match, or to cause it fail earlier than it otherwise might, when the author of the pattern knows there is no point in carrying on.
Consider, for example, the pattern \d+foo when applied to the subject line 123456bar
After matching all 6 digits and then failing to match "foo", the normal action of the matcher is to try again with only 5 digits matching the \d+ item, and then with 4, and so on, before ultimately failing. Once-only subpatterns provide the means for specifying that once a portion of the pattern has matched, it is not to be re-evaluated in this way, so the matcher would give up immediately on failing to match "foo" the first time. The notation is another kind of special parenthesis, starting with (?> as in this example: (?>\d+)bar
This kind of parenthesis "locks up" the part of the pattern it contains once it has matched, and a failure further into the pattern is prevented from backtracking into it. Backtracking past it to previous items, however, works as normal.
An alternative description is that a subpattern of this type matches the string of characters that an identical standalone pattern would match, if anchored at the current point in the subject string.
Once-only subpatterns are not capturing subpatterns. Simple cases such as the above example can be thought of as a maximizing repeat that must swallow everything it can. So, while both \d+ and \d+? are prepared to adjust the number of digits they match in order to make the rest of the pattern match, (?>\d+) can only match an entire sequence of digits.
This construction can of course contain arbitrarily complicated subpatterns, and it can be nested.
Once-only subpatterns can be used in conjunction with look-behind assertions to specify efficient matching at the end of the subject string. Consider a simple pattern such as abcd$ when applied to a long string which does not match. Because matching proceeds from left to right, PCRE will look for each "a" in the subject and then see if what follows matches the rest of the pattern. If the pattern is specified as ^.*abcd$ then the initial .* matches the entire string at first, but when this fails (because there is no following "a"), it backtracks to match all but the last character, then all but the last two characters, and so on. Once again the search for "a" covers the entire string, from right to left, so we are no better off. However, if the pattern is written as ^(?>.*)(?<=abcd) then there can be no backtracking for the .* item; it can match only the entire string. The subsequent lookbehind assertion does a single test on the last four characters. If it fails, the match fails immediately. For long strings, this approach makes a significant difference to the processing time.
When a pattern contains an unlimited repeat inside a subpattern that can itself be repeated an unlimited number of times, the use of a once-only subpattern is the only way to avoid some failing matches taking a very long time indeed. The pattern (\D+|<\d+>)*[!?] matches an unlimited number of substrings that either consist of non-digits, or digits enclosed in <>, followed by either ! or ?. When it matches, it runs quickly. However, if it is applied to aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa it takes a long time before reporting failure. This is because the string can be divided between the two repeats in a large number of ways, and all have to be tried. (The example used [!?] rather than a single character at the end, because both PCRE and Perl have an optimization that allows for fast failure when a single character is used. They remember the last single character that is required for a match, and fail early if it is not present in the string.) If the pattern is changed to ((?>\D+)|<\d+>)*[!?] sequences of non-digits cannot be broken, and failure happens quickly.
It is possible to cause the matching process to obey a subpattern conditionally or to choose between two alternative subpatterns, depending on the result of an assertion, or whether a previous capturing subpattern matched or not. The two possible forms of conditional subpattern are
(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)
If the condition is satisfied, the yes-pattern is used; otherwise the no-pattern (if present) is used. If there are more than two alternatives in the subpattern, a compile-time error occurs.
There are two kinds of condition. If the text between the parentheses consists of a sequence of digits, then the condition is satisfied if the capturing subpattern of that number has previously matched. Consider the following pattern, which contains non-significant white space to make it more readable (assume the PCRE_EXTENDED option) and to divide it into three parts for ease of discussion: ( \( )? [^()]+ (?(1) \) )
The first part matches an optional opening parenthesis, and if that character is present, sets it as the first captured substring. The second part matches one or more characters that are not parentheses. The third part is a conditional subpattern that tests whether the first set of parentheses matched or not. If they did, that is, if subject started with an opening parenthesis, the condition is TRUE, and so the yes-pattern is executed and a closing parenthesis is required. Otherwise, since no-pattern is not present, the subpattern matches nothing. In other words, this pattern matches a sequence of non-parentheses, optionally enclosed in parentheses.
If the condition is not a sequence of digits, it must be an assertion. This may be a positive or negative lookahead or lookbehind assertion. Consider this pattern, again containing non-significant white space, and with the two alternatives on the second line:
(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )
The condition is a positive lookahead assertion that matches an optional sequence of non-letters followed by a letter. In other words, it tests for the presence of at least one letter in the subject. If a letter is found, the subject is matched against the first alternative; otherwise it is matched against the second. This pattern matches strings in one of the two forms dd-aaa-dd or dd-dd-dd, where aaa are letters and dd are digits.
The sequence (?# marks the start of a comment which continues up to the next closing parenthesis. Nested parentheses are not permitted. The characters that make up a comment play no part in the pattern matching at all.
If the PCRE_EXTENDED option is set, an unescaped # character outside a character class introduces a comment that continues up to the next newline character in the pattern.
Consider the problem of matching a string in parentheses, allowing for unlimited nested parentheses. Without the use of recursion, the best that can be done is to use a pattern that matches up to some fixed depth of nesting. It is not possible to handle an arbitrary nesting depth. Perl 5.6 has provided an experimental facility that allows regular expressions to recurse (among other things). The special item (?R) is provided for the specific case of recursion. This PCRE pattern solves the parentheses problem (assume the PCRE_EXTENDED option is set so that white space is ignored): \( ( (?>[^()]+) | (?R) )* \)
First it matches an opening parenthesis. Then it matches any number of substrings which can either be a sequence of non-parentheses, or a recursive match of the pattern itself (i.e. a correctly parenthesized substring). Finally there is a closing parenthesis.
This particular example pattern contains nested unlimited repeats, and so the use of a once-only subpattern for matching strings of non-parentheses is important when applying the pattern to strings that do not match. For example, when it is applied to (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa() it yields "no match" quickly. However, if a once-only subpattern is not used, the match runs for a very long time indeed because there are so many different ways the + and * repeats can carve up the subject, and all have to be tested before failure can be reported.
The values set for any capturing subpatterns are those from the outermost level of the recursion at which the subpattern value is set. If the pattern above is matched against (ab(cd)ef) the value for the capturing parentheses is "ef", which is the last value taken on at the top level. If additional parentheses are added, giving \( ( ( (?>[^()]+) | (?R) )* ) \) then the string they capture is "ab(cd)ef", the contents of the top level parentheses. If there are more than 15 capturing parentheses in a pattern, PCRE has to obtain extra memory to store data during a recursion, which it does by using pcre_malloc, freeing it via pcre_free afterwards. If no memory can be obtained, it saves data for the first 15 capturing parentheses only, as there is no way to give an out-of-memory error from within a recursion.
Certain items that may appear in patterns are more efficient than others. It is more efficient to use a character class like [aeiou] than a set of alternatives such as (a|e|i|o|u). In general, the simplest construction that provides the required behaviour is usually the most efficient. Jeffrey Friedl's book contains a lot of discussion about optimizing regular expressions for efficient performance.
When a pattern begins with .* and the PCRE_DOTALL option is set, the pattern is implicitly anchored by PCRE, since it can match only at the start of a subject string. However, if PCRE_DOTALL is not set, PCRE cannot make this optimization, because the . metacharacter does not then match a newline, and if the subject string contains newlines, the pattern may match from the character immediately following one of them instead of from the very start. For example, the pattern (.*) second matches the subject "first\nand second" (where \n stands for a newline character) with the first captured substring being "and". In order to do this, PCRE has to retry the match starting after every newline in the subject.
If you are using such a pattern with subject strings that do not contain newlines, the best performance is obtained by setting PCRE_DOTALL, or starting the pattern with ^.* to indicate explicit anchoring. That saves PCRE from having to scan along the subject looking for a newline to restart at.
Beware of patterns that contain nested indefinite repeats. These can take a long time to run when applied to a string that does not match. Consider the pattern fragment (a+)*
This can match "aaaa" in 33 different ways, and this number increases very rapidly as the string gets longer. (The * repeat can match 0, 1, 2, 3, or 4 times, and for each of those cases other than 0, the + repeats can match different numbers of times.) When the remainder of the pattern is such that the entire match is going to fail, PCRE has in principle to try every possible variation, and this can take an extremely long time.
An optimization catches some of the more simple cases such as (a+)*b where a literal character follows. Before embarking on the standard matching procedure, PCRE checks that there is a "b" later in the subject string, and if there is not, it fails the match immediately. However, when there is no following literal this optimization cannot be used. You can see the difference by comparing the behaviour of (a+)*\d with the pattern above. The former gives a failure almost instantly when applied to a whole line of "a" characters, whereas the latter takes an appreciable time with strings longer than about 20 characters.
preg_grep() returns the array consisting of the elements of the input array that match the given pattern.
Since PHP 4.0.4, the results returned by preg_grep() are indexed using the keys from the input array. If this behavior is undesirable, use array_values() on the array returned by preg_grep() to reindex the values.
Searches subject for all matches to the regular expression given in pattern and puts them in matches in the order specified by flags.
After the first match is found, the subsequent searches are continued on from end of the last match.
flags can be a combination of the following flags (note that it doesn't make sense to use PREG_PATTERN_ORDER together with PREG_SET_ORDER):
Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on.
<?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>this is a test</div>", $out, PREG_PATTERN_ORDER); echo $out[0][0] . ", " . $out[0][1] . "\n"; echo $out[1][0] . ", " . $out[1][1] . "\n"; ?> |
This example will produce:
<b>example: </b>, <div align=left>this is a test</div> example: , this is a test |
So, $out[0] contains array of strings that matched full pattern, and $out[1] contains array of strings enclosed by tags.
Orders results so that $matches[0] is an array of first set of matches, $matches[1] is an array of second set of matches, and so on.
<?php preg_match_all("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=\"left\">this is a test</div>", $out, PREG_SET_ORDER); echo $out[0][0] . ", " . $out[0][1] . "\n"; echo $out[1][0] . ", " . $out[1][1] . "\n"; ?> |
This example will produce:
<b>example: </b>, example: <div align="left">this is a test</div>, this is a test |
In this case, $matches[0] is the first set of matches, and $matches[0][0] has text matched by full pattern, $matches[0][1] has text matched by first subpattern and so on. Similarly, $matches[1] is the second set of matches, etc.
If this flag is set, for every occurring match the appendant string offset will also be returned. Note that this changes the return value in an array where every element is an array consisting of the matched string at offset 0 and it's string offset into subject at offset 1. This flag is available since PHP 4.3.0 .
If no order flag is given, PREG_PATTERN_ORDER is assumed.
Returns the number of full pattern matches (which might be zero), or FALSE if an error occurred.
P°φklad 2. Find matching HTML tags (greedy)
This example will produce:
|
See also preg_match(), preg_replace(), and preg_split().
Searches subject for a match to the regular expression given in pattern.
If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
flags can be the following flag:
If this flag is set, for every occurring match the appendant string offset will also be returned. Note that this changes the return value in an array where every element is an array consisting of the matched string at offset 0 and it's string offset into subject at offset 1. This flag is available since PHP 4.3.0 .
preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match. preg_match_all() on the contrary will continue until it reaches the end of subject. preg_match() returns FALSE if an error occurred.
Tip: Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.
P°φklad 2. Find the word "web"
|
P°φklad 3. Getting the domain name out of a URL
This example will produce:
|
See also preg_match_all(), preg_replace(), and preg_split().
preg_quote() takes str and puts a backslash in front of every character that is part of the regular expression syntax. This is useful if you have a run-time string that you need to match in some text and the string may contain special regex characters.
If the optional delimiter is specified, it will also be escaped. This is useful for escaping the delimiter that is required by the PCRE functions. The / is the most commonly used delimiter.
The special regular expression characters are: . \\ + * ? [ ^ ] $ ( ) { } = ! < > | :
P°φklad 2. Italicizing a word within some text
|
(PHP 4 >= 4.0.5)
preg_replace_callback -- Perform a regular expression search and replace using a callbackThe behavior of this function is almost identical to preg_replace(), except for the fact that instead of replacement parameter, one should specify a callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.
P°φklad 1. preg_replace_callback() example
|
You'll often need the callback function for a preg_replace_callback() in just one place. In this case you can use create_function() to declare an anonymous function as callback within the call to preg_replace_callback(). By doing it this way you have all information for the call in one place and do not clutter the function namespace with a callback functions name not used anywhere else.
P°φklad 2. preg_replace_callback() and create_function()
|
See also preg_replace() and create_function().
Searches subject for matches to pattern and replaces them with replacement. If limit is specified, then only limit matches will be replaced; if limit is omitted or is -1, then all matches are replaced.
Replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one. Every such reference will be replaced by the text captured by the n'th parenthesized pattern. n can be from 0 to 99, and \\0 or $0 refers to the text matched by the whole pattern. Opening parentheses are counted from left to right (starting from 1) to obtain the number of the capturing subpattern.
When working with a replacement pattern where a backreference is immediately followed by another number (i.e.: placing a literal number immediately after a matched pattern), you cannot use the familiar \\1 notation for your backreference. \\11, for example, would confuse preg_replace() since it does not know whether you want the \\1 backreference followed by a literal 1, or the \\11 backreference followed by nothing. In this case the solution is to use \${1}1. This creates an isolated $1 backreference, leaving the 1 as a literal.
If matches are found, the new subject will be returned, otherwise subject will be returned unchanged.
Every parameter to preg_replace() (except limit) can be an unidimensional array. When using arrays with pattern and replacement, the keys are processed in the order they appear in the array. This is not necessarily the same as the numerical index order. If you use indexes to identify which pattern should be replaced by which replacement, you should perform a ksort() on each array prior to calling preg_replace().
P°φklad 2. Using indexed arrays with preg_replace()
Output:
By ksorting patterns and replacements, we should get what we wanted.
Output :
|
If subject is an array, then the search and replace is performed on every entry of subject, and the return value is an array as well.
If pattern and replacement are arrays, then preg_replace() takes a value from each array and uses them to do search and replace on subject. If replacement has fewer values than pattern, then empty string is used for the rest of replacement values. If pattern is an array and replacement is a string, then this replacement string is used for every value of pattern. The converse would not make sense, though.
/e modifier makes preg_replace() treat the replacement parameter as PHP code after the appropriate references substitution is done. Tip: make sure that replacement constitutes a valid PHP code string, otherwise PHP will complain about a parse error at the line containing preg_replace().
P°φklad 5. Convert HTML to text
|
Poznßmka: Parameter limit was added after PHP 4.0.1pl2.
See also preg_match(), preg_match_all(), and preg_split().
Returns an array containing substrings of subject split along boundaries matched by pattern.
If limit is specified, then only substrings up to limit are returned, and if limit is -1, it actually means "no limit", which is useful for specifying the flags.
flags can be any combination of the following flags (combined with bitwise | operator):
If this flag is set, only non-empty pieces will be returned by preg_split().
If this flag is set, parenthesized expression in the delimiter pattern will be captured and returned as well. This flag was added for 4.0.5.
If this flag is set, for every occurring match the appendant string offset will also be returned. Note that this changes the return value in an array where every element is an array consisting of the matched string at offset 0 and it's string offset into subject at offset 1. This flag is available since PHP 4.3.0 .
P°φklad 3. Splitting a string into matches and their offsets
will yield:
|
Poznßmka: Parameter flags was added in PHP 4 Beta 3.
See also spliti(), split(), implode(), preg_match(), preg_match_all(), and preg_replace().
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
(PHP 4 >= 4.0.5)
qdom_error -- Returns the error string from the last QDOM operation or FALSE if no errors occurredVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Tip: PHP also supports regular expressions using a Perl-compatible syntax using the PCRE functions. Those functions support non-greedy matching, assertions, conditional subpatterns, and a number of other features not supported by the POSIX-extended regular expression syntax.
Varovßnφ |
These regular expression functions are not binary-safe. The PCRE functions are. |
Regular expressions are used for complex string manipulation in PHP. The functions that support regular expressions are:
These functions all take a regular expression string as their first argument. PHP uses the POSIX extended regular expressions as defined by POSIX 1003.2. For a full description of POSIX regular expressions see the regex man pages included in the regex directory in the PHP distribution. It's in manpage format, so you'll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.
Varovßnφ |
Do not change the TYPE unless you know what you are doing. |
To enable regexp support configure PHP --with-regex[=TYPE]. TYPE can be one of system, apache, php. The default is to use php.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
P°φklad 1. Regular Expression Examples
|
For regular expressions in Perl-compatible syntax have a look at the PCRE functions. The simpler shell style wildcard pattern matching is provided by fnmatch().
This function scans string for matches to pattern, then replaces the matched text with replacement.
The modified string is returned. (Which may mean that the original string is returned if there are no matches to be replaced.)
If pattern contains parenthesized substrings, replacement may contain substrings of the form \\digit, which will be replaced by the text matching the digit'th parenthesized substring; \\0 will produce the entire contents of string. Up to nine substrings may be used. Parentheses may be nested, in which case they are counted by the opening parenthesis.
If no matches are found in string, then string will be returned unchanged.
For example, the following code snippet prints "This was a test" three times:
One thing to take note of is that if you use an integer value as the replacement parameter, you may not get the results you expect. This is because ereg_replace() will interpret the number as the ordinal value of a character, and apply that. For instance:
P°φklad 2. ereg_replace() example
|
Tip: preg_replace(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg_replace().
See also ereg(), eregi(), eregi_replace(), str_replace(), and preg_match().
Poznßmka: preg_match(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg().
Searches a string for matches to the regular expression given in pattern in a case-sensitive way.
If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs. $regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.
Poznßmka: Up to (and including) PHP 4.1.0 $regs will be filled with exactly ten elements, even though more or fewer than ten parenthesized substrings may actually have matched. This has no effect on ereg()'s ability to match more substrings. If no matches are found, $regs will not be altered by ereg().
Returns TRUE if a match for pattern was found in string, or FALSE if no matches were found or an error occurred.
The following code snippet takes a date in ISO format (YYYY-MM-DD) and prints it in DD.MM.YYYY format:
See also eregi(), ereg_replace(), eregi_replace(), preg_match(), strpos(), and strstr().
This function is identical to ereg_replace() except that this ignores case distinction when matching alphabetic characters.
See also ereg(), eregi(), and ereg_replace().
This function is identical to ereg() except that this ignores case distinction when matching alphabetic characters.
See also ereg(), ereg_replace(), eregi_replace(), stripos(), and stristr().
Tip: preg_split(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to split(). If you don't require the power of regular expressions, it is faster to use explode(), which doesn't incur the overhead of the regular expression engine.
Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the case-sensitive regular expression pattern. If limit is set, the returned array will contain a maximum of limit elements with the last element containing the whole rest of string. If an error occurs, split() returns FALSE.
To split off the first four fields from a line from /etc/passwd:
If there are n occurrences of pattern, the returned array will contain n+1 items. For example, if there is no occurrence of pattern, an array with only one element will be returned. Of course, this is also true if string is empty.
To parse a date which may be delimited with slashes, dots, or hyphens:
For users looking for a way to emulate Perl's @chars = split('', $str) behaviour, please see the examples for preg_split().
Please note that pattern is a regular expression. If you want to split on any of the characters which are considered special by regular expressions, you'll need to escape them first. If you think split() (or any other regex function, for that matter) is doing something weird, please read the file regex.7, included in the regex/ subdirectory of the PHP distribution. It's in manpage format, so you'll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.
See also: preg_split(), spliti(), explode(), implode(), chunk_split(), and wordwrap().
This function is identical to split() except that this ignores case distinction when matching alphabetic characters.
Returns a valid regular expression which will match string, ignoring case. This expression is string with each alphabetic character converted to a bracket expression; this bracket expression contains that character's uppercase and lowercase form. Other characters remain unchanged.
This can be used to achieve case insensitive pattern matching in products which support only case sensitive regular expressions.
Toto roz╣φ°enφ poskytuje rozhranφ k rodin∞ IPC funkcφ Systemu V. To zahrnuje semafory, sdφlenou pam∞╗ a meziprocesovΘ zprßvy (IPC).
Semafory se dajφ pou╛φvat k poskytovßnφ exkluzivnφho p°φstupu k prost°edk∙m na danΘm systΘmu, nebo k omezenφ poΦtu proces∙, kterΘ mohou souΦasn∞ pou╛φvat urΦit² prost°edek.
Toto roz╣φ°enφ takΘ poskytuje funkce pro prßci se sdφlenou pam∞tφ vyu╛φvajφcφ System V sdφlenou pam∞╗. Sdφlenß pm∞t se dß pou╛φvat k poskytovßnφ p°φstupu ke globßlnφm prom∞nn²m. R∙znφ httpd-daemoni a dokonce i jinΘ programy (nap°. Perl, C, ...) mohou k t∞mto dat∙m p°istupovat, a vytvo°it tak globßlnφ v²m∞nu dat. Pamatujte, ╛e sdφlenß pam∞╗ nenφ chrßn∞na proti simultßnφm p°φstup∙m. K synchronizaci pou╛ijte semafory.
Tabulka 1. Omezenφ sdφlenΘ pam∞ti systΘmem Unix
SHMMAX | max. velikost sdφlenΘ pam∞ti, normßln∞ 131072 byt∙ |
SHMMIN | min. velikost sdφlenΘ pam∞ti, normßlne 1 byte |
SHMMNI | max. poΦet segment∙ sdφlenΘ pam∞ti, normßln∞ 100 |
SHMSEG | max. poΦet segment∙ sdφlenΘ pam∞ti na proces, normßln∞ 6 |
The messaging functions may be used to send and receive messages to/from other processes. They provide a simple and effective means of exchanging data between processes, without the need for setting up an alternative using unix domain sockets.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
Podpora t∞chto funkcφ nenφ ve v²chozφm nastavenφ zapnuta. Pro zapnutφ podpory semafor∙ Systemu V zkompilujte PHP s volbou --enable-sysvsem. Pro zapnutφ podpory sdφlenΘ pam∞ti Systemu V zkompilujte PHP s volbou --enable-sysvshm. Pro zapnutφ podpory zprßv Systemu V zkompilujte PHP s volbou --enable-sysvmsg.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 2. KonfiguraΦnφ volby pro Semaphore
Nßzev | V²chozφ hodnota | Lze zm∞nit |
---|---|---|
sysvmsg.value | "42" | PHP_INI_ALL |
sysvmsg.string | "foobar" | PHP_INI_ALL |
The function converts the pathname of an existing accessible file and a project identifier (proj) into a integer for use with for example shmop_open() and other System V IPC keys. The proj parameter should be a one character string.
On success the return value will be the created key value, otherwise -1 is returned.
See also shmop_open() and sem_get().
msg_get_queue() returns an id that can be used to access the System V message queue with the given key. The first call creates the message queue with the optional perms (default: 0666). A second call to msg_get_queue() for the same key will return a different message queue identifier, but both identifiers access the same underlying message queue. If the message queue already exists, the perms will be ignored.
See also: msg_remove_queue(), msg_receive(), msg_send(), msg_stat_queue() and msg_set_queue().
msg_receive() will receive the first message from the specified queue of the type specified by desiredmsgtype. The type of the message that was received will be stored in msgtype. The maximum size of message to be accepted is specified by the maxsize; if the message in the queue is larger than this size the function will fail (unless you set flags as described below). The received message will be stored in message, unless there were errors receiving the message, in which case the optional errorcode will be set to the value of the system errno variable to help you identify the cause.
If desiredmsgtype is 0, the message from the front of the queue is returned. If desiredmsgtype is greater than 0, then the first message of that type is returned. If desiredmsgtype is less than 0, the first message on the queue with the lowest type less than or equal to the absolute value of desiredmsgtype will be read. If no messages match the criteria, your script will wait until a suitable message arrives on the queue. You can prevent the script from blocking by specifying MSG_IPC_NOWAIT in the flags parameter.
unserialize defaults to TRUE; if it is set to TRUE, the message is treated as though it was serialized using the same mechanism as the session module. The message will be unserialized and then returned to your script. This allows you to easily receive arrays or complex object structures from other PHP scripts, or if you are using the WDDX serializer, from any WDDX compatible source. If unserialize is FALSE, the message will be returned as a binary-safe string.
The optional flags allows you to pass flags to the low-level msgrcv system call. It defaults to 0, but you may specify one or more of the following values (by adding or ORing them together).
Tabulka 1. Flag values for msg_receive
MSG_IPC_NOWAIT | If there are no messages of the desiredmsgtype, return immediately and do not wait. The function will fail and return an integer value corresponding to ENOMSG. |
MSG_EXCEPT | Using this flag in combination with a desiredmsgtype greater than 0 will cause the function to receive the first message that is not equal to desiredmsgtype. |
MSG_NOERROR | If the message is longer than maxsize, setting this flag will truncate the message to maxsize and will not signal an error. |
Upon successful completion the message queue data structure is updated as follows: msg_lrpid is set to the process-ID of the calling process, msg_qnum is decremented by 1 and msg_rtime is set to the current time.
msg_receive() returns TRUE on success or FALSE on failure. If the function fails, the optional errorcode will be set to the value of the system errno variable.
See also: msg_remove_queue(), msg_send(), msg_stat_queue() and msg_set_queue().
msg_remove_queue() destroys the message queue specified by the queue. Only use this function when all processes have finished working with the message queue and you need to release the system resources held by it.
See also: msg_remove_queue(), msg_receive(), msg_stat_queue() and msg_set_queue().
msg_send() sends a message of type msgtype (which MUST be greater than 0) to a the message queue specified by queue.
If the message is too large to fit in the queue, your script will wait until another process reads messages from the queue and frees enough space for your message to be sent. This is called blocking; you can prevent blocking by setting the optional blocking parameter to FALSE, in which case msg_send() will immediately return FALSE if the message is too big for the queue, and set the optional errorcode to EAGAIN, indicating that you should try to send your message again a little later on.
The optional serialize controls how the message is sent. serialize defaults to TRUE which means that the message is serialized using the same mechanism as the session module before being sent to the queue. This allows complex arrays and objects to be sent to other PHP scripts, or if you are using the WDDX serializer, to any WDDX compatible client.
Upon successful completion the message queue data structure is updated as follows: msg_lspid is set to the process-ID of the calling process, msg_qnum is incremented by 1 and msg_stime is set to the current time.
See also: msg_remove_queue(), msg_receive(), msg_stat_queue() and msg_set_queue().
msg_set_queue() allows you to change the values of the msg_perm.uid, msg_perm.gid, msg_perm.mode and msg_qbytes fields of the underlying message queue data structure. You specify the values you require by setting the value of the keys that you require in the data array.
Changing the data structure will require that PHP be running as the same user that created the the queue, owns the queue (as determined by the existing msg_perm.xxx fields), or be running with root privileges. root privileges are required to raise the msg_qbytes values above the system defined limit.
See also: msg_remove_queue(), msg_receive(), msg_stat_queue() and msg_set_queue().
msg_stat_queue() returns the message queue meta data for the message queue specified by the queue. This is useful, for example, to determine which process sent the message that was just received.
The return value is an array whose keys and values have the following meanings:
Tabulka 1. Array structure for msg_stat_queue
msg_perm.uid | The uid of the owner of the queue. |
msg_perm.gid | The gid of the owner of the queue. |
msg_perm.mode | The file access mode of the queue. |
msg_stime | The time that the last message was sent to the queue. |
msg_rtime | The time that the last message was received from the queue. |
msg_ctime | The time that the queue was last changed. |
msg_qnum | The number of messages waiting to be read from the queue. |
msg_qbytes | The number of bytes of space currently available in the queue to hold sent messages until they are received. |
msg_lspid | The pid of the process that sent the last message to the queue. |
msg_lrpid | The pid of the process that received the last message from the queue. |
See also: msg_remove_queue(), msg_receive(), msg_stat_queue() and msg_set_queue().
P°i ·sp∞chu vracφ TRUE, p°i chyb∞ FALSE.
sem_acquire() blokuje (pokud je opt°eba) a╛ do zφskßnφ semaforu. Proces pokou╣ejφcφ se zφskat semafor, kter² u╛ zφskal bude blokovat nav∞ky, pokud by zφskßnφ tohoto semaforu zp∙sobilo p°ekroΦenφ jeho hodnoty max_acquire.
Po zpracovßnφ po╛adavku se v╣echny zφskanΘ, ale explicitn∞ neuvoln∞nΘ semafoty uvolnφ automaticky, a vygeneruje se varovßnφ.
Viz takΘ: sem_get() a sem_release().
Vracφ idenfifikßtor semaforu nebo FALSE.
sem_get() vracφ id, kterΘ se dß pou╛φt k p°φstupu k System V semaforu s dan²m klφΦem. Podle pot°eby se vytvo°φ nov² semafor s p°φstupov²mi prßvy definovan²mi v perm (default je 0666). PoΦet proces∙, kterΘ mohou tento semafor zφskat souΦasn∞ je max_acquire (default je 1). Tato hodnota je ale nastavena pouze pokud tento proces zjistφ, ╛e k tomuto semaforu nenφ souΦasn∞ p°ipojen jin² proces.
DruhΘ volßnφ sem_get() se stejn²m key vrßtφ jin² identifikßtor semaforu, ale oba identifikßtory ukazujφ na stejn² semafor.
Viz takΘ: sem_acquire() a sem_release().
Poznßmka: Tato funkce nefunguje na Windows.
P°i ·sp∞chu vracφ TRUE, jinak FALSE.
sem_release() uvol≥φ semafor, pokud ho volajφcφ proces dr╛φ, jinak se vygeneruje varovßnφ.
Po uvoln∞nφ m∙╛e b²t semafor znovu zφskßn pomocφ sem_acquire().
Viz takΘ: sem_get() a sem_acquire().
Poznßmka: Tato funkce nefunguje na Windows.
sem_remove() removes the semaphore sem_identifier if it has been created by sem_get(), otherwise generates a warning.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
After removing the semaphore, it is no more accessible.
See also: sem_get(), sem_release() and sem_acquire().
Poznßmka: This function does not work on Windows systems. It was added on PHP 4.1.0.
shm_attach() vracφ id, kterΘ se dß pou╛φt k p°φstupu k System V sdφlenΘ pam∞ti s dan²m klφΦem; prvnφ volßnφ vytvo°φ segment pam∞ti o velikosti mem_size (default: sysvshm.init_mem v konfiguraΦnφm souboru, jinak 10000 byt∙) a s voliteln²mi prßvy (default: 0666).
DruhΘ volßnφ shm_attach() se stejn²m key vrßtφ jin² identifikßto, ale oba ukazujφ na stejnou sdφlenou pam∞╗. memsize a perm se v takovΘm p°φpad∞ ignorujφ.
Poznßmka: Tato funkce nefunguje na Windows.
shm_detach() odpojuje od sdφlenΘ pam∞ti identifikovanΘ shm_identifier vytvo°en²m shm_attach(). Pamatujte, ╛e tato sdφlenß pam∞╗ dßl existuje a dr╛φ si data.
shm_get_var() vracφ prom∞nnou s dan²m variable_key. Prom∞nnß z∙stßvß ve sdφlenΘ pam∞ti.
Poznßmka: Tato funkce nefunguje na Windows.
Vlo╛φ nebo modifikuje variable s dan²m variable_key. V╣echny typy prom∞nn²ch (double, int, string, array) jsou podporovßny.
Poznßmka: Tato funkce nefunguje na Windows.
Odstranφ prom∞nnou s dan²mvariable_key a uvolnφ zabranou pam∞╗.
Poznßmka: Tato funkce nefunguje na Windows.
SESAM/SQL-Server is a mainframe database system, developed by Fujitsu Siemens Computers, Germany. It runs on high-end mainframe servers using the operating system BS2000/OSD.
In numerous productive BS2000 installations, SESAM/SQL-Server has proven
the ease of use of Java-, Web- and client/server connectivity,
the capability to work with an availability of more than 99.99%,
the ability to manage tens and even hundreds of thousands of users.
There is a PHP3 SESAM interface available which allows database operations via PHP-scripts.
Poznßmka: Access to SESAM is only available with the latest CVS-Version of PHP3. PHP 4 does not support the SESAM database.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Name of BS2000 PLAM library containing the loadable SESAM driver modules. Required for using SESAM functions. The BS2000 PLAM library must be set ACCESS=READ,SHARE=YES because it must be readable by the apache server's user id.
Name of SESAM application configuration file. Required for using SESAM functions. The BS2000 file must be readable by the apache server's user id.
The application configuration file will usually contain a configuration like (see SESAM reference manual):
Name of SESAM message catalog file. In most cases, this directive is not necessary. Only if the SESAM message file is not installed in the system's BS2000 message file table, it can be set with this directive.
The message catalog must be set ACCESS=READ,SHARE=YES because it must be readable by the apache server's user id.
There is no standalone support for the PHP SESAM interface, it works only as an integrated Apache module. In the Apache PHP module, this SESAM interface is configured using Apache directives.
Tabulka 1. SESAM Configuration directives
Directive | Meaning |
---|---|
php3_sesam_oml |
Name of BS2000 PLAM library containing the loadable SESAM
driver modules. Required for using SESAM functions.
Example: |
php3_sesam_configfile |
Name of SESAM application configuration file. Required for
using SESAM functions.
Example: It will usually contain a configuration like (see SESAM reference manual): |
php3_sesam_messagecatalog |
Name of SESAM message catalog file. In most cases, this
directive is not necessary. Only if the SESAM message file
is not installed in the system's BS2000 message file table,
it can be set with this directive.
Example: |
In addition to the configuration of the PHP/SESAM interface, you have to configure the SESAM-Database server itself on your mainframe as usual. That means:
starting the SESAM database handler (DBH), and
connecting the databases with the SESAM database handler
To get a connection between a PHP script and the database handler, the CNF and NAM parameters of the selected SESAM configuration file must match the id of the started database handler.
In case of distributed databases you have to start a SESAM/SQL-DCN agent with the distribution table including the host and database names.
The communication between PHP (running in the POSIX subsystem) and the database handler (running outside the POSIX subsystem) is realized by a special driver module called SQLSCI and SESAM connection modules using common memory. Because of the common memory access, and because PHP is a static part of the web server, database accesses are very fast, as they do not require remote accesses via ODBC, JDBC or UTM.
Only a small stub loader (SESMOD) is linked with PHP, and the SESAM connection modules are pulled in from SESAM's OML PLAM library. In the configuration, you must tell PHP the name of this PLAM library, and the file link to use for the SESAM configuration file (As of SESAM V3.0, SQLSCI is available in the SESAM Tool Library, which is part of the standard distribution).
Because the SQL command quoting for single quotes uses duplicated single quotes (as opposed to a single quote preceded by a backslash, used in some other databases), it is advisable to set the PHP configuration directives php3_magic_quotes_gpc and php3_magic_quotes_sybase to On for all PHP scripts using the SESAM interface.
Because of limitations of the BS2000 process model, the driver can be loaded only after the Apache server has forked off its server child processes. This will slightly slow down the initial SESAM request of each child, but subsequent accesses will respond at full speed.
When explicitly defining a Message Catalog for SESAM, that catalog will be loaded each time the driver is loaded (i.e., at the initial SESAM request). The BS2000 operating system prints a message after successful load of the message catalog, which will be sent to Apache's error_log file. BS2000 currently does not allow suppression of this message, it will slowly fill up the log.
Make sure that the SESAM OML PLAM library and SESAM configuration file are readable by the user id running the web server. Otherwise, the server will be unable to load the driver, and will not allow to call any SESAM functions. Also, access to the database must be granted to the user id under which the Apache server is running. Otherwise, connections to the SESAM database handler will fail.
The result cursors which are allocated for SQL "select type" queries can be either "sequential" or "scrollable". Because of the larger memory overhead needed by "scrollable" cursors, the default is "sequential".
When using "scrollable" cursors, the cursor can be freely positioned on the result set. For each "scrollable" query, there are global default values for the scrolling type (initialized to: SESAM_SEEK_NEXT) and the scrolling offset which can either be set once by sesam_seek_row() or each time when fetching a row using sesam_fetch_row(). When fetching a row using a "scrollable" cursor, the following post-processing is done for the global default values for the scrolling type and scrolling offset:
Tabulka 2. Scrolled Cursor Post-Processing
Scroll Type | Action |
---|---|
SESAM_SEEK_NEXT | none |
SESAM_SEEK_PRIOR | none |
SESAM_SEEK_FIRST | set scroll type to SESAM_SEEK_NEXT |
SESAM_SEEK_LAST | set scroll type to SESAM_SEEK_PRIOR |
SESAM_SEEK_ABSOLUTE | Auto-Increment internal offset value |
SESAM_SEEK_RELATIVE | none. (maintain global default offset value, which allows for, e.g., fetching each 10th row backwards) |
Because in the PHP world it is natural to start indexes at zero (rather than 1), some adaptions have been made to the SESAM interface: whenever an indexed array is starting with index 1 in the native SESAM interface, the PHP interface uses index 0 as a starting point. E.g., when retrieving columns with sesam_fetch_row(), the first column has the index 0, and the subsequent columns have indexes up to (but not including) the column count ($array["count"]). When porting SESAM applications from other high level languages to PHP, be aware of this changed interface. Where appropriate, the description of the respective PHP sesam functions include a note that the index is zero based.
When allowing access to the SESAM databases, the web server user should only have as little privileges as possible. For most databases, only read access privilege should be granted. Depending on your usage scenario, add more access rights as you see fit. Never allow full control to any database for any user from the 'net! Restrict access to PHP scripts which must administer the database by using password control and/or SSL security.
No two SQL dialects are ever 100% compatible. When porting SQL applications from other database interfaces to SESAM, some adaption may be required. The following typical differences should be noted:
Vendor specific data types
Some vendor specific data types may have to be replaced by standard SQL data types (e.g., TEXT could be replaced by VARCHAR(max. size)).
Keywords as SQL identifiers
In SESAM (as in standard SQL), such identifiers must be enclosed in double quotes (or renamed).
Display length in data types
SESAM data types have a precision, not a display length. Instead of int(4) (intended use: integers up to '9999'), SESAM requires simply int for an implied size of 31 bits. Also, the only datetime data types available in SESAM are: DATE, TIME(3) and TIMESTAMP(3).
SQL types with vendor-specific unsigned, zerofill, or auto_increment attributes
Unsigned and zerofill are not supported. Auto_increment is automatic (use "INSERT ... VALUES(*, ...)" instead of "... VALUES(0, ...)" to take advantage of SESAM-implied auto-increment.
int ... DEFAULT '0000'
Numeric variables must not be initialized with string constants. Use DEFAULT 0 instead. To initialize variables of the datetime SQL data types, the initialization string must be prefixed with the respective type keyword, as in: CREATE TABLE exmpl ( xtime timestamp(3) DEFAULT TIMESTAMP '1970-01-01 00:00:00.000' NOT NULL );
$count = xxxx_num_rows();
Some databases promise to guess/estimate the number of the rows in a query result, even though the returned value is grossly incorrect. SESAM does not know the number of rows in a query result before actually fetching them. If you REALLY need the count, try SELECT COUNT(...) WHERE ..., it will tell you the number of hits. A second query will (hopefully) return the results.
DROP TABLE thename;
In SESAM, in the DROP TABLE command, the table name must be either followed by the keyword RESTRICT or CASCADE. When specifying RESTRICT, an error is returned if there are dependent objects (e.g., VIEWs), while with CASCADE, dependent objects will be deleted along with the specified table.
SESAM does not currently support the BLOB type. A future version of SESAM will have support for BLOB.
At the PHP interface, the following type conversions are automatically applied when retrieving SQL fields:
Tabulka 3. SQL to PHP Type Conversions
SQL Type | PHP Type |
---|---|
SMALLINT, INTEGER | integer |
NUMERIC, DECIMAL, FLOAT, REAL, DOUBLE | float |
DATE, TIME, TIMESTAMP | string |
VARCHAR, CHARACTER | string |
The special "multiple fields" feature of SESAM allows a column to consist of an array of fields. Such a "multiple field" column can be created like this:
When retrieving a result row, "multiple columns" are accessed like "inlined" additional columns. In the example above, "pkey" will have the index 0, and the three "multi(1..3)" columns will be accessible as indices 1 through 3.
For specific SESAM details, please refer to the SESAM/SQL-Server documentation (english) or the SESAM/SQL-Server documentation (german), both available online, or use the respective manuals.
result_id is a valid result id returned by sesam_query().
Returns the number of rows affected by a query associated with result_id.
The sesam_affected_rows() function can only return useful values when used in combination with "immediate" SQL statements (updating operations like INSERT, UPDATE and DELETE) because SESAM does not deliver any "affected rows" information for "select type" queries. The number returned is the number of affected rows.
See also sesam_query() and sesam_execimm().
Returns: TRUE on success, FALSE on errors
sesam_commit() commits any pending updates to the database.
Note that there is no "auto-commit" feature as in other databases, as it could lead to accidental data loss. Uncommitted data at the end of the current script (or when calling sesam_disconnect()) will be discarded by an implied sesam_rollback() call.
See also: sesam_rollback().
Returns TRUE if a connection to the SESAM database was made, or FALSE on error.
sesam_connect() establishes a connection to an SESAM database handler task. The connection is always "persistent" in the sense that only the very first invocation will actually load the driver from the configured SESAM OML PLAM library. Subsequent calls will reuse the driver and will immediately use the given catalog, schema, and user.
When creating a database, the "catalog" name is specified in the SESAM configuration directive //ADD-SQL-DATABASE-CATALOG-LIST ENTRY-1 = *CATALOG(CATALOG-NAME = catalogname,...)
The "schema" references the desired database schema (see SESAM handbook).
The "user" argument references one of the users which are allowed to access this "catalog" / "schema" combination. Note that "user" is completely independent from both the system's user id's and from HTTP user/password protection. It appears in the SESAM configuration only.
See also sesam_disconnect().
Returns an associative array of status and return codes for the last SQL query/statement/command. Elements of the array are:
Tabulka 1. Status information returned by sesam_diagnostic()
Element | Contents |
---|---|
$array["sqlstate"] | 5 digit SQL return code (see the SESAM manual for the description of the possible values of SQLSTATE) |
$array["rowcount"] | number of affected rows in last update/insert/delete (set after "immediate" statements only) |
$array["errmsg"] | "human readable" error message string (set after errors only) |
$array["errcol"] | error column number of previous error (0-based; or -1 if undefined. Set after errors only) |
$array["errlin"] | error line number of previous error (0-based; or -1 if undefined. Set after errors only) |
In the following example, a syntax error (E SEW42AE ILLEGAL CHARACTER) is displayed by including the offending SQL statement and pointing to the error location:
P°φklad 1. Displaying SESAM error messages with error position
|
See also: sesam_errormsg() for simple access to the error string only
Returns: always TRUE.
sesam_disconnect() closes the logical link to a SESAM database (without actually disconnecting and unloading the driver).
Note that this isn't usually necessary, as the open connection is automatically closed at the end of the script's execution. Uncommitted data will be discarded, because an implicit sesam_rollback() is executed.
sesam_disconnect() will not close the persistent link, it will only invalidate the currently defined "catalog", "schema" and "user" triple, so that any sesam function called after sesam_disconnect() will fail.
See also sesam_connect().
Returns the SESAM error message associated with the most recent SESAM error.
See also sesam_diagnostic() for the full set of SESAM SQL status information.
Returns: A SESAM "result identifier" on success, or FALSE on error.
sesam_execimm() executes an "immediate" statement (i.e., a statement like UPDATE, INSERT or DELETE which returns no result, and has no INPUT or OUTPUT variables). "select type" queries can not be used with sesam_execimm(). Sets the affected_rows value for retrieval by the sesam_affected_rows() function.
Note that sesam_query() can handle both "immediate" and "select-type" queries. Use sesam_execimm() only if you know beforehand what type of statement will be executed. An attempt to use SELECT type queries with sesam_execimm() will return $err["sqlstate"] == "42SBW".
The returned "result identifier" can not be used for retrieving anything but the sesam_affected_rows(); it is only returned for symmetry with the sesam_query() function.
<?php $stmt = "INSERT INTO mytable VALUES ('one', 'two')"; $result = sesam_execimm($stmt); $err = sesam_diagnostic(); echo "sqlstate = " . $err["sqlstate"] . "\n". "Affected rows = " . $err["rowcount"] . " == " . sesam_affected_rows($result) . "\n"; ?> |
See also sesam_query() and sesam_affected_rows().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
sesam_fetch_array() is an alternative version of sesam_fetch_row(). Instead of storing the data in the numeric indices of the result array, it stores the data in associative indices, using the field names as keys.
result_id is a valid result id returned by sesam_query() (select type queries only!).
For the valid values of the optional whenceand offset parameters, see the sesam_fetch_row() function for details.
sesam_fetch_array() fetches one row of data from the result associated with the specified result identifier. The row is returned as an associative array. Each result column is stored with an associative index equal to its column (aka. field) name. The column names are converted to lower case.
Columns without a field name (e.g., results of arithmetic operations) and empty fields are not stored in the array. Also, if two or more columns of the result have the same column names, the later column will take precedence. In this situation, either call sesam_fetch_row() or make an alias for the column.
A special handling allows fetching "multiple field" columns (which would otherwise all have the same column names). For each column of a "multiple field", the index name is constructed by appending the string "(n)" where n is the sub-index of the multiple field column, ranging from 1 to its declared repetition factor. The indices are NOT zero based, in order to match the nomenclature used in the respective query syntax. For a column declared as:
the associative indices used for the individual "multiple field" columns would be "multi(1)", "multi(2)", and "multi(3)" respectively.Subsequent calls to sesam_fetch_array() would return the next (or prior, or n'th next/prior, depending on the scroll attributes) row in the result set, or FALSE if there are no more rows.
P°φklad 1. SESAM fetch array
|
See also: sesam_fetch_row() which returns an indexed array.
Returns a mixed array with the query result entries, optionally limited to a maximum of max_rows rows. Note that both row and column indexes are zero-based.
Tabulka 1. Mixed result set returned by sesam_fetch_result()
Array Element | Contents |
---|---|
int $arr["count"] | number of columns in result set (or zero if this was an "immediate" query) |
int $arr["rows"] | number of rows in result set (between zero and max_rows) |
bool $arr["truncated"] | TRUE if the number of rows was at least max_rows, FALSE otherwise. Note that even when this is TRUE, the next sesam_fetch_result() call may return zero rows because there are no more result entries. |
mixed $arr[col][row] | result data for all the fields at row(row) and column(col), (where the integer index row is between 0 and $arr["rows"]-1, and col is between 0 and $arr["count"]-1). Fields may be empty, so you must check for the existence of a field by using the php isset() function. The type of the returned fields depend on the respective SQL type declared for its column (see SESAM overview for the conversions applied). SESAM "multiple fields" are "inlined" and treated like a sequence of columns. |
See also: sesam_fetch_row(), and sesam_field_array() to check for "multiple fields". See the description of the sesam_query() function for a complete example using sesam_fetch_result().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
The number of columns in the result set is returned in an associative array element $array["count"]. Because some of the result columns may be empty, the count() function can not be used on the result row returned by sesam_fetch_row().
result_id is a valid result id returned by sesam_query() (select type queries only!).
whence is an optional parameter for a fetch operation on "scrollable" cursors, which can be set to the following predefined constants:
Tabulka 1. Valid values for "whence" parameter
Value | Constant | Meaning |
---|---|---|
0 | SESAM_SEEK_NEXT | read sequentially (after fetch, the internal default is set to SESAM_SEEK_NEXT) |
1 | SESAM_SEEK_PRIOR | read sequentially backwards (after fetch, the internal default is set to SESAM_SEEK_PRIOR) |
2 | SESAM_SEEK_FIRST | rewind to first row (after fetch, the default is set to SESAM_SEEK_NEXT) |
3 | SESAM_SEEK_LAST | seek to last row (after fetch, the default is set to SESAM_SEEK_PRIOR) |
4 | SESAM_SEEK_ABSOLUTE | seek to absolute row number given as offset (Zero-based. After fetch, the internal default is set to SESAM_SEEK_ABSOLUTE, and the internal offset value is auto-incremented) |
5 | SESAM_SEEK_RELATIVE | seek relative to current scroll position, where offset can be a positive or negative offset value. |
When using "scrollable" cursors, the cursor can be freely positioned on the result set. If the whence parameter is omitted, the global default values for the scrolling type (initialized to: SESAM_SEEK_NEXT, and settable by sesam_seek_row()) are used. If whence is supplied, its value replaces the global default.
offset is an optional parameter which is only evaluated (and required) if whence is either SESAM_SEEK_RELATIVE or SESAM_SEEK_ABSOLUTE. This parameter is only valid for "scrollable" cursors.
sesam_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array (indexed by values between 0 and $array["count"]-1). Fields may be empty, so you must check for the existence of a field by using the isset() function. The type of the returned fields depend on the respective SQL type declared for its column (see SESAM overview for the conversions applied). SESAM "multiple fields" are "inlined" and treated like a sequence of columns.
Subsequent calls to sesam_fetch_row() would return the next (or prior, or n'th next/prior, depending on the scroll attributes) row in the result set, or FALSE if there are no more rows.
P°φklad 1. SESAM fetch rows
|
See also: sesam_fetch_array() which returns an associative array, and sesam_fetch_result() which returns many rows per invocation.
result_id is a valid result id returned by sesam_query().
Returns a mixed associative/indexed array with meta information (column name, type, precision, ...) about individual columns of the result after the query associated with result_id.
Tabulka 1. Mixed result set returned by sesam_field_array()
Array Element | Contents |
---|---|
int $arr["count"] | Total number of columns in result set (or zero if this was an "immediate" query). SESAM "multiple fields" are "inlined" and treated like the respective number of columns. |
string $arr[col]["name"] | column name for column(col), where col is between 0 and $arr["count"]-1. The returned value can be the empty string (for dynamically computed columns). SESAM "multiple fields" are "inlined" and treated like the respective number of columns, each with the same column name. |
string $arr[col]["count"] | The "count" attribute describes the repetition factor when the column has been declared as a "multiple field". Usually, the "count" attribute is 1. The first column of a "multiple field" column however contains the number of repetitions (the second and following column of the "multiple field" contain a "count" attribute of 1). This can be used to detect "multiple fields" in the result set. See the example shown in the sesam_query() description for a sample use of the "count" attribute. |
string $arr[col]["type"] | PHP variable type of the data for column(col), where col is between 0 and $arr["count"]-1. The returned value can be one of depending on the SQL type of the result. SESAM "multiple fields" are "inlined" and treated like the respective number of columns, each with the same PHP type. |
string $arr[col]["sqltype"] |
SQL variable type of the column data for
column(col), where col
is between 0 and $arr["count"]-1. The
returned value can be one of
|
string $arr[col]["length"] | The SQL "length" attribute of the SQL variable in column(col), where col is between 0 and $arr["count"]-1. The "length" attribute is used with "CHARACTER" and "VARCHAR" SQL types to specify the (maximum) length of the string variable. SESAM "multiple fields" are "inlined" and treated like the respective number of columns, each with the same length attribute. |
string $arr[col]["precision"] | The "precision" attribute of the SQL variable in column(col), where col is between 0 and $arr["count"]-1. The "precision" attribute is used with numeric and time data types. SESAM "multiple fields" are "inlined" and treated like the respective number of columns, each with the same precision attribute. |
string $arr[col]["scale"] | The "scale" attribute of the SQL variable in column(col), where col is between 0 and $arr["count"]-1. The "scale" attribute is used with numeric data types. SESAM "multiple fields" are "inlined" and treated like the respective number of columns, each with the same scale attribute. |
See also sesam_query() for an example of the sesam_field_array() use.
Returns the name of a field (i.e., the column name) in the result set, or FALSE on error.
For "immediate" queries, or for dynamic columns, an empty string is returned.
Poznßmka: The column index is zero-based, not one-based as in SESAM.
See also: sesam_field_array(). It provides an easier interface to access the column names and types, and allows for detection of "multiple fields".
Releases resources for the query associated with result_id. Returns FALSE on error.
After calling sesam_query() with a "select type" query, this function gives you the number of columns in the result. Returns an integer describing the total number of columns (aka. fields) in the current result_id result set or FALSE on error.
For "immediate" statements, the value zero is returned. The SESAM "multiple field" columns count as their respective dimension, i.e., a three-column "multiple field" counts as three columns.
See also: sesam_query() and sesam_field_array() for a way to distinguish between "multiple field" columns and regular columns.
Returns: A SESAM "result identifier" on success, or FALSE on error.
A "result_id" resource is used by other functions to retrieve the query results.
sesam_query() sends a query to the currently active database on the server. It can execute both "immediate" SQL statements and "select type" queries. If an "immediate" statement is executed, then no cursor is allocated, and any subsequent sesam_fetch_row() or sesam_fetch_result() call will return an empty result (zero columns, indicating end-of-result). For "select type" statements, a result descriptor and a (scrollable or sequential, depending on the optional boolean scrollable parameter) cursor will be allocated. If scrollable is omitted, the cursor will be sequential.
When using "scrollable" cursors, the cursor can be freely positioned on the result set. For each "scrollable" query, there are global default values for the scrolling type (initialized to: SESAM_SEEK_NEXT) and the scrolling offset which can either be set once by sesam_seek_row() or each time when fetching a row using sesam_fetch_row().
For "immediate" statements, the number of affected rows is saved for retrieval by the sesam_affected_rows() function.
See also: sesam_fetch_row() and sesam_fetch_result().
P°φklad 1. Show all rows of the "phone" table as a HTML table
|
Returns: TRUE on success, FALSE on errors
sesam_rollback() discards any pending updates to the database. Also affected are result cursors and result descriptors.
At the end of each script, and as part of the sesam_disconnect() function, an implied sesam_rollback() is executed, discarding any pending changes to the database.
See also: sesam_commit().
P°φklad 1. Discarding an update to the SESAM database
|
result_id is a valid result id (select type queries only, and only if a "scrollable" cursor was requested when calling sesam_query()).
whence sets the global default value for the scrolling type, it specifies the scroll type to use in subsequent fetch operations on "scrollable" cursors, which can be set to the following predefined constants:
Tabulka 1. Valid values for "whence" parameter
Value | Constant | Meaning |
---|---|---|
0 | SESAM_SEEK_NEXT | read sequentially |
1 | SESAM_SEEK_PRIOR | read sequentially backwards |
2 | SESAM_SEEK_FIRST | fetch first row (after fetch, the default is set to SESAM_SEEK_NEXT) |
3 | SESAM_SEEK_LAST | fetch last row (after fetch, the default is set to SESAM_SEEK_PRIOR) |
4 | SESAM_SEEK_ABSOLUTE | fetch absolute row number given as offset (Zero-based. After fetch, the default is set to SESAM_SEEK_ABSOLUTE, and the offset value is auto-incremented) |
5 | SESAM_SEEK_RELATIVE | fetch relative to current scroll position, where offset can be a positive or negative offset value (this also sets the default "offset" value for subsequent fetches). |
offset is an optional parameter which is only evaluated (and required) if whence is either SESAM_SEEK_RELATIVE or SESAM_SEEK_ABSOLUTE.
Returns: TRUE if the values are valid, and the settransaction() operation was successful, FALSE otherwise.
sesam_settransaction() overrides the default values for the "isolation level" and "read-only" transaction parameters (which are set in the SESAM configuration file), in order to optimize subsequent queries and guarantee database consistency. The overridden values are used for the next transaction only.
sesam_settransaction() can only be called before starting a transaction, not after the transaction has been started already.
To simplify the use in PHP scripts, the following constants have been predefined in PHP (see SESAM handbook for detailed explanation of the semantics):
Tabulka 1. Valid values for "Isolation_Level" parameter
Value | Constant | Meaning |
---|---|---|
1 | SESAM_TXISOL_READ_UNCOMMITTED | Read Uncommitted |
2 | SESAM_TXISOL_READ_COMMITTED | Read Committed |
3 | SESAM_TXISOL_REPEATABLE_READ | Repeatable Read |
4 | SESAM_TXISOL_SERIALIZABLE | Serializable |
Tabulka 2. Valid values for "Read_Only" parameter
Value | Constant | Meaning |
---|---|---|
0 | SESAM_TXREAD_READWRITE | Read/Write |
1 | SESAM_TXREAD_READONLY | Read-Only |
The values set by sesam_settransaction() will override the default setting specified in the SESAM configuration file.
Session support in PHP consists of a way to preserve certain data across subsequent accesses. This enables you to build more customized applications and increase the appeal of your web site.
A visitor accessing your web site is assigned an unique id, the so-called session id. This is either stored in a cookie on the user side or is propagated in the URL.
The session support allows you to register arbitrary numbers of variables to be preserved across requests. When a visitor accesses your site, PHP will check automatically (if session.auto_start is set to 1) or on your request (explicitly through session_start() or implicitly through session_register()) whether a specific session id has been sent with the request. If this is the case, the prior saved environment is recreated.
V²straha |
If you do turn on session.auto_start then you cannot put objects into your sessions since the class definition has to be loaded before starting the session in order to recreate the objects in your session. |
All registered variables are serialized after the request finishes. Registered variables which are undefined are marked as being not defined. On subsequent accesses, these are not defined by the session module unless the user defines them later.
Poznßmka: Session handling was added in PHP 4.0.
Poznßmka: Please note when working with sessions that a record of a session is not created until a variable has been registered using the session_register() function or by adding a new key to the $_SESSION superglobal array. This holds true regardless of if a session has been started using the session_start() function.
External links: Session fixation
The session module cannot guarantee that the information you store in a session is only viewed by the user who created the session. You need to take additional measures to actively protect the integrity of the session, depending on the value associated with it.
Assess the importance of the data carried by your sessions and deploy additional protections -- this usually comes at a price, reduced convenience for the user. For example, if you want to protect users from simple social engineering tactics, you need to enable session.use_only_cookies. In that case, cookies must be enabled unconditionally on the user side, or sessions will not work.
There are several ways to leak an existing session id to third parties. A leaked session id enables the third party to access all resources which are associated with a specific id. First, URLs carrying session ids. If you link to an external site, the URL including the session id might be stored in the external site's referrer logs. Second, a more active attacker might listen to your network traffic. If it is not encrypted, session ids will flow in plain text over the network. The solution here is to implement SSL on your server and make it mandatory for users.
Tyto funkce jsou k dispozici jako souΦßst standardnφho modulu, kter² je v╛dy dostupn².
Poznßmka: Optionally you can use shared memory allocation (mm), developed by Ralf S. Engelschall, for session storage. You have to download mm and install it. This option is not available for Windows platforms. Note that the session storage module for mm does not guarantee that concurrent accesses to the same session are properly locked. It might be more appropriate to use a shared memory based filesystem (such as tmpfs on Solaris/Linux, or /dev/md on BSD) to store sessions in files, because they are properly locked.
Session support is enabled in PHP by default. If you would not like to build your PHP with session support, you should specify the --disable-session option to configure. To use shared memory allocation (mm) for session storage configure PHP --with-mm[=DIR] .
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Poznßmka: By default, all data related to a particular session will be stored in a file in the directory specified by the session.save_path INI option. A file for each session (regardless of if any data is associated with that session) will be created. This is due to the fact that a session is opened (a file is created) but no data is even written to that file. Note that this behavior is a side-effect of the limitations of working with the file system and it is possible that a custom session handler (such as one which uses a database) does not keep track of sessions which store no data.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Session configuration options
Name | Default | Changeable |
---|---|---|
session.save_path | "/tmp" | PHP_INI_ALL |
session.name | "PHPSESSID" | PHP_INI_ALL |
session.save_handler | "files" | PHP_INI_ALL |
session.auto_start | "0" | PHP_INI_ALL |
session.gc_probability | "1" | PHP_INI_ALL |
session.gc_maxlifetime | "1440" | PHP_INI_ALL |
session.serialize_handler | "php" | PHP_INI_ALL |
session.cookie_lifetime | "0" | PHP_INI_ALL |
session.cookie_path | "/" | PHP_INI_ALL |
session.cookie_domain | "" | PHP_INI_ALL |
session.cookie_secure | "" | PHP_INI_ALL |
session.use_cookies | "1" | PHP_INI_ALL |
session.use_only_cookies | "0" | PHP_INI_ALL |
session.referer_check | "" | PHP_INI_ALL |
session.entropy_file | "" | PHP_INI_ALL |
session.entropy_length | "0" | PHP_INI_ALL |
session.cache_limiter | "nocache" | PHP_INI_ALL |
session.cache_expire | "180" | PHP_INI_ALL |
session.use_trans_sid | "0" | PHP_INI_SYSTEM | PHP_INI_PERDIR |
session.bug_compat_42 | "1" | PHP_INI_ALL |
session.bug_compat_warn | "1" | PHP_INI_ALL |
url_rewriter.tags | "a=href,area=href,frame=src,input=src,form=fakeentry" | PHP_INI_ALL |
The session management system supports a number of configuration options which you can place in your php.ini file. We will give a short overview.
session.save_handler defines the name of the handler which is used for storing and retrieving data associated with a session. Defaults to files. See also session_set_save_handler().
session.save_path defines the argument which is passed to the save handler. If you choose the default files handler, this is the path where the files are created. Defaults to /tmp. See also session_save_path().
There is an optional N argument to this directive that determines the number of directory levels your session files will be spread around in. For example, setting to '5;/tmp' may end up creating a session file and location like /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If . In order to use N you must create all of these directories before use. A small shell script exists in ext/session to do this, it's called mod_files.sh. Also note that if N is used and greater than 0 then automatic garbage collection will not be performed, see a copy of php.ini for further information. Also, if you use N, be sure to surround session.save_path in "quotes" because the separator (;) is also used for comments in php.ini.
Varovßnφ |
If you leave this set to a world-readable directory, such as /tmp (the default), other users on the server may be able to hijack sessions by getting the list of files in that directory. |
Poznßmka: Windows users have to change this variable in order to use PHP's session functions. Make sure to specify a valid path, e.g.: c:/temp.
session.name specifies the name of the session which is used as cookie name. It should only contain alphanumeric characters. Defaults to PHPSESSID. See also session_name().
session.auto_start specifies whether the session module starts a session automatically on request startup. Defaults to 0 (disabled).
session.serialize_handler defines the name of the handler which is used to serialize/deserialize data. Currently, a PHP internal format (name php) and WDDX is supported (name wddx). WDDX is only available, if PHP is compiled with WDDX support. Defaults to php.
session.gc_probability specifies the probability that the gc (garbage collection) routine is started on each request in percent. Defaults to 1.
session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up.
Poznßmka: If you are using the default file-based session handler, your filesystem must keep track of access times (atime). Windows FAT does not so you will have to come up with another way to handle garbage collecting your session if you are stuck with a FAT filesystem or any other fs where atime tracking is not available.
session.referer_check contains the substring you want to check each HTTP Referer for. If the Referer was sent by the client and the substring was not found, the embedded session id will be marked as invalid. Defaults to the empty string.
session.entropy_file gives a path to an external resource (file) which will be used as an additional entropy source in the session id creation process. Examples are /dev/random or /dev/urandom which are available on many Unix systems.
session.entropy_length specifies the number of bytes which will be read from the file specified above. Defaults to 0 (disabled).
session.use_cookies specifies whether the module will use cookies to store the session id on the client side. Defaults to 1 (enabled).
session.use_only_cookies specifies whether the module will only use cookies to store the session id on the client side. Defaults to 0 (disabled, for backward compatibility). Enabling this setting prevents attacks involved passing session ids in URLs. This setting was added in PHP 4.3.0.
session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0.See also session_get_cookie_params() and session_set_cookie_params().
session.cookie_path specifies path to set in session_cookie. Defaults to /.See also session_get_cookie_params() and session_set_cookie_params().
session.cookie_domain specifies the domain to set in session_cookie. Default is none at all. See also session_get_cookie_params() and session_set_cookie_params().
session.cookie_secure specifies whether cookies should only be sent over secure connections. Defaults to off. This setting was added in PHP 4.0.4. See also session_get_cookie_params() and session_set_cookie_params().
session.cache_limiter specifies cache control method to use for session pages (none/nocache/private/private_no_expire/public). Defaults to nocache. See also session_cache_limiter().
session.cache_expire specifies time-to-live for cached session pages in minutes, this has no effect for nocache limiter. Defaults to 180. See also session_cache_expire().
session.use_trans_sid whether transparent sid support is enabled or not. Defaults to 0 (disabled).
Poznßmka: For PHP 4.1.2 or less, it is enabled by compiling with --enable-trans-sid. From PHP 4.2.0, trans-sid feature is always compiled.
URL based session management has additional security risks compared to cookie based session management. Users may send an URL that contains an active session ID to their friends by email or users may save an URL that contains a session ID to their bookmarks and access your site with the same session ID always, for example.
PHP versions 4.2.0 and lower have an undocumented feature/bug that allows you to to initialize a session variable in the global scope, albeit register_globals is disabled. PHP 4.3.0 and later will warn you, if this feature is used, and if session.bug_compat_warn is also enabled.
PHP versions 4.2.0 and lower have an undocumented feature/bug that allows you to to initialize a session variable in the global scope, albeit register_globals is disabled. PHP 4.3.0 and later will warn you, if this feature is used by enabling both session.bug_compat_42 and session.bug_compat_warn.
url_rewriter.tags specifies which HTML tags are rewritten to include session id if transparent sid support is enabled. Defaults to a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=
Poznßmka: If you want XHTML conformity, remove the form entry and use the <fieldset> tags around your form fields.
The track_vars and register_globals configuration settings influence how the session variables get stored and restored.
Poznßmka: As of PHP 4.0.3, track_vars is always turned on.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Constant containing either the session name and session ID in the form of "name=ID" or empty string if session ID was set in an appropriate session cookie.
Poznßmka: As of PHP 4.1.0, $_SESSION is available as a global variable just like $_POST, $_GET, $_REQUEST and so on. Unlike $HTTP_SESSION_VARS, $_SESSION is always global. Therefore, you do not need to use the global keyword for $_SESSION. Please note that this documentation has been changed to use $_SESSION everywhere. You can substitute $HTTP_SESSION_VARS for $_SESSION, if you prefer the former. Also note that you must start your session using session_start() before use of $_SESSION becomes available.
The keys in the $_SESSION associative array are subject to the same limitations as regular variable names in PHP, i.e. they cannot start with a number and must start with a letter or underscore. For more details see the section on variables in this manual.
If register_globals is disabled, only members of the global associative array $_SESSION can be registered as session variables. The restored session variables will only be available in the array $_SESSION.
Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables.
P°φklad 2. Unregistering a variable with $_SESSION and register_globals disabled.
|
V²straha |
Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal. |
P°φklad 3. Unregistering a variable with register_globals enabled, after registering it using $_SESSION.
|
If register_globals is enabled, then each global variable can be registered as session variable. Upon a restart of a session, these variables will be restored to corresponding global variables. Since PHP must know which global variables are registered as session variables, users need to register variables with session_register() function. You can avoid this by simply setting entries in $_SESSION.
V²straha |
If you are using $_SESSION and disable register_globals, do not use session_register(), session_is_registered() and session_unregister(), if your scripts shall work in PHP 4.2 and earlier. You can use these functions in 4.3 and later. If you enable register_globals, session_unregister() should be used since session variables are registered as global variables when session data is deserialized. Disabling register_globals is recommended for both security and performance reasons. |
P°φklad 4. Registering a variable with register_globals enabled
|
If register_globals is enabled, then the global variables and the $_SESSION entries will automatically reference the same values which were registered in the prior session instance.
There is a defect in PHP 4.2.3 and earlier. If you register a new session variable by using session_register(), the entry in the global scope and the $_SESSION entry will not reference the same value until the next session_start(). I.e. a modification to the newly registered global variable will not be reflected by the $_SESSION entry. This has been corrected in PHP 4.3.
There are two methods to propagate a session id:
Cookies
URL parameter
The session module supports both methods. Cookies are optimal, but because they are not always available, we also provide an alternative way. The second method embeds the session id directly into URLs.
PHP is capable of transforming links transparently. Unless you are using PHP 4.2 or later, you need to enable it manually when building PHP. Under Unix, pass --enable-trans-sid to configure. If this build option and the run-time option session.use_trans_sid are enabled, relative URIs will be changed to contain the session id automatically.
Poznßmka: The arg_separator.output php.ini directive allows to customize the argument seperator. For full XHTML conformance, specify & there.
Alternatively, you can use the constant SID which is always defined. If the client did not send an appropriate session cookie, it has the form session_name=session_id. Otherwise, it expands to an empty string. Thus, you can embed it unconditionally into URLs.
The following example demonstrates how to register a variable, and how to link correctly to another page using SID.
P°φklad 5. Counting the number of hits of a single user
|
The strip_tags() is used when printing the SID in order to prevent XSS related attacks.
Printing the SID, like shown above, is not necessary if --enable-trans-sid was used to compile PHP.
Poznßmka: Non-relative URLs are assumed to point to external sites and hence don't append the SID, as it would be a security risk to leak the SID to a different server.
To implement database storage, or any other storage method, you will need to use session_set_save_handler() to create a set of user-level storage functions.
session_cache_expire() returns the current setting of session.cache_expire. The value returned should be read in minutes, defaults to 180. If new_cache_expire is given, the current cache expire is replaced with new_cache_expire.
The cache expire is reset to the default value of 180 stored in session.cache_limiter at request startup time. Thus, you need to call session_cache_expire() for every request (and before session_start() is called).
P°φklad 1. session_cache_expire() example
|
Poznßmka: Setting new_cache_expire is of value only, if session.cache_limiter is set to a value different from nocache.
See also the configuration settings session.cache_expire, session.cache_limiter and session_cache_limiter().
session_cache_limiter() returns the name of the current cache limiter. If cache_limiter is specified, the name of the current cache limiter is changed to the new value.
The cache limiter defines which cache control HTTP headers are sent to the client. These headers determine the rules by which the page content may be cached by the client and intermediate proxies. Setting the cache limiter to nocache disallows any client/proxy caching. A value of public permits caching by proxies and the client, whereas private disallows caching by proxies and permits the client to cache the contents.
In private mode, the Expire header sent to the client may cause confusion for some browsers, including Mozilla. You can avoid this problem by using private_no_expire mode. The expire header is never sent to the client in this mode.
Poznßmka: private_no_expire was added in PHP 4.2.0.
The cache limiter is reset to the default value stored in session.cache_limiter at request startup time. Thus, you need to call session_cache_limiter() for every request (and before session_start() is called).
Also see the session.cache_limiter configuration directive.
session_decode() decodes the session data in data, setting variables stored in the session.
See also session_encode().
session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie.
This function returns TRUE on success and FALSE on failure to destroy the session data.
session_encode() returns a string with the contents of the current session encoded within.
See also session_decode()
The session_get_cookie_params() function returns an array with the current session cookie information, the array contains the following items:
"lifetime" - The lifetime of the cookie.
"path" - The path where information is stored.
"domain" - The domain of the cookie.
"secure" - The cookie should only be sent over secure connections. (This item was added in PHP 4.0.4.)
See also the configuration directives session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_secure, and session_set_cookie_params().
session_id() returns the session id for the current session.
If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose. Depending on the session handler, not all characters are allowed within the session id. For example, the file session handler only allows characters in the range a-z, A-Z and 0-9!
The constant SID can also be used to retrieve the current name and session id as a string suitable for adding to URLs. Note that SID is only defined if the client didn't send the right cookie. See also Session handling.
See also session_start(), session_set_save_handler(), and session.save_handler.
session_is_registered() returns TRUE if there is a global variable with the name name registered in the current session.
Poznßmka: If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use isset() to check a variable is registered in $_SESSION.
V²straha |
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister(). |
session_module_name() returns the name of the current session module. If module is specified, that module will be used instead.
session_name() returns the name of the current session. If name is specified, the name of the current session is changed to its value.
The session name references the session id in cookies and URLs. It should contain only alphanumeric characters; it should be short and descriptive (i.e. for users with enabled cookie warnings). The session name is reset to the default value stored in session.name at request startup time. Thus, you need to call session_name() for every request (and before session_start() or session_register() are called).
See also the session.name configuration directive.
session_regenerate_id() will replace the current session id with a new one, and keep the current session information.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: As of PHP 4.3.3, if session cookies are enabled, use of session_regenerate_id() will also submit a new session cookie with the new session id.
See also session_id(), session_start(), and session_name().
session_register() accepts a variable number of arguments, any of which can be either a string holding the name of a variable or an array consisting of variable names or other arrays. For each name, session_register() registers the global variable with that name in the current session.
V²straha |
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled. |
d∙le╛itß poznßmka k register_globals: Od PHP 4.2.0 je v²chozφ hodnota PHP direktivy register_globals off. SpoleΦenstvφ v²vojß°∙ PHP v╣em doporuΦuje na tΘto direktiv∞ nelp∞t a mφsto toho rad∞ji pou╛φt jinΘ prost°edky, jako nap°φklad superglobals.
V²straha |
This registers a global variable. If you want to register a session variable from within a function, you need to make sure to make it global using the global keyword or the $GLOBALS[] array, or use the special session arrays as noted below. |
V²straha |
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister(). |
This function returns TRUE when all of the variables are successfully registered with the session.
If session_start() was not called before this function is called, an implicit call to session_start() with no parameters will be made. $_SESSION does not mimic this behavior and requires session_start() before use.
You can also create a session variable by simply setting the appropriate member of the $_SESSION or $HTTP_SESSION_VARS (PHP < 4.1.0) array.
<?php // Use of session_register() is deprecated $barney = "A big purple dinosaur."; session_register("barney"); // Use of $_SESSION is preferred, as of PHP 4.1.0 $_SESSION["zim"] = "An invader from another planet."; // The old way was to use $HTTP_SESSION_VARS $HTTP_SESSION_VARS["spongebob"] = "He's got square pants."; ?> |
Poznßmka: It is currently impossible to register resource variables in a session. For example, you cannot create a connection to a database and store the connection id as a session variable and expect the connection to still be valid the next time the session is restored. PHP functions that return a resource are identified by having a return type of resource in their function definition. A list of functions that return resources are available in the resource types appendix.
If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, assign values to $_SESSION. For example: $_SESSION['var'] = 'ABC';
See also session_is_registered(), session_unregister(), and $_SESSION.
session_save_path() returns the path of the current directory used to save session data. If path is specified, the path to which data is saved will be changed. session_save_path() needs to be called before session_start() for that purpose.
Poznßmka: On some operating systems, you may want to specify a path on a filesystem that handles lots of small files efficiently. For example, on Linux, reiserfs may provide better performance than ext2fs.
See also the session.save_path configuration directive.
Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script.
Poznßmka: The secure parameter was added in PHP 4.0.4.
See also the configuration directives session.cookie_lifetime, session.cookie_path, session.cookie_domain, session.cookie_secure, and session_get_cookie_params().
session_set_save_handler() sets the user-level session storage functions which are used for storing and retrieving data associated with a session. This is most useful when a storage method other than those supplied by PHP sessions is preferred. i.e. Storing the session data in a local database. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: The "write" handler is not executed until after the output stream is closed. Thus, output from debugging statements in the "write" handler will never be seen in the browser. If debugging output is necessary, it is suggested that the debug output be written to a file instead.
Poznßmka: The write handler is not executed if the session contains no data; this applies even if empty session variables are registered. This differs to the default file-based session save handler, which creates empty session files.
The following example provides file based session storage similar to the PHP sessions default save handler files. This example could easily be extended to cover database storage using your favorite PHP supported database engine.
Read function must return string value always to make save handler work as expected. Return empty string if there is no data to read. Return values from other handlers are converted to boolean expression. TRUE for success, FALSE for failure.
P°φklad 1. session_set_save_handler() example
|
See also the session.save_handler configuration directive.
session_start() creates a session or resumes the current one based on the current session id that's being passed via a request, such as GET, POST, or a cookie.
This function always returns TRUE.
Poznßmka: If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.
P°φklad 1. A session example: page1.php
|
After viewing page1.php, the second page page2.php will magically contain the session data. Read the session reference for information on propagating session ids as it, for example, explains what the constant SID is all about.
P°φklad 2. A session example: page2.php
|
If you want to use a named session, you must call session_name() before calling session_start().
session_start() will register internal output handler for URL rewriting when trans-sid is enabled. If a user uses ob_gzhandler or like with ob_start(), the order of output handler is important for proper output. For example, user must register ob_gzhandler before session start.
Poznßmka: Use of zlib.output_compression is recommended rather than ob_gzhandler()
Poznßmka: As of PHP 4.3.3, calling session_start() while the session has already been started will result in an error of level E_NOTICE. Also, the second session start will simply be ignored.
See also $_SESSION, session.auto_start, and session_id().
session_unregister() unregisters the global variable named name from the current session.
This function returns TRUE when the variable is successfully unregistered from the session.
Poznßmka: If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use unset() to unregister a session variable. Do not unset() $_SESSION itself as this will disable the special function of the $_SESSION superglobal.
V²straha |
This function does not unset the corresponding global variable for name, it only prevents the variable from being saved as part of the session. You must call unset() to remove the corresponding global variable. |
V²straha |
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister(). |
The session_unset() function frees all session variables currently registered.
Poznßmka: If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used, use unset() to unregister a session variable, i.e. unset ($_SESSION['varname']);.
V²straha |
Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal. |
End the current session and store session data.
Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.
Shmop je snadno pou╛itelnß sada funkcφ, kterß PHP umo╛≥uje Φφst, zapisovat, vytvß°et a mazat segmenty UNIXovΘ sdφlenΘ pam∞ti. Tyto funkce na Windows p°edchßzejφcφch Windows 2000 nefungujφ.
Poznßmka: Nßzvy funkcφ popisovan²ch v tΘto kapitole zaΦφnajφ v PHP 4.0.3 na shm_(), ale od PHP 4.0.4 se jejich nßzvy zm∞nily na shmop_().
P°φklad 1. Shared Memory Operations Overview
|
shmop_close() se pou╛φvß k zav°enφ bloku sdφlenΘ pam∞ti.
shmop_close() p°ijφmß shmid, co╛ je identifikßtor bloku sdφlenΘ pam∞ti vytvo°en² funkcφ shmop_open().
Tato ukßzka zav°e blok sdφlenΘ pam∞ti pojmenovan² $shm_id.
shmop_delete() se pou╛φvß ke smazßnφ bloku sdφlenΘ pam∞ti.
shmop_delete() p°ijφmß shmid, co╛ je identifikßtor bloku sdφlenΘ pam∞ti vytvo°en² funkcφ shmop_open(). P°i ·sp∞chu vracφ 1, jinak 0.
Tato ukßzka sma╛e blok sdφlenΘ pam∞ti pojmenovan² $shm_id.
shmop_open() vytvo°φ nebo otev°e blok sdφlenΘ pam∞ti.
shmop_open() p°ijφmß 4 argumenty: klφΦ, co╛ je system id bloku sdφlenΘ pam∞ti; tento argument m∙╛e b²t p°edßn jako desφtkovΘ nebo hexadecimßlnφ Φφslo. Druh² argument jsou parametry:
"a" pro p°φstup (nastavuje IPC_EXCL) tento parametr pou╛ijte, pokud chcete otev°φt existujφcφ segment sdφlenΘ pam∞ti
"c" pro vytvo°enφ (nastavuje IPC_CREATE) tento parametr pou╛ijte, pokud chcete vytvo°it nov² segment sdφlenΘ pam∞ti
Poznßmka: Pozn.: Pokud otvφrßte existujφcφ segment pam∞ti, 3. 4. argument by m∞ly b²t p°edßny jako 0. P°i ·sp∞chu shmop_open() vracφ id, kterΘ m∙╛ete pou╛φt k p°φstupu na tento segment sdφlenΘ pam∞ti.
Tato ukßzka otev°ela blok sdφlenΘ pam∞ti se system id 0x0fff.
shmop_read() Φte °et∞zec z bloku sdφlenΘ pam∞ti.
shmop_read() p°ijφmß 3 argumenty: shmid, co╛ je id bloku sdφlenΘ pam∞ti vytvo°enΘho funkcφ shmop_open(), start, co╛ je offset na kterΘm mß Φtenφ zaΦφt, a count, co╛ je poΦet byt∙, kterΘ se majφ p°eΦφst.
Tato ukßzka p°eΦte z bloku sdφlenΘ pam∞ti 50 byt∙ a umφstφ naΦtenß data do $shm_data.
shmop_size() se pou╛φvß ke zji╣t∞nφ velikosti bloku sdφlenΘ pam∞ti v bytech.
shmop_size() p°ijφmß shmid, co╛ je idenfifikßtor vytvo°en² funkcφ shmop_open(). shmop_size() vracφ integer p°edstavujφcφ poΦet byt∙, kterΘ blok sdφlenΘ pam∞ti zabφrß.
Tato ukßzka zapφ╣e velikost bloku sdφlenΘ pam∞ti urΦenΘho identifikßtorem $shm_id do $shm_size.
shmop_write() zapφ╣e °et∞zec do bloku sdφlenΘ pam∞ti.
shmop_write() p°ijφmß 3 argumenty: shmid, co╛ je id bloku sdφlenΘ pam∞ti vytvo°enΘho funkcφ shmop_open(), data, co╛ je °et∞zec, kter² se zapφ╣e do bloku sdφlenΘ pam∞ti, a offset, co╛ je offset na kterΘm mß zßpis zaΦφt.
Tato ukßzka zapφ╣e data obsa╛enß v $my_string do bloku sdφlenΘ pam∞ti, a $shm_bytes_written obsahuje poΦet zapsan²ch byt∙.
This is an extension for the SQLite Embeddable SQL Database Engine. SQLite is a C library that implements an embeddable SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process.
SQLite is not a client library used to connect to a big database server. SQLite is the server. The SQLite library reads and writes directly to and from the database files on disk.
Poznßmka: For further information see the SQLite Website (http://sqlite.org/).
Read the INSTALL file, which comes with the package. Or just use the PEAR installer with "pear install sqlite". SQLite itself is already included, You do not need to install any additional software.
Windows users may download the DLL version of the SQLite extension here: (php_sqlite.dll).
Any questions about the extension should be asked on one of the PHP Mailing lists.
In order to have these functions available, you must compile PHP with SQLite support, or load the SQLite extension dynamically from your php.ini.
There are two resources used in the SQLite Interface. The first one is the database connection, the second one the result set.
The functions sqlite_fetch_array() and sqlite_current() use a constant for the different types of result arrays. The following constants are defined:
Tabulka 1. SQLite fetch constants
constant | meaning |
---|---|
SQLITE_ASSOC | Columns are returned into the array having the fieldname as the array index. |
SQLITE_BOTH | Columns are returned into the array having both a numerical index and the fieldname as the array index. |
SQLITE_NUM | Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result. |
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
For further details and definition of the PHP_INI_* constants see ini_set().
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to use mixed case (0), upper case (1) or lower case (2) hash indexes.
This option is primarily useful when you need compatibility with other database systems, where the names of the columns are always returned as uppercase or lowercase, regardless of the case of the actual field names in the database schema.
The SQLite library returns the column names in their natural case (that matches the case you used in your schema). When sqlite.assoc_case is set to 0 the natural case will be preserved. When it is set to 1 or 2, PHP will apply case folding on the hash keys to upper- or lower-case the keys, respectively.
Use of this option incurs a slight performance penalty, but is MUCH faster than performing the case folding yourself using PHP script.
(no version information, might be only in CVS)
sqlite_array_query -- Execute a query against a given database and returns an array.sqlite_array_query() is similar to calling sqlite_query() and then sqlite_fetch_array() for each row of the result set and storing it into an array, as shown in the example below. Calling sqlite_array_query() is significantly faster than using such a script.
Tip: sqlite_array_query() is best suited to queries returning 45 rows or less. If you have more data than that, it is recommended that you write your scripts to use sqlite_unbuffered_query() instead for more optimal performance.
See also sqlite_query(), sqlite_fetch_array(), and sqlite_fetch_string().
(no version information, might be only in CVS)
sqlite_busy_timeout -- Set busy timeout duration, or disable busy handlers.Set the maximum time that sqlite will wait for a dbhandle to become ready for use to milliseconds. If milliseconds is 0, busy handlers will be disabled and sqlite will return immediately with a SQLITE_BUSY status code if another process/thread has the database locked for an update.
PHP sets the default busy timeout to be 60 seconds when the database is opened.
Poznßmka: There are one thousand (1000) milliseconds in one second.
See also sqlite_open().
(no version information, might be only in CVS)
sqlite_changes -- Returns the number of rows that were changed by the most recent SQL statement.Returns the numbers of rows that were changed by the most recent SQL statement executed against the dbhandle database handle.
See also sqlite_num_rows().
Closes the given database handle. If the database was persistent, it will be closed and removed from the persistent list.
See also sqlite_open() and sqlite_popen().
(no version information, might be only in CVS)
sqlite_column -- Fetches a column from the current row of a result set.Fetches the value of a column named index_or_name (if it is a string), or of the ordinal column numbered index_or_name (if it is an integer) from the current row of the query result handle result. The decode binary flag operates in the same way as described under sqlite_fetch_array().
Use this function when you are iterating a large result set with many columns, or with columns that contain large amounts of data.
See also sqlite_fetch_string().
(no version information, might be only in CVS)
sqlite_create_aggregate -- Register an aggregating UDF for use in SQL statements.sqlite_create_aggregate() is similar to sqlite_create_function() except that it registers functions that can be used to calculate a result aggregated across all the rows of a query.
The key difference between this function and sqlite_create_function() is that two functions are required to manage the aggregate; step_func is called for each row of the result set. Your PHP function should accumulate the result and store it into the aggregation context. Once all the rows have been processed, finalize_func will be called and it should then take the data from the aggregation context and return the result.
P°φklad 1. max_length aggregation function example
|
In this example, we are creating an aggregating function that will calculate the length of the longest string in one of the columns of the table. For each row, the max_len_step function is called and passed a context parameter. The context parameter is just like any other PHP variable and be set to hold an array or even an object value. In this example, we are simply using it to hold the maximum length we have seen so far; if the string has a length longer than the current maximum, we update the the context to hold this new maximum length.
After all of the rows have been processed, SQLite calls the max_len_finalize function to determine the aggregate result. Here, we could perform some kind of calculation based on the data found in the context. In our simple example though, we have been calculating the result as the query progressed, so we simply need to return the context value.
Poznßmka: The example above will not work correctly if the column contains binary data. Take a look at the manual page for sqlite_udf_decode_binary() for an explanation of why this is so, and an example of how to make it respect the binary encoding.
Tip: It is NOT recommended for you to store a copy of the values in the context and then process them at the end, as you would cause SQLite to use a lot of memory to process the query - just think of how much memory you would need if a million rows were stored in memory, each containing a string 32 bytes in length.
Tip: You can use sqlite_create_function() and sqlite_create_aggregate() to override SQLite native SQL functions.
See also sqlite_create_function(), sqlite_udf_encode_binary() and sqlite_udf_decode_binary().
(no version information, might be only in CVS)
sqlite_create_function -- Registers a "regular" User Defined Function for use in SQL statements.sqlite_create_function() allows you to register a PHP function with SQLite as an UDF (User Defined Function), so that it can be called from within your SQL statements.
dbhandle specifies the database handle that you wish to extend, function_name specifies the name of the function that you will use in your SQL statements, callback is any valid PHP callback to specify a PHP function that should be called to handle the SQL function. The optional parameter num_args is used as a hint by the SQLite expression parser/evaluator. It is recommended that you specify a value if your function will only ever accept a fixed number of parameters.
The UDF can be used in any SQL statement that can call functions, such as SELECT and UPDATE statements and also in triggers.
P°φklad 1. sqlite_create_function() example
|
In this example, we have a function that calculates the md5 sum of a string, and then reverses it. When the SQL statement executes, it returns the value of the filename transformed by our function. The data returned in $rows contains the processed result.
The beauty of this technique is that you do not need to process the result using a foreach() loop after you have queried for the data.
PHP registers a special function named php when the database is first opened. The php function can be used to call any PHP function without having to register it first.
P°φklad 2. Example of using the PHP function
This example will call the md5() on each filename column in the database and return the result into $rows |
Poznßmka: For performance reasons, PHP will not automatically encode/decode binary data passed to and from your UDF's. You need to manually encode/decode the parameters and return values if you need to process binary data in this way. Take a look at sqlite_udf_encode_binary() and sqlite_udf_decode_binary() for more details.
Tip: It is not recommended to use UDF's to handle processing of binary data, unless high performance is not a key requirement of your application.
Tip: You can use sqlite_create_function() and sqlite_create_aggregate() to override SQLite native SQL functions.
See also sqlite_create_aggregate().
(no version information, might be only in CVS)
sqlite_current -- Fetches the current row from a result set as an array.sqlite_current() is identical to sqlite_fetch_array() except that it does not advance to the next row prior to returning the data; it returns the data from the current position only.
If the current position is beyond the final row, this function returns FALSE
Poznßmka: This function will not work on unbuffered result handles.
See also sqlite_seek(), sqlite_next(), and sqlite_fetch_array().
(no version information, might be only in CVS)
sqlite_error_string -- Returns the textual description of an error code.Returns a human readable description of the error_code returned from sqlite_last_error().
See also sqlite_last_error().
(no version information, might be only in CVS)
sqlite_escape_string -- Escapes a string for use as a query parametersqlite_escape_string() will correctly quote the string specified by item for use in an SQLite SQL statement. This includes doubling up single-quote characters (') and checking for binary-unsafe characters in the query string.
If the item contains a NUL character, or if it begins with a character whose ordinal value is 0x01, PHP will apply a binary encoding scheme so that you can safely store and retrieve binary data.
Although the encoding makes it safe to insert the data, it will render simple text comparisons and LIKE clauses in your queries unusable for the columns that contain the binary data. In practice, this shouldn't be a problem, as your schema should be such that you don't use such things on binary columns (in fact, it might be better to store binary data using other means, such as in files).
Varovßnφ |
addslashes() should NOT be used to quote your strings for SQLite queries; it will lead to strange results when retrieving your data. |
Poznßmka: Do not use this function to encode the return values from UDF's created using sqlite_create_function() or sqlite_create_aggregate() - use sqlite_udf_encode_binary() instead.
See also sqlite_udf_encode_binary().
(no version information, might be only in CVS)
sqlite_fetch_array -- Fetches the next row from a result set as an array.Fetches the next row from the given result handle. If there are no more rows, returns FALSE, otherwise returns an associative array representing the row data.
result_type can be used to specify how you want the results to be returned. The default value is SQLITE_BOTH which returns columns indexed by their ordinal column number and by column name. SQLITE_ASSOC causes the array to be indexed only by column names, and SQLITE_NUM to be indexed only by ordinal column numbers.
The column names returned by SQLITE_ASSOC and SQLITE_BOTH will be case-folded according to the value of the sqlite.assoc_case configuration option.
When decode_binary is set to TRUE (the default), PHP will decode the binary encoding it applied to the data if it was encoded using the sqlite_escape_string(). You will usually always leave this value at its default, unless you are interoperating with databases created by other sqlite capable applications.
See also sqlite_array_query() and sqlite_fetch_string().
(no version information, might be only in CVS)
sqlite_fetch_single -- Fetches the first column of a result set as a string.sqlite_fetch_single() is identical to sqlite_fetch_array() except that it returns the value of the first column of the rowset.
This is the most optimal way to retrieve data when you are only interested in the values from a single column of data.
P°φklad 1. A sqlite_fetch_single() example
|
See also sqlite_fetch_array().
(no version information, might be only in CVS)
sqlite_field_name -- Returns the name of a particular field.Given the ordinal column number, field_index, returns the name of that field in the result handle result.
(no version information, might be only in CVS)
sqlite_has_more -- Returns whether or not more rows are available.sqlite_has_more() returns TRUE if there are more rows available from the result handle, or FALSE otherwise.
See also sqlite_num_rows() and sqlite_changes().
(no version information, might be only in CVS)
sqlite_last_error -- Returns the error code of the last error for a database.Returns the error code from the last operation performed on dbhandle, the database handle. A human readable description of the error code can be retrieved using sqlite_error_string().
See also sqlite_error_string().
(no version information, might be only in CVS)
sqlite_last_insert_rowid -- Returns the rowid of the most recently inserted row.Returns the rowid of the row that was most recently inserted into the database dbhandle, if it was created as an auto-increment field.
Tip: You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema.
(no version information, might be only in CVS)
sqlite_libencoding -- Returns the encoding of the linked SQLite library.The SQLite library may be compiled in either ISO-8859-1 or UTF-8 compatible modes. This function allows you to determine which encoding scheme is used by your version of the library.
Varovßnφ |
The default PHP distribution builds libsqlite in ISO-8859-1 encoding mode. However, this is a misnomer; rather than handling ISO-8859-1, it operates according to your current locale settings for string comparisons and sort ordering. So, rather than ISO-8859-1, you should think of it as being '8-bit' instead. |
When compiled with UTF-8 support, sqlite handles encoding and decoding of UTF-8 multi-byte character sequences, but does not yet do a complete job when working with the data (no normalization is performed for example), and some comparison operations may still not be carried out correctly.
Varovßnφ |
It is not recommended that you use PHP in a web-server configuration with a version of the SQLite library compiled with UTF-8 support, since libsqlite will abort the process if it detects a problem with the UTF-8 encoding. |
See also sqlite_libversion().
(no version information, might be only in CVS)
sqlite_libversion -- Returns the version of the linked SQLite library.Returns the version of the linked SQLite library as a string.
See also sqlite_libencoding().
sqlite_next() advances the result handle result to the next row. Returns FALSE if there are no more rows, TRUE otherwise.
Poznßmka: This function cannot be used with unbuffered result handles.
See also sqlite_seek(), sqlite_current() and sqlite_rewind().
(no version information, might be only in CVS)
sqlite_num_fields -- Returns the number of fields in a result set.Returns the number of fields in the result set.
See also sqlite_column() and sqlite_num_rows().
(no version information, might be only in CVS)
sqlite_num_rows -- Returns the number of rows in a buffered result set.Returns the number of rows in the buffered result set.
Poznßmka: This function cannot be used with unbuffered result sets.
See also sqlite_changes() and sqlite_query().
(no version information, might be only in CVS)
sqlite_open -- Opens a SQLite database. Will create the database if it does not existReturns a resource (database handle) on success, FALSE on error.
The filename parameter is the name of the database. It can be a relative or absolute path to the file that sqlite will use to store your data. If the file does not exist, sqlite will attempt to create it. You MUST have write permissions to the file if you want to insert data or modify the database schema.
The mode parameter specifies the mode of the file and is intended to be used to open the database in read-only mode. Presently, this parameter is ignored by the sqlite library. The default value for mode is the octal value 0666 and this is the recommended value to use if you need access to the errmessage parameter.
errmessage is passed by reference and is set to hold a descriptive error message explaining why the database could not be opened if there was an error.
P°φklad 1. sqlite_open() example
|
Tip: On Unix platforms, SQLite is sensitive to scripts that use the fork() system call. If you do have such a script, it is recommended that you close the handle prior to forking and then re-open it in the child and/or parent. For more information on this issue, see The C language interface to the SQLite library in the section entitled Multi-Threading And SQLite.
Tip: It is not recommended to work with SQLite databases mounted on NFS partitions. Since NFS is notoriously bad when it comes to locking you may find that you cannot even open the database at all, and if it succeeds, the locking behaviour may be undefined.
Poznßmka: Starting with SQLite library version 2.8.2, you can specify :memory: as the filename to create a database that lives only in the memory of the computer. This is useful mostly for temporary processing, as the in-memory database will be destroyed when the process ends. It can also be useful when coupled with the ATTACH DATABASE SQL statement to load other databases and move and query data between them.
Poznßmka: SQLite is bezpeΦn² re╛im and open_basedir aware.
See also sqlite_popen(), sqlite_close() and sqlite_query().
(no version information, might be only in CVS)
sqlite_popen -- Opens a persistent handle to an SQLite database. Will create the database if it does not exist.This function behaves identically to sqlite_open() except that is uses the persistent resource mechanism of PHP. For information about the meaning of the parameters, read the sqlite_open() manual page.
sqlite_popen() will first check to see if a persistent handle has already been opened for the given filename. If it finds one, it returns that handle to your script, otherwise it opens a fresh handle to the database.
The benefit of this approach is that you don't incur the performance cost of re-reading the database and index schema on each page hit served by persistent web server SAPI's (any SAPI except for regular CGI or CLI).
Poznßmka: If you use persistent handles and have the database updated by a background process (perhaps via a crontab), and that process re-creates the database by overwriting it (either by unlinking and rebuilding, or moving the updated version to replace the current version), you may experience undefined behaviour when a persistent handle on the old version of the database is recycled.
To avoid this situation, have your background processes open the same database file and perform their updates in a transaction.
See also sqlite_open(), sqlite_close() and sqlite_query().
(no version information, might be only in CVS)
sqlite_query -- Executes a query against a given database and returns a result handle.Executes an SQL statement given by the query against a given database handle (specified by the dbhandle parameter).
For queries that return rows, this function will return a result handle which can then be used with functions such as sqlite_fetch_array() and sqlite_seek().
For other kinds of queries, this function will return a boolean result; TRUE for success or FALSE for failure.
Regardless of the query type, this function will return FALSE if the query failed.
sqlite_query() returns a buffered, seekable result handle. This is useful for reasonably small queries where you need to be able to randomly access the rows. Buffered result handles will allocate memory to hold the entire result and will not return until it has been fetched. If you only need sequential access to the data, it is recommended that you use the much higher performance sqlite_unbuffered_query() instead.
Poznßmka: Two alternative syntaxes are supported for compatibility with other database extensions (such as MySQL). The preferred form is the first one, where the db parameter is the first parameter to the function.
Varovßnφ |
SQLite will execute multiple queries separated by semicolons, so you can use it to execute a batch of SQL that you have loaded from a file or have embedded in a script. When executing multiple queries, the return value of this function will be FALSE if the was an error, but undefined otherwise (it might be TRUE for success or it might return a result handle). |
See also sqlite_unbuffered_query() and sqlite_array_query().
sqlite_rewind() seeks back to the first row in the result set. Returns FALSE if there are no rows in the result set, TRUE otherwise.
Poznßmka: This function cannot be used with unbuffered result sets.
See also sqlite_next(), sqlite_current(), and sqlite_seek().
(no version information, might be only in CVS)
sqlite_seek -- Seek to a particular row number of a buffered result set.sqlite_seek() seeks to the row given by the parameter rownum. The row number is zero-based (0 is the first row). Returns FALSE if the row does not exist, TRUE otherwise.
Poznßmka: This function cannot be used with unbuffered result handles.
See also sqlite_next(), sqlite_current() and sqlite_rewind().
(no version information, might be only in CVS)
sqlite_udf_decode_binary -- Decode binary data passed as parameters to an UDF.sqlite_udf_decode_binary() decodes the binary encoding that was applied to the parameter by either sqlite_udf_encode_binary() or sqlite_escape_string().
You must call this function on parameters passed to your UDF if you need them to handle binary data, as the binary encoding employed by PHP will obscure the content and of the parameter in its natural, non-coded form.
PHP does not perform this encode/decode operation automatically as it would severely impact performance if it did.
P°φklad 1. binary-safe max_length aggregation function example
|
See also sqlite_udf_encode_binary(), sqlite_create_function() and sqlite_create_aggregate().
(no version information, might be only in CVS)
sqlite_udf_encode_binary -- Encode binary data before returning it from an UDF.sqlite_udf_encode_binary() applies a binary encoding to the data so that it can be safely returned from queries (since the underlying libsqlite API is not binary safe).
If there is a chance that your data might be binary unsafe (e.g.: it contains a NUL byte in the middle rather than at the end, or if it has and 0x01 byte as the first character) then you must call this function to encode the return value from your UDF.
PHP does not perform this encode/decode operation automatically as it would severely impact performance if it did.
Poznßmka: Do not use sqlite_escape_string() to quote strings returned from UDF's as it will lead to double-quoting of the data. Use sqlite_udf_encode_binary() instead!
See also sqlite_udf_decode_binary(), sqlite_escape_string(), sqlite_create_function() and sqlite_create_aggregate().
(no version information, might be only in CVS)
sqlite_unbuffered_query -- Execute a query that does not prefetch and buffer all datasqlite_unbuffered_query() is identical to sqlite_query() except that the result that is returned is a sequential forward-only result set that can only be used to read each row, one after the other.
This function is ideal for generating things such as HTML tables where you only need to process one row at a time and don't need to randomly access the row data.
Poznßmka: Functions such as sqlite_seek(), sqlite_rewind(), sqlite_next(), sqlite_current(), and sqlite_num_rows() do not work on result handles returned from sqlite_unbuffered_query().
See also sqlite_query().
PHP offers the ability to create Shockwave Flash files via Paul Haeberli's libswf module.
Poznßmka: SWF support was added in PHP 4 RC2.
The libswf does not have support for Windows. The development of that library has been stopped, and the source is not available to port it to another systems.
For up to date SWF support take a look at the MING functions.
You need the libswf library to compile PHP with support for this extension. You can download libswf at ftp://ftp.sgi.com/sgi/graphics/grafica/flash/.
Once you have libswf all you need to do is to configure --with-swf[=DIR] where DIR is a location containing the directories include and lib. The include directory has to contain the swf.h file and the lib directory has to contain the libswf.a file. If you unpack the libswf distribution the two files will be in one directory. Consequently you will have to copy the files to the proper location manually.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Once you've successfully installed PHP with Shockwave Flash support you can then go about creating Shockwave files from PHP. You would be surprised at what you can do, take the following code:
P°φklad 1. SWF example
|
The swf_actiongeturl() function gets the URL specified by the parameter url with the target target.
The swf_actiongotoframe() function will go to the frame specified by framenumber, play it, and then stop.
The swf_actiongotolabel() function displays the frame with the label given by the label parameter and then stops.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The swf_actionsettarget() function sets the context for all actions. You can use this to control other flash movies that are currently playing.
Toggle the flash movie between high and low quality.
The swf_actionwaitforframe() function will check to see if the frame, specified by the framenumber parameter has been loaded, if not it will skip the number of actions specified by the skipcount parameter. This can be useful for "Loading..." type animations.
(PHP 4 <= 4.3.2)
swf_addbuttonrecord -- Controls location, appearance and active area of the current buttonThe swf_addbuttonrecord() function allows you to define the specifics of using a button. The first parameter, states, defines what states the button can have, these can be any or all of the following constants: BSHitTest, BSDown, BSOver or BSUp. The second parameter, the shapeid is the look of the button, this is usually the object id of the shape of the button. The depth parameter is the placement of the button in the current frame.
P°φklad 1. swf_addbuttonrecord() example
|
The swf_addcolor() function sets the global add color to the rgba color specified. This color is then used (implicitly) by the swf_placeobject(), swf_modifyobject() and the swf_addbuttonrecord() functions. The color of the object will be add by the rgba values when the object is written to the screen.
Poznßmka: The rgba values can be either positive or negative.
Close a file that was opened by the swf_openfile() function. If the return_file parameter is set then the contents of the SWF file are returned from the function.
P°φklad 1. Creating a simple flash file based on user input and outputting it and saving it in a database
|
The swf_definebitmap() function defines a bitmap given a GIF, JPEG, RGB or FI image. The image will be converted into a Flash JPEG or Flash color map format.
The swf_definefont() function defines a font given by the fontname parameter and gives it the id specified by the fontid parameter. It then sets the font given by fontname to the current font.
The swf_defineline() defines a line starting from the x coordinate given by x1 and the y coordinate given by y1 parameter. Up to the x coordinate given by the x2 parameter and the y coordinate given by the y2 parameter. It will have a width defined by the width parameter.
The swf_definepoly() function defines a polygon given an array of x, y coordinates (the coordinates are defined in the parameter coords). The parameter npoints is the number of overall points that are contained in the array given by coords. The width is the width of the polygon's border, if set to 0.0 the polygon is filled.
The swf_definerect() defines a rectangle with an upper left hand coordinate given by the x, x1, and the y, y1. And a lower right hand coordinate given by the x coordinate, x2, and the y coordinate, y2 . Width of the rectangles border is given by the width parameter, if the width is 0.0 then the rectangle is filled.
Define a text string (the str parameter) using the current font and font size. The docenter is where the word is centered, if docenter is 1, then the word is centered in x.
The swf_endbutton() function ends the definition of the current button.
Ends the current action started by the swf_startdoaction() function.
The swf_endshape() completes the definition of the current shape.
The swf_endsymbol() function ends the definition of a symbol that was started by the swf_startsymbol() function.
The swf_fontsize() function changes the font size to the value given by the size parameter.
Set the current font slant to the angle indicated by the slant parameter. Positive values create a forward slant, negative values create a negative slant.
Set the font tracking to the value specified by the tracking parameter. This function is used to increase the spacing between letters and text, positive values increase the space and negative values decrease the space between letters.
The swf_getbitmapinfo() function returns an array of information about a bitmap given by the bitmapid parameter. The returned array has the following elements:
"size" - The size in bytes of the bitmap.
"width" - The width in pixels of the bitmap.
"height" - The height in pixels of the bitmap.
The swf_getfontinfo() function returns an associative array with the following parameters:
Aheight - The height in pixels of a capital A.
xheight - The height in pixels of a lowercase x.
The swf_getframe() function gets the number of the current frame.
Label the current frame with the name given by the name parameter.
The swf_lookat() function defines a viewing transformation by giving the viewing position (the parameters view_x, view_y, and view_z) and the coordinates of a reference point in the scene, the reference point is defined by the reference_x, reference_y , and reference_z parameters. The twist controls the rotation along with viewer's z axis.
Updates the position and/or color of the object at the specified depth, depth. The parameter how determines what is updated. how can either be the constant MOD_MATRIX or MOD_COLOR or it can be a combination of both (MOD_MATRIX|MOD_COLOR).
MOD_COLOR uses the current mulcolor (specified by the function swf_mulcolor()) and addcolor (specified by the function swf_addcolor()) to color the object. MOD_MATRIX uses the current matrix to position the object.
The swf_mulcolor() function sets the global multiply color to the rgba color specified. This color is then used (implicitly) by the swf_placeobject(), swf_modifyobject() and the swf_addbuttonrecord() functions. The color of the object will be multiplied by the rgba values when the object is written to the screen.
Poznßmka: The rgba values can be either positive or negative.
The swf_oncondition() function describes a transition that will trigger an action list. There are several types of possible transitions, the following are for buttons defined as TYPE_MENUBUTTON:
IdletoOverUp
OverUptoIdle
OverUptoOverDown
OverDowntoOverUp
IdletoOverDown
OutDowntoIdle
MenuEnter (IdletoOverUp|IdletoOverDown)
MenuExit (OverUptoIdle|OverDowntoIdle)
IdletoOverUp
OverUptoIdle
OverUptoOverDown
OverDowntoOverUp
OverDowntoOutDown
OutDowntoOverDown
OutDowntoIdle
ButtonEnter (IdletoOverUp|OutDowntoOverDown)
ButtonExit (OverUptoIdle|OverDowntoOutDown)
The swf_openfile() function opens a new file named filename with a width of width and a height of height a frame rate of framerate and background with a red color of r a green color of g and a blue color of b.
The swf_openfile() must be the first function you call, otherwise your script will cause a segfault. If you want to send your output to the screen make the filename: "php://stdout" (support for this is in 4.0.1 and up).
(PHP 4 <= 4.3.2)
swf_ortho2 -- Defines 2D orthographic mapping of user coordinates onto the current viewportThe swf_ortho2() function defines a two dimensional orthographic mapping of user coordinates onto the current viewport, this defaults to one to one mapping of the area of the Flash movie. If a perspective transformation is desired, the swf_perspective () function can be used.
(4.0.1 - 4.3.2 only)
swf_ortho -- Defines an orthographic mapping of user coordinates onto the current viewportThe swf_ortho() function defines an orthographic mapping of user coordinates onto the current viewport.
The swf_perspective() function defines a perspective projection transformation. The fovy parameter is field-of-view angle in the y direction. The aspect parameter should be set to the aspect ratio of the viewport that is being drawn onto. The near parameter is the near clipping plane and the far parameter is the far clipping plane.
Poznßmka: Various distortion artifacts may appear when performing a perspective projection, this is because Flash players only have a two dimensional matrix. Some are not to pretty.
Places the object specified by objid in the current frame at a depth of depth. The objid parameter and the depth must be between 1 and 65535.
This uses the current mulcolor (specified by swf_mulcolor()) and the current addcolor (specified by swf_addcolor()) to color the object and it uses the current matrix to position the object.
Poznßmka: Full RGBA colors are supported.
The swf_polarview() function defines the viewer's position in polar coordinates. The dist parameter gives the distance between the viewpoint to the world space origin. The azimuth parameter defines the azimuthal angle in the x,y coordinate plane, measured in distance from the y axis. The incidence parameter defines the angle of incidence in the y,z plane, measured in distance from the z axis. The incidence angle is defined as the angle of the viewport relative to the z axis. Finally the twist specifies the amount that the viewpoint is to be rotated about the line of sight using the right hand rule.
The swf_popmatrix() function pushes the current transformation matrix back onto the stack.
(PHP 4 <= 4.3.2)
swf_posround -- Enables or Disables the rounding of the translation when objects are placed or movedThe swf_posround() function enables or disables the rounding of the translation when objects are placed or moved, there are times when text becomes more readable because rounding has been enabled. The round is whether to enable rounding or not, if set to the value of 1, then rounding is enabled, if set to 0 then rounding is disabled.
The swf_pushmatrix() function pushes the current transformation matrix back onto the stack.
The swf_rotate() rotates the current transformation by the angle given by the angle parameter around the axis given by the axis parameter. Valid values for the axis are 'x' (the x axis), 'y' (the y axis) or 'z' (the z axis).
The swf_scale() scales the x coordinate of the curve by the value of the x parameter, the y coordinate of the curve by the value of the y parameter, and the z coordinate of the curve by the value of the z parameter.
The swf_setfont() sets the current font to the value given by the fontid parameter.
The swf_setframe() changes the active frame to the frame specified by framenumber.
The swf_shapearc() function draws a circular arc from angle A given by the ang1 parameter to angle B given by the ang2 parameter. The center of the circle has an x coordinate given by the x parameter and a y coordinate given by the y, the radius of the circle is given by the r parameter.
Draw a cubic bezier curve using the x,y coordinate pairs x1, y1 and x2,y2 as off curve control points and the x,y coordinate x3, y3 as an endpoint. The current position is then set to the x,y coordinate pair given by x3,y3.
The swf_shapecurveto() function draws a quadratic bezier curve from the current location, though the x coordinate given by x1 and the y coordinate given by y1 to the x coordinate given by x2 and the y coordinate given by y2. The current position is then set to the x,y coordinates given by the x2 and y2 parameters
Sets the fill to bitmap clipped, empty spaces will be filled by the bitmap given by the bitmapid parameter.
Sets the fill to bitmap tile, empty spaces will be filled by the bitmap given by the bitmapid parameter (tiled).
The swf_shapefilloff() function turns off filling for the current shape.
The swf_shapefillsolid() function sets the current fill style to solid, and then sets the fill color to the values of the rgba parameters.
The swf_shapelinesolid() function sets the current line style to the color of the rgba parameters and width to the width parameter. If 0.0 is given as a width then no lines are drawn.
The swf_shapelineto() draws a line to the x,y coordinates given by the x parameter & the y parameter. The current position is then set to the x,y parameters.
The swf_shapemoveto() function moves the current position to the x coordinate given by the x parameter and the y position given by the y parameter.
The swf_startbutton() function starts off the definition of a button. The type parameter can either be TYPE_MENUBUTTON or TYPE_PUSHBUTTON. The TYPE_MENUBUTTON constant allows the focus to travel from the button when the mouse is down, TYPE_PUSHBUTTON does not allow the focus to travel when the mouse is down.
The swf_startdoaction() function starts the description of an action list for the current frame. This must be called before actions are defined for the current frame.
The swf_startshape() function starts a complex shape, with an object id given by the objid parameter.
Define an object id as a symbol. Symbols are tiny flash movies that can be played simultaneously. The objid parameter is the object id you want to define as a symbol.
The swf_textwidth() function gives the width of the string, str, in pixels, using the current font and font size.
The swf_translate() function translates the current transformation by the x, y, and z values given.
In order to use the SNMP functions on Unix you need to install the UCD SNMP or NET-SNMP package. On Windows these functions are only available on NT and not on Win95/98.
Important: In order to use the UCD SNMP package, you need to define NO_ZEROLENGTH_COMMUNITY to 1 before compiling it. After configuring UCD SNMP, edit config.h and search for NO_ZEROLENGTH_COMMUNITY. Uncomment the #define line. It should look like this afterwards:
#define NO_ZEROLENGTH_COMMUNITY 1 |
If you see strange segmentation faults in combination with SNMP commands, you did not follow the above instructions. If you do not want to recompile UCD SNMP, you can compile PHP with the --enable-ucd-snmp-hack switch which will work around the misfeature.
The Windows distribution contains support files for SNMP in the mibs directory. This directory should be moved to DRIVE:\usr\mibs, where DRIVE must be replaced with the driveletter where PHP is installed on, e.g.: c:\usr\mibs.
(PHP 3>= 3.0.8, PHP 4 )
snmp_get_quick_print -- Fetches the current value of the UCD library's quick_print settingReturns the current value stored in the UCD Library for quick_print. quick_print is off by default.
Above function call would return FALSE if quick_print is off, and TRUE if quick_print is on.
snmp_get_quick_print() is only available when using the UCD SNMP library. This function is not available when using the Windows SNMP library.
See also snmp_set_quick_print() for a full description of what quick_print does.
(PHP 3>= 3.0.8, PHP 4 )
snmp_set_quick_print -- Set the value of quick_print within the UCD SNMP librarySets the value of quick_print within the UCD SNMP library. When this is set (1), the SNMP library will return 'quick printed' values. This means that just the value will be printed. When quick_print is not enabled (default) the UCD SNMP library prints extra information including the type of the value (i.e. IpAddress or OID). Additionally, if quick_print is not enabled, the library prints additional hex values for all strings of three characters or less.
Setting quick_print is often used when using the information returned rather then displaying it.
<?php snmp_set_quick_print(0); $a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1"); echo "$a< br />\n"; snmp_set_quick_print(1); $a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1"); echo "$a<br />\n"; ?> |
The first value printed might be: 'Timeticks: (0) 0:00:00.00', whereas with quick_print enabled, just '0:00:00.00' would be printed.
By default the UCD SNMP library returns verbose values, quick_print is used to return only the value.
Currently strings are still returned with extra quotes, this will be corrected in a later release.
snmp_set_quick_print() is only available when using the UCD SNMP library. This function is not available when using the Windows SNMP library.
Returns SNMP object value on success and FALSE on error.
The snmpget() function is used to read the value of an SNMP object specified by the object_id. SNMP agent is specified by the hostname and the read community is specified by the community parameter.
(PHP 3>= 3.0.8, PHP 4 )
snmprealwalk -- Return all objects including their respective object ID within the specified one
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Sets the specified SNMP object value, returning TRUE on success and FALSE on error.
The snmpset() function is used to set the value of an SNMP object specified by the object_id. SNMP agent is specified by the hostname and the read community is specified by the community parameter.
Returns an array of SNMP object values starting from the object_id as root and FALSE on error.
snmpwalk() function is used to read all the values from an SNMP agent specified by the hostname. Community specifies the read community for that agent. A NULL object_id is taken as the root of the SNMP objects tree and all objects under that tree are returned as an array. If object_id is specified, all the SNMP objects below that object_id are returned.
Above function call would return all the SNMP objects from the SNMP agent running on localhost. One can step through the values with a loop
Returns an associative array with object ids and their respective object value starting from the object_id as root and FALSE on error.
snmpwalkoid() function is used to read all object ids and their respective values from an SNMP agent specified by the hostname. Community specifies the read community for that agent. A NULL object_id is taken as the root of the SNMP objects tree and all objects under that tree are returned as an array. If object_id is specified, all the SNMP objects below that object_id are returned.
The existence of snmpwalkoid() and snmpwalk() has historical reasons. Both functions are provided for backward compatibility.
Above function call would return all the SNMP objects from the SNMP agent running on localhost. One can step through the values with a loop
The socket extension implements a low-level interface to the socket communication functions based on the popular BSD sockets, providing the possibility to act as a socket server as well as a client.
For a more generic client-side socket interface, see stream_socket_client(), stream_socket_server(), fsockopen(), and pfsockopen().
When using these functions, it is important to remember that while many of them have identical names to their C counterparts, they often have different declarations. Please be sure to read the descriptions to avoid confusion.
Those unfamiliar with socket programming can find a lot of useful material in the appropriate Unix man pages, and there is a great deal of tutorial information on socket programming in C on the web, much of which can be applied, with slight modifications, to socket programming in PHP. The Unix Socket FAQ might be a good start.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
The socket functions described here are part of an extension to PHP which must be enabled at compile time by giving the --enable-sockets option to configure.
Poznßmka: Podpora IPv6 byla p°idßna v PHP 5.0.0 .
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The socket extension was written to provide a useable interface to the powerful BSD sockets. Care has been taken that the functions work equally well on Win32 and Unix implementations. Almost all of the sockets functions may fail under certain conditions and therefore emit an E_WARNING message describing the error. Sometimes this doesn't happen to the desire of the developer. For example the function socket_read() may suddenly emit an E_WARNING message because the connection broke unexpectedly. It's common to suppress the warning with the @-operator and catch the error code within the application with the socket_last_error() function. You may call the socket_strerror() function with this error code to retrieve a string describing the error. See their description for more information.
Poznßmka: The E_WARNING messages generated by the socket extension are in English though the retrieved error message will appear depending on the current locale (LC_MESSAGES):
Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet
P°φklad 1. Socket example: Simple TCP/IP server This example shows a simple talkback server. Change the address and port variables to suit your setup and execute. You may then connect to the server with a command similar to: telnet 192.168.1.53 10000 (where the address and port match your setup). Anything you type will then be output on the server side, and echoed back to you. To disconnect, enter 'quit'.
|
P°φklad 2. Socket example: Simple TCP/IP client This example shows a simple, one-shot HTTP client. It simply connects to a page, submits a HEAD request, echoes the reply, and exits.
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
After the socket socket has been created using socket_create(), bound to a name with socket_bind(), and told to listen for connections with socket_listen(), this function will accept incoming connections on that socket. Once a successful connection is made, a new socket resource is returned, which may be used for communication. If there are multiple connections queued on the socket, the first will be used. If there are no pending connections, socket_accept() will block until a connection becomes present. If socket has been made non-blocking using socket_set_blocking() or socket_set_nonblock(), FALSE will be returned.
The socket resource returned by socket_accept() may not be used to accept new connections. The original listening socket socket, however, remains open and may be reused.
Returns a new socket resource on success, or FALSE on error. The actual error code can be retrieved by calling socket_last_error(). This error code may be passed to socket_strerror() to get a textual explanation of the error.
See also socket_bind(), socket_connect(), socket_listen(), socket_create(), and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
socket_bind() binds the name given in address to the socket described by socket, which must be a valid socket resource created with socket_create().
The address parameter is either an IP address in dotted-quad notation (e.g. 127.0.0.1), if the socket is of the AF_INET family; or the pathname of a Unix-domain socket, if the socket family is AF_UNIX.
The port parameter is only used when connecting to an AF_INET socket, and designates the port on the remote host to which a connection should be made.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error. Note that socket_last_error() is reported to return an invalid error code in case you are trying to bind the socket to a wrong address that does not belong to your Windows 9x/ME machine.
See also socket_connect(), socket_listen(), socket_create(), socket_last_error() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function clears the error code on the given socket or the global last socket error.
This function allows explicitly resetting the error code value either of a socket or of the extension global last error code. This may be useful to detect within a part of the application if an error occurred or not.
See also socket_last_error() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
socket_close() closes the socket resource given by socket.
Poznßmka: socket_close() can't be used on PHP file resources created with fopen(), popen(), fsockopen(), or pfsockopen(); it is meant for sockets created with socket_create() or socket_accept().
See also socket_bind(), socket_listen(), socket_create() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Initiates a connection using the socket resource socket, which must be a valid socket resource created with socket_create().
The address parameter is either an IP address in dotted-quad notation (e.g. 127.0.0.1), if the socket is of the AF_INET family; or the pathname of a Unix domain socket, if the socket family is AF_UNIX.
The port parameter is only used when connecting to an AF_INET socket, and designates the port on the remote host to which a connection should be made.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.
See also socket_bind(), socket_listen(), socket_create(), socket_last_error() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function is meant to ease the task of creating a new socket which only listens to accept new connections.
socket_create_listen() create a new socket resource of type AF_INET listening on all local interfaces on the given port waiting for new connections.
The backlog parameter defines the maximum length the queue of pending connections may grow to. SOMAXCONN may be passed as backlog parameter, see socket_listen() for more information.
socket_create_listen() returns a new socket resource on success or FALSE on error. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.
Poznßmka: If you want to create a socket which only listens on a certain interfaces you need to use socket_create(), socket_bind() and socket_listen().
See also socket_create(), socket_bind(), socket_listen(), socket_last_error() and socket_strerror().
(PHP 4 >= 4.1.0)
socket_create_pair -- Creates a pair of indistinguishable sockets and stores them in fds.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Creates and returns a socket resource, also referred to as an endpoint of communication. A typical network connection is made up of 2 sockets, one performing the role of the client, and another performing the role of the server.
The domain parameter specifies the protocol family to be used by the socket.
Tabulka 1. Available address/protocol families
Domain | Description |
---|---|
AF_INET | IPv4 Internet based protocols. TCP and UDP are common protocols of this protocol family. |
AF_INET6 | IPv6 Internet based protocols. TCP and UDP are common protocols of this protocol family. Support added in PHP 5.0.0. |
AF_UNIX | Local communication protocol family. High efficiency and low overhead make it a great form of IPC (Interprocess Communication). |
The type parameter selects the type of communication to be used by the socket.
Tabulka 2. Available socket types
Type | Description |
---|---|
SOCK_STREAM | Provides sequenced, reliable, full-duplex, connection-based byte streams. An out-of-band data transmission mechanism may be supported. The TCP protocol is based on this socket type. |
SOCK_DGRAM | Supports datagrams (connectionless, unreliable messages of a fixed maximum length). The UDP protocol is based on this socket type. |
SOCK_SEQPACKET | Provides a sequenced, reliable, two-way connection-based data transmission path for datagrams of fixed maximum length; a consumer is required to read an entire packet with each read call. |
SOCK_RAW | Provides raw network protocol access. This special type of socket can be used to manually construct any type of protocol. A common use for this socket type is to perform ICMP requests (like ping, traceroute, etc). |
SOCK_RDM | Provides a reliable datagram layer that does not guarantee ordering. This is most likely not implemented on your operating system. |
The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname(). If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP, and SOL_UDP can also be used.
Tabulka 3. Common protocols
Name | Description |
---|---|
icmp | The Internet Control Message Protocol is used primarily by gateways and hosts to report errors in datagram communication. The "ping" command (present in most modern operating systems) is an example application of ICMP. |
udp | The User Datagram Protocol is a connectionless, unreliable, protocol with fixed record lengths. Due to these aspects, UDP requires a minimum amount of protocol overhead. |
tcp | The Transmission Control Protocol is a reliable, connection based, stream oriented, full duplex protocol. TCP guarantees that all data packets will be received in the order in which they were sent. If any packet is somehow lost during communication, TCP will automatically retransmit the packet until the destination host acknowledges that packet. For reliability and performance reasons, the TCP implementation itself decides the appropriate octet boundaries of the underlying datagram communication layer. Therefore, TCP applications must allow for the possibility of partial record transmission. |
socket_create() Returns a socket resource on success, or FALSE on error. The actual error code can be retrieved by calling socket_last_error(). This error code may be passed to socket_strerror() to get a textual explanation of the error.
Poznßmka: If an invalid domain or type is given, socket_create() defaults to AF_INET and SOCK_STREAM respectively and additionally emits an E_WARNING message.
See also socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_last_error(), and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: This function used to be called socket_getopt() prior to PHP 4.3.0
(PHP 4 >= 4.1.0)
socket_getpeername -- Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
If the given socket is of type AF_INET or AF_INET6, socket_getpeername() will return the peers (remote) IP address in appropriate notation (e.g. 127.0.0.1 or fe80::1) in the address parameter and, if the optional port parameter is present, also the associated port.
If the given socket is of type AF_UNIX, socket_getpeername() will return the Unix filesystem path (e.g. /var/run/daemon.sock) in the address parameter.
Poznßmka: socket_getpeername() should not be used with AF_UNIX sockets created with socket_accept(). Only sockets created with socket_connect() or a primary server socket following a call to socket_bind() will return meaningful values.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. socket_getpeername() may also return FALSE if the socket type is not any of AF_INET, AF_INET6, or AF_UNIX, in which case the last socket error code is not updated.
See also socket_getsockname(), socket_last_error() and socket_strerror().
(PHP 4 >= 4.1.0)
socket_getsockname -- Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type.Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
If the given socket is of type AF_INET or AF_INET6, socket_getsockname() will return the local IP address in appropriate notation (e.g. 127.0.0.1 or fe80::1) in the address parameter and, if the optional port parameter is present, also the associated port.
If the given socket is of type AF_UNIX, socket_getsockname() will return the Unix filesystem path (e.g. /var/run/daemon.sock) in the address parameter.
Poznßmka: socket_getsockname() should not be used with AF_UNIX sockets created with socket_connect(). Only sockets created with socket_accept() or a primary server socket following a call to socket_bind() will return meaningful values.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. socket_getsockname() may also return FALSE if the socket type is not any of AF_INET, AF_INET6, or AF_UNIX, in which case the last socket error code is not updated.
See also socket_getpeername(), socket_last_error() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
socket_iovec_alloc -- Builds a 'struct iovec' for use with sendmsg, recvmsg, writev, and readvVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
socket_iovec_fetch -- Returns the data held in the iovec specified by iovec_id[iovec_position]Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function returns a socket error code.
If a socket resource is passed to this function, the last error which occurred on this particular socket is returned. If the socket resource is omitted, the error code of the last failed socket function is returned. The latter is in particular helpful for functions like socket_create() which don't return a socket on failure and socket_select() which can fail for reasons not directly tied to a particular socket. The error code is suitable to be fed to socket_strerror() which returns a string describing the given error code.
<?php if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { die("Couldn't create socket, error code is: " . socket_last_error() . ",error message is: " . socket_strerror(socket_last_error())); } ?> |
Poznßmka: socket_last_error() does not clear the error code, use socket_clear_error() for this purpose.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
After the socket socket has been created using socket_create() and bound to a name with socket_bind(), it may be told to listen for incoming connections on socket.
A maximum of backlog incoming connections will be queued for processing. If a connection request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED, or, if the underlying protocol supports retransmission, the request may be ignored so that retries may succeed.
Poznßmka: The maximum number passed to the backlog parameter highly depends on the underlying platform. On Linux, it is silently truncated to SOMAXCONN. On win32, if passed SOMAXCONN, the underlying service provider responsible for the socket will set the backlog to a maximum reasonable value. There is no standard provision to find out the actual backlog value on this platform.
socket_listen() is applicable only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.
See also socket_accept(), socket_bind(), socket_connect(), socket_create() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function socket_read() reads from the socket resource socket created by the socket_create() or socket_accept() functions. The maximum number of bytes read is specified by the length parameter. Otherwise you can use \r, \n, or \0 to end reading (depending on the type parameter, see below).
socket_read() returns the data as a string on success, or FALSE on error. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual representation of the error.
Poznßmka: socket_read() may return a zero length string ("") indicating the end of communication (i.e. the remote end point has closed the connection).
Optional type parameter is a named constant:
PHP_BINARY_READ - use the system read() function. Safe for reading binary data. (Default in PHP >= 4.1.0)
PHP_NORMAL_READ - reading stops at \n or \r. (Default in PHP <= 4.0.6)
See also socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_last_error(), socket_strerror() and socket_write().
(PHP 4 >= 4.1.0)
socket_readv -- Reads from an fd, using the scatter-gather array defined by iovec_idVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
socket_recvmsg -- Used to receive messages on a socket, whether connection-oriented or notVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
socket_select -- Runs the select() system call on the given arrays of sockets with a specified timeoutVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
socket_select() accepts arrays of sockets and waits for them to change status. Those coming with BSD sockets background will recognize that those socket resource arrays are in fact the so-called file descriptor sets. Three independent arrays of socket resources are watched.
The sockets listed in the read array will be watched to see if characters become available for reading (more precisely, to see if a read will not block - in particular, a socket resource is also ready on end-of-file, in which case a socket_read() will return a zero length string).
The sockets listed in the write array will be watched to see if a write will not block.
The sockets listed in the except array will be watched for exceptions.
Varovßnφ |
On exit, the arrays are modified to indicate which socket resource actually changed status. |
You do not need to pass every array to socket_select(). You can leave it out and use an empty array or NULL instead. Also do not forget that those arrays are passed by reference and will be modified after socket_select() returns.
P°φklad 1. socket_select() example
|
Poznßmka: Due a limitation in the current Zend Engine it is not possible to pass a constant modifier like NULL directly as a parameter to a function which expects this parameter to be passed by reference. Instead use a temporary variable or an expression with the leftmost member being a temporary variable:
The tv_sec and tv_usec together form the timeout parameter. The timeout is an upper bound on the amount of time elapsed before socket_select() return. tv_sec may be zero , causing socket_select() to return immediately. This is useful for polling. If tv_sec is NULL (no timeout), socket_select() can block indefinitely.
On success socket_select() returns the number of socket resources contained in the modified arrays, which may be zero if the timeout expires before anything interesting happens. On error FALSE is returned. The error code can be retrieved with socket_last_error().
Poznßmka: Be sure to use the === operator when checking for an error. Since the socket_select() may return 0 the comparison with == would evaluate to TRUE:
Poznßmka: Be aware that some socket implementations need to be handled very carefully. A few basic rules:
You should always try to use socket_select() without timeout. Your program should have nothing to do if there is no data available. Code that depends on timeouts is not usually portable and difficult to debug.
No socket resource must be added to any set if you do not intend to check its result after the socket_select() call, and respond appropriately. After socket_select() returns, all socket resources in all arrays must be checked. Any socket resource that is available for writing must be written to, and any socket resource available for reading must be read from.
If you read/write to a socket returns in the arrays be aware that they do not necessarily read/write the full amount of data you have requested. Be prepared to even only be able to read/write a single byte.
It's common to most socket implementations that the only exception caught with the except array is out-of-bound data received on a socket.
See also socket_read(), socket_write(), socket_last_error() and socket_strerror().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function socket_send() sends len bytes to the socket socket from buf
The value of flags can be any ORed combination of the following:
Tabulka 1. possible values for flags
0x1 | Process OOB (out-of-band) data |
0x2 | Peek at incoming message |
0x4 | Bypass routing, use direct interface |
0x8 | Data completes record |
0x100 | Data completes transaction |
See also socket_sendmsg() and socket_sendto().
(PHP 4 >= 4.1.0)
socket_sendmsg -- Sends a message to a socket, regardless of whether it is connection-oriented or notVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function socket_sendto() sends len bytes from buf through the socket socket to the port at the address addr
The value of flags can be one of the following:
Tabulka 1. possible values for flags
0x1 | Process OOB (out-of-band) data. |
0x2 | Peek at incoming message. |
0x4 | Bypass routing, use direct interface. |
0x8 | Data completes record. |
0x100 | Data completes transaction. |
P°φklad 1. socket_sendto() Example
|
See also socket_send() and socket_sendmsg().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also socket_set_nonblock() and socket_set_option()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also socket_set_block() and socket_set_option()
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: This function used to be called socket_setopt() prior to PHP 4.3.0
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The socket_shutdown() function allows you to stop incoming, outgoing or all data (the default) from being sent through the socket
The value of how can be one of the following:
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
socket_strerror() takes as its errno parameter a socket error code as returned by socket_last_error() and returns the corresponding explanatory text. This makes it a bit more pleasant to figure out why something didn't work; for instance, instead of having to track down a system include file to find out what '-111' means, you just pass it to socket_strerror(), and it tells you what happened.
P°φklad 1. socket_strerror() example
The expected output from the above example (assuming the script is not run with root privileges):
|
See also socket_accept(), socket_bind(), socket_connect(), socket_listen(), and socket_create().
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
The function socket_write() writes to the socket socket from buffer.
The optional parameter length can specify an alternate length of bytes written to the socket. If this length is greater then the buffer length, it is silently truncated to the length of the buffer.
Returns the number of bytes successfully written to the socket or FALSE one error. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.
Poznßmka: socket_write() does not necessarily write all bytes from the given buffer. It's valid that, depending on the network buffers etc., only a certain amount of data, even one byte, is written though your buffer is greater. You have to watch out so you don't unintentionally forget to transmit the rest of your data.
Poznßmka: It is perfectly valid for socket_write() to return zero which means no bytes have been written. Be sure to use the === operator to check for FALSE in case of an error.
See also socket_accept(), socket_bind(), socket_connect(), socket_listen(), socket_read() and socket_strerror().
(PHP 4 >= 4.1.0)
socket_writev -- Writes to a file descriptor, fd, using the scatter-gather array defined by iovec_idVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Streams were introduced with PHP 4.3.0 as a way of generalizing file, network, data compression, and other operations which share a common set of functions and uses. In its simplest definition, a stream is a resource object which exhibits streamable behavior. That is, it can be read from or written to in a linear fashion, and may be able to fseek() to an arbitrary locations within the stream.
A wrapper is additional code which tells the stream how to handle specific protocols/encodings. For example, the http wrapper knows how to translate a URL into an HTTP/1.0 request for a file on a remote server. There are many wrappers built into PHP by default (See I), and additional, custom wrappers may be added either within a PHP script using stream_wrapper_register(), or directly from an extension using the API Reference in 43. Because any variety of wrapper may be added to PHP, there is no set limit on what can be done with them. To access the list of currently registered wrappers, use stream_get_wrappers().
A stream is referenced as: scheme://target
scheme(string) - The name of the wrapper to be used. Examples include: file, http, https, ftp, ftps, compress.zlib, compress.bz2, and php. See I for a list of PHP builtin wrappers. If no wrapper is specified, the function default is used (typically file://).
target - Depends on the wrapper used. For filesystem related streams this is typically a path and filename of the desired file. For network related streams this is typically a hostname, often with a path appended. Again, see I for a description of targets for builtin streams.
A filter is a final piece of code which may perform operations on data as it is being read from or written to a stream. Any number of filters may be stacked onto a stream. Custom filters can be defined in a PHP script using stream_filter_register() or in an extension using the API Reference in 43. To access the list of currently registered filters, use stream_get_filters().
A context is a set of parameters and wrapper specific options which modify or enhance the behavior of a stream. Contexts are created using stream_context_create() and can be passed to most filesystem related stream creation functions (i.e. fopen(), file(), file_get_contents(), etc...).
Options can be specified when calling stream_context_create(), or later using stream_context_set_option(). A list of wrapper specific options can be found with the list of built-in wrappers (See I).
In addition, parameters may be set on a context using stream_context_set_params(). Currently the only context parameter supported by PHP is notification. The value of this parameter must be the name of a function to be called when an event occurs on a stream. The notification function called during an event should accept the following six parameters:
void my_notifier ( int notification_code, int severity, string message, int message_code, int bytes_transferred, int bytes_max)notification_code and severity are numerical values which correspond to the STREAM_NOTIFY_* constants listed below. If a descriptive message is available from the stream, message and message_code will be populated with the appropriate values. The meaning of these values is dependent on the specific wrapper in use. bytes_transferred and bytes_max will be populated when applicable.
Streams are an integral part of PHP as of version 4.3.0. No steps are required to enable them.
User designed wrappers can be registered via stream_wrapper_register(), using the class definition shown on that manual page.
class php_user_filter is predefined and is an abstract baseclass for use with user defined filters. See the manual page for stream_filter_register() for details on implementing user defined filters.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Constant | Description |
---|---|
STREAM_FILTER_READ | Used with stream_filter_append() and stream_filter_prepend() to indicate that the specified filter should only be applied when reading |
STREAM_FILTER_WRITE | Used with stream_filter_append() and stream_filter_prepend() to indicate that the specified filter should only be applied when writing |
STREAM_FILTER_ALL | This constant is equivalent to STREAM_FILTER_READ | STREAM_FILTER_WRITE |
PSFS_PASS_ON | Return Code indicating that the userspace filter returned buckets in $out. |
PSFS_FEED_ME | Return Code indicating that the userspace filter did not return buckets in $out (i.e. No data available). |
PSFS_ERR_FATAL | Return Code indicating that the userspace filter encountered an unrecoverable error (i.e. Invalid data received). |
STREAM_USE_PATH | Flag indicating if the stream used the include path. |
STREAM_REPORT_ERRORS | Flag indicating if the wrapper is responsible for raising errors using trigger_error() during opening of the stream. If this flag is not set, you should not raise any errors. |
STREAM_CLIENT_ASYNC_CONNECT | Open client socket asynchronously. Used with stream_socket_client(). |
STREAM_CLIENT_PERSISTENT | Client socket opened with stream_socket_client() should remain persistent between page loads. |
STREAM_SERVER_BIND | Tells a stream created with stream_socket_server() to bind to the specified target. Server sockets should always include this flag. |
STREAM_SERVER_LISTEN | Tells a stream created with stream_socket_server() and bound using the STREAM_SERVER_BIND flag to start listening on the socket. Server sockets should always include this flag. |
STREAM_NOTIFY_RESOLVE | A remote address required for this stream has been resolved, or the resolution failed. See severity for an indication of which happened. |
STREAM_NOTIFY_CONNECT | A connection with an external resource has been established. |
STREAM_NOTIFY_AUTH_REQUIRED | Additional authorization is required to access the specified resource. Typical issued with severity level of STREAM_NOTIFY_SEVERITY_ERR. |
STREAM_NOTIFY_MIME_TYPE_IS | The mime-type of resource has been identified, refer to message for a description of the discovered type. |
STREAM_NOTIFY_FILE_SIZE_IS | The size of the resource has been discovered. |
STREAM_NOTIFY_REDIRECTED | The external resource has redirected the stream to an alternate location. Refer to message. |
STREAM_NOTIFY_PROGRESS | Indicates current progress of the stream transfer in bytes_transferred and possibly bytes_max as well. |
STREAM_NOTIFY_COMPLETED | There is no more data available on the stream. |
STREAM_NOTIFY_FAILURE | A generic error occurred on the stream, consult message and message_code for details. |
STREAM_NOTIFY_AUTH_RESULT | Authorization has been completed (with or without success). |
STREAM_NOTIFY_SEVERITY_INFO | Normal, non-error related, notification. |
STREAM_NOTIFY_SEVERITY_WARN | Non critical error condition. Processing may continue. |
STREAM_NOTIFY_SEVERITY_ERR | A critical error occurred. Processing cannot continue. |
As with any file or socket related function, an operation on a stream may fail for a variety of normal reasons (i.e.: Unable to connect to remote host, file not found, etc...). A stream related call may also fail because the desired stream is not registered on the running system. See the array returned by stream_get_wrappers() for a list of streams supported by your installation of PHP. As with most PHP internal functions if a failure occurs an E_WARNING message will be generated describing the nature of the error.
P°φklad 1. Using file_get_contents() to retrieve data from multiple sources
|
P°φklad 2. Making a POST request to an https server
|
P°φklad 3. Writing data to a compressed file
|
Creates and returns a stream context with any options supplied in options preset.
options must be an associative array of associative arrays in the format $arr['wrapper']['option'] = $value.
P°φklad 1. Using stream_context_create()
|
See Also: stream_context_set_option(), and Listing of supported wrappers with context options (I)
Returns an array of options on the specified stream or context.
Sets an option on the specified context. value is set to option for wrapper
params should be an associative array of the structure: $params['paramname'] = "paramvalue";.
Makes a copy of up to maxlength bytes of data from the current position in source to dest. If maxlength is not specified, all remaining content in source will be copied. Returns the total count of bytes copied.
P°φklad 1. stream_copy_to_stream() example
|
See also copy().
Adds filtername to the list of filters attached to stream. This filter will be added with the specified params to the end of the list and will therefore be called last during stream operations. To add a filter to the beginning of the list, use stream_filter_prepend().
By default, stream_filter_append() will attach the filter to the read filter chain if the file was opened for reading (i.e. File Mode: r, and/or +). The filter will also be attached to the write filter chain if the file was opened for writing (i.e. File Mode: w, a, and/or +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, and/or STREAM_FILTER_ALL can also be passed to the read_write parameter to override this behavior.
P°φklad 1. Controlling where filters are applied
|
When using custom (user) filters: stream_filter_register() must be called first in order to register the desired user filter to filtername.
See also stream_filter_register(), and stream_filter_prepend()
Adds filtername to the list of filters attached to stream. This filter will be added with the specified params to the beginning of the list and will therefore be called first during stream operations. To add a filter to the end of the list, use stream_filter_append().
By default, stream_filter_prepend() will attach the filter to the read filter chain if the file was opened for reading (i.e. File Mode: r, and/or +). The filter will also be attached to the write filter chain if the file was opened for writing (i.e. File Mode: w, a, and/or +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, and/or STREAM_FILTER_ALL can also be passed to the read_write parameter to override this behavior. See stream_filter_append() for an example of using this parameter.
When using custom (user) filters: stream_filter_register() must be called first in order to register the desired user filter to filtername.
See also stream_filter_register(), and stream_filter_append()
(PHP 5 CVS only)
stream_filter_register -- Register a stream filter implemented as a PHP class derived from php_user_filterstream_filter_register() allows you to implement your own filter on any registered stream used with all the other filesystem functions (such as fopen(), fread() etc.).
To implement a filter, you need to define a class as an extension of php_user_filter with a number of member functions as defined below. When performing read/write operations on the stream to which your filter is attached, PHP will pass the data through your filter (and any other filters attached to that stream) so that the data may be modified as desired. You must implement the methods exactly as described below - doing otherwise will lead to undefined behaviour.
stream_filter_register() will return FALSE if the filtername is already defined.
int filter ( resource in, resource out, int &consumed, bool closing)This method is called whenever data is read from or written to the attached stream (such as with fread() or fwrite()). in is a resource pointing to a bucket brigade which contains one or more bucket objects containing data to be filtered. out is a resource pointing to a second bucket brigade into which your modified buckets should be placed. consumed, which must always be declared by reference, should be incremented by the length of the data which your filter reads in and alters. In most cases this means you will increment consumed by $bucket->datalen for each $bucket. If the stream is in the process of closing (and therefore this is the last pass through the filterchain), the closing parameter will be set to TRUE The filter method must return one of three values upon completion.
Return Value | Meaning |
---|---|
PSFS_PASS_ON | Filter processed successfully with data available in the out bucket brigade. |
PSFS_FEED_ME | Filter processed successfully, however no data was available to return. More data is required from the stream or prior filter. |
PSFS_ERR_FATAL (default) | The filter experienced an unrecoverable error and cannot continue. |
This method is called during instantiation of the filter class object. If your filter allocates or initializes any other resources (such as a buffer), this is the place to do it. Your implementation of this method should return FALSE on failure, or TRUE on success.
When your filter is first instantiated, and yourfilter->oncreate() is called, a number of properties will be available as shown in the table below.
Property | Contents |
---|---|
FilterClass->filtername | A string containing the name the filter was instantiated with. Filters may be registered under multiple names or under wildcards. Use this property to determine which name was used. |
FilterClass->params | The contents of the params parameter passed to stream_filter_append() or stream_filter_prepend(). |
This method is called upon filter shutdown (typically, this is also during stream shutdown), and is executed after the flush method is called. If any resources were allocated or initialzed during oncreate this would be the time to destroy or dispose of them.
The example below implements a filter named strtoupper on the foo-bar.txt stream which will capitalize all letter characters written to/read from that stream.
P°φklad 1. Filter for capitalizing characters on foo-bar.txt stream
Output
|
P°φklad 2. Registering a generic filter class to match multiple filter names.
|
See Also: stream_wrapper_register(), stream_filter_prepend(), and stream_filter_append()
(no version information, might be only in CVS)
stream_get_contents -- Reads remainder of a stream into a stringIdentical to file_get_contents(), except that stream_get_contents() operates on an already open file resource and returns the remaining contents, up to maxlength bytes, in a string.
Poznßmka: Tato funkce je binßrn∞ bezpeΦnß.
See also: fgets(), fread(), and fpassthru().
Returns an indexed array containing the name of all stream filters available on the running system.
P°φklad 1. Using stream_get_filters()
Output will be similar to the following Note: there may be more or fewer filters in your version of PHP.
|
See also stream_filter_register(), and stream_get_wrappers()
Returns a string of up to length bytes read from the file pointed to by handle. Reading ends when length bytes have been read, when the string specified by ending is found (which is notincluded in the return value), or on EOF (whichever comes first).
If an error occurs, returns FALSE.
This function is nearly identical to fgets() except in that it allows end of line delimiters other than the standard \n, \r, and \r\n, and does not return the delimiter itself.
Returns information about an existing stream. The stream can be any stream created by fopen(), fsockopen() and pfsockopen(). The result array contains the following items:
timed_out (bool) - TRUE if the stream timed out while waiting for data on the last call to fread() or fgets().
blocked (bool) - TRUE if the stream is in blocking IO mode. See stream_set_blocking().
eof (bool) - TRUE if the stream has reached end-of-file. Note that for socket streams this member can be TRUE even when unread_bytes is non-zero. To determine if there is more data to be read, use feof() instead of reading this item.
unread_bytes (int) - the number of bytes currently contained in the read buffer.
The following items were added in PHP 4.3:
stream_type (string) - a label describing the underlying implementation of the stream.
wrapper_type (string) - a label describing the protocol wrapper implementation layered over the stream. See I for more information about wrappers.
wrapper_data (mixed) - wrapper specific data attached to this stream. See I for more information about wrappers and their wrapper data.
filters (array) - and array containing the names of any filters that have been stacked onto this stream. Filters are currently undocumented.
Poznßmka: This function was introduced in PHP 4.3, but prior to this version, socket_get_status() could be used to retrieve the first four items, for socket based streams only.
In PHP 4.3 and later, socket_get_status() is an alias for this function.
Poznßmka: This function does NOT work on sockets created by the Socket extension.
Returns an indexed array containing the name of all socket transports available on the running system.
See also stream_get_filters(), and stream_get_wrappers()
Returns an indexed array containing the name of all stream wrappers available on the running system.
See also stream_wrapper_register()
This function is an alias of stream_wrapper_register(). This function is included for compatability with PHP 4.3.0 and PHP 4.3.1 only. stream_wrapper_register() should be used instead.
(PHP 4 >= 4.3.0)
stream_select -- Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usecThe stream_select() function accepts arrays of streams and waits for them to change status. Its operation is equivalent to that of the socket_select() function except in that it acts on streams.
The streams listed in the read array will be watched to see if characters become available for reading (more precisely, to see if a read will not block - in particular, a stream resource is also ready on end-of-file, in which case an fread() will return a zero length string).
The streams listed in the write array will be watched to see if a write will not block.
The streams listed in the except array will be watched for high priority exceptional ("out-of-band") data arriving.
Poznßmka: When stream_select() returns, the arrays read, write and except are modified to indicate which stream resource(s) actually changed status.
The tv_sec and tv_usec together form the timeout parameter, tv_sec specifies the number of seconds while tv_usec the number of microseconds. The timeout is an upper bound on the amount of time that stream_select() will wait before it returns. If tv_sec and tv_usec are both set to 0, stream_select() will not wait for data - instead it will return immediately, indicating the current status of the streams. If tv_sec is NULL stream_select() can block indefinitely, returning only when an event on one of the watched streams occurs (or if a signal interrupts the system call).
On success stream_select() returns the number of stream resources contained in the modified arrays, which may be zero if the timeout expires before anything interesting happens. On error FALSE is returned and a warning raised (this can happen if the system call is interrupted by an incoming signal).
Varovßnφ |
Using a timeout value of 0 allows you to instantaneously poll the status of the streams, however, it is NOT a good idea to use a 0 timeout value in a loop as it will cause your script to consume too much CPU time. It is much better to specify a timeout value of a few seconds, although if you need to be checking and running other code concurrently, using a timeout value of at least 200000 microseconds will help reduce the CPU usage of your script. Remember that the timeout value is the maximum time that will elapse; stream_select() will return as soon as the requested streams are ready for use. |
You do not need to pass every array to stream_select(). You can leave it out and use an empty array or NULL instead. Also do not forget that those arrays are passed by reference and will be modified after stream_select() returns.
This example checks to see if data has arrived for reading on either $stream1 or $stream2. Since the timeout value is 0 it will return immediately:
<?php /* Prepare the read array */ $read = array($stream1, $stream2); if (false === ($num_changed_streams = stream_select($read, $write = NULL, $except = NULL, 0))) { /* Error handling */ } elseif ($num_changed_streams > 0) { /* At least on one of the streams something interesting happened */ } ?> |
Poznßmka: Due to a limitation in the current Zend Engine it is not possible to pass a constant modifier like NULL directly as a parameter to a function which expects this parameter to be passed by reference. Instead use a temporary variable or an expression with the leftmost member being a temporary variable:
<?php stream_select($r, $w, $e = NULL, 0); ?>
Poznßmka: Be sure to use the === operator when checking for an error. Since the stream_select() may return 0 the comparison with == would evaluate to TRUE:
<?php if (false === stream_select($r, $w, $e = NULL, 0)) { echo "stream_select() failed\n"; } ?>
Poznßmka: If you read/write to a stream returned in the arrays be aware that they do not necessarily read/write the full amount of data you have requested. Be prepared to even only be able to read/write a single byte.
Windows 98 Note: stream_select() used on a pipe returned from proc_open() may cause data loss under Windows 98.
See also stream_set_blocking()
If mode is FALSE, the given stream will be switched to non-blocking mode, and if TRUE, it will be switched to blocking mode. This affects calls like fgets() and fread() that read from the stream. In non-blocking mode an fgets() call will always return right away while in blocking mode it will wait for data to become available on the stream.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function was previously called as set_socket_blocking() and later socket_set_blocking() but this usage is deprecated.
Poznßmka: Prior to PHP 4.3, this function only worked on socket based streams. Since PHP 4.3, this function works for any stream that supports non-blocking mode (currently, regular files and socket streams).
See also stream_select().
Sets the timeout value on stream, expressed in the sum of seconds and microseconds. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: As of PHP 4.3, this function can (potentially) work on any kind of stream. In PHP 4.3, socket based streams are still the only kind supported in the PHP core, although streams from other extensions may support this function.
This function was previously called as set_socket_timeout() and later socket_set_timeout() but this usage is deprecated.
See also: fsockopen() and fopen().
Output using fwrite() is normally buffered at 8K. This means that if there are two processes wanting to write to the same output stream (a file), each is paused after 8K of data to allow the other to write. stream_set_write_buffer() sets the buffering for write operations on the given filepointer stream to buffer bytes. If buffer is 0 then write operations are unbuffered. This ensures that all writes with fwrite() are completed before other processes are allowed to write to that output stream.
The function returns 0 on success, or EOF if the request cannot be honored.
The following example demonstrates how to use stream_set_write_buffer() to create an unbuffered stream.
(PHP 5 CVS only)
stream_socket_accept -- Accept a connection on a socket created by stream_socket_server()Accept a connection on a socket previously created by stream_socket_server(). If timeout is specified, the default socket accept timeout will be overridden with the time specified in seconds. The name (address) of the client which connected will be passed back in peername if included and available from the selected transport.
peername can also be determined later using stream_socket_get_name().
If the call fails, it will return FALSE.
See also stream_socket_server(), stream_socket_get_name(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fputs(), fclose(), feof(), and the Curl extension.
Initiates a stream or datagram connection to the destination specified by remote_socket. The type of socket created is determined by the transport specified using standard url formatting: transport://target. For Internet Domain sockets (AF_INET) such as TCP and UDP, the target portion of the remote_socket parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem. The optional timeout can be used to set a timeout in seconds for the connect system call. flags is a bitmask field which may be set to any combination of connection flags. Currently the selection of connection flags is limited to STREAM_CLIENT_ASYNC_CONNECT and STREAM_CLIENT_PERSISTENT.
Poznßmka: If you need to set a timeout for reading/writing data over the socket, use stream_set_timeout(), as the timeout parameter to stream_socket_client() only applies while connecting the socket.
stream_socket_client() returns a stream resource which may be used together with the other file functions (such as fgets(), fgetss(), fputs(), fclose(), and feof()).
If the call fails, it will return FALSE and if the optional errno and errstr arguments are present they will be set to indicate the actual system level error that occurred in the system-level connect() call. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference.
Depending on the environment, the Unix domain or the optional connect timeout may not be available. A list of available transports can be retrieved using stream_get_transports(). See J for a list of built in transports.
The stream will by default be opened in blocking mode. You can switch it to non-blocking mode by using stream_set_blocking().
P°φklad 1. stream_socket_client() Example
|
Varovßnφ |
UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data. |
Poznßmka: Kdy╛ zadßvßte Φφselnou IPv6 adresu (nap°. fe80::1), musφte ji uzav°φt do hranat²ch zßvorek. Nap°φklad tcp://[fe80::1]:80.
Returns the local or remote name of a given socket connection. If want_peer is set to TRUE the remote socket name will be returned, if it is set to FALSE the local socket name will be returned.
See also stream_socket_accept()
(no version information, might be only in CVS)
stream_socket_recvfrom -- Receives data from a socket, connected or notThe function stream_socket_recvfrom() accepts data from a remote socket up to length bytes. If address is provided it will be populated with the address of the remote socket.
The value of flags can be any combination of the following:
Tabulka 1. possible values for flags
STREAM_OOB | Process OOB (out-of-band) data. |
STREAM_PEEK | Retrieve data from the socket, but do not consume the buffer. Subsequent calls to fread() or stream_socket_recvfrom() will see the same data. |
P°φklad 1. stream_socket_sendto() Example
|
See also stream_socket_sendto(), stream_socket_client(), and stream_socket_server().
(no version information, might be only in CVS)
stream_socket_sendto -- Sends a message to a socket, whether it is connected or notThe function stream_socket_sendto() sends the data specified by data through the socket specified by socket. The address specified when the socket stream was created will be used unless an alternate address is specified in address.
The value of flags can be any combination of the following:
P°φklad 1. stream_socket_sendto() Example
|
See also stream_socket_recvfrom(), stream_socket_client(), and stream_socket_server().
Creates a stream or datagram socket on the specified local_socket. The type of socket created is determined by the transport specified using standard url formatting: transport://target. For Internet Domain sockets (AF_INET) such as TCP and UDP, the target portion of the remote_socket parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem. flags is a bitmask field which may be set to any combination of socket creation flags. The default value of flags is STREAM_SERVER_BIND | STREAM_SERVER_LISTEN.
This function only creates a socket, to begin accepting connections use stream_socket_accept().
If the call fails, it will return FALSE and if the optional errno and errstr arguments are present they will be set to indicate the actual system level error that occurred in the system-level socket(), bind(), and listen() calls. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the bind() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference.
Depending on the environment, Unix domain sockets may not be available. A list of available transports can be retrieved using stream_get_transports(). See J for a list of bulitin transports.
stream_socket_server().
P°φklad 1. stream_socket_server() Example
|
The example below shows how to act as a time server which can respond to time queries as shown in an example on stream_socket_client().
Poznßmka: Most systems require root access to create a server socket on a port below 1024.
P°φklad 2. Using UDP server sockets
|
Poznßmka: Kdy╛ zadßvßte Φφselnou IPv6 adresu (nap°. fe80::1), musφte ji uzav°φt do hranat²ch zßvorek. Nap°φklad tcp://[fe80::1]:80.
See also stream_socket_client(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fputs(), fclose(), feof(), and the Curl extension.
stream_wrapper_register() allows you to implement your own protocol handlers and streams for use with all the other filesystem functions (such as fopen(), fread() etc.).
To implement a wrapper, you need to define a class with a number of member functions, as defined below. When someone fopens your stream, PHP will create an instance of classname and then call methods on that instance. You must implement the methods exactly as described below - doing otherwise will lead to undefined behaviour.
Poznßmka: As of PHP 5.0.0 the instance of classname will be populated with a context property referencing a Context Resource which may be accessed with stream_context_get_options(). If no context was passed to the stream creation function, context will be set to NULL.
stream_wrapper_register() will return FALSE if the protocol already has a handler.
bool stream_open ( string path, string mode, int options, string opened_path)This method is called immediately after your stream object is created. path specifies the URL that was passed to fopen() and that this object is expected to retrieve. You can use parse_url() to break it apart.
mode is the mode used to open the file, as detailed for fopen(). You are responsible for checking that mode is valid for the path requested.
options holds additional flags set by the streams API. It can hold one or more of the following values OR'd together.
Flag | Description |
---|---|
STREAM_USE_PATH | If path is relative, search for the resource using the include_path. |
STREAM_REPORT_ERRORS | If this flag is set, you are responsible for raising errors using trigger_error() during opening of the stream. If this flag is not set, you should not raise any errors. |
If the path is opened successfully, and STREAM_USE_PATH is set in options, you should set opened_path to the full path of the file/resource that was actually opened.
If the requested resource was opened successfully, you should return TRUE, otherwise you should return FALSE
void stream_close ( void )This method is called when the stream is closed, using fclose(). You must release any resources that were locked or allocated by the stream.
string stream_read ( int count)This method is called in response to fread() and fgets() calls on the stream. You must return up-to count bytes of data from the current read/write position as a string. If there are less than count bytes available, return as many as are available. If no more data is available, return either FALSE or an empty string. You must also update the read/write position of the stream by the number of bytes that were successfully read.
int stream_write ( string data)This method is called in response to fwrite() calls on the stream. You should store data into the underlying storage used by your stream. If there is not enough room, try to store as many bytes as possible. You should return the number of bytes that were successfully stored in the stream, or 0 if none could be stored. You must also update the read/write position of the stream by the number of bytes that were successfully written.
bool stream_eof ( void )This method is called in response to feof() calls on the stream. You should return TRUE if the read/write position is at the end of the stream and if no more data is available to be read, or FALSE otherwise.
int stream_tell ( void )This method is called in response to ftell() calls on the stream. You should return the current read/write position of the stream.
bool stream_seek ( int offset, int whence)This method is called in response to fseek() calls on the stream. You should update the read/write position of the stream according to offset and whence. See fseek() for more information about these parameters. Return TRUE if the position was updated, FALSE otherwise.
bool stream_flush ( void )This method is called in response to fflush() calls on the stream. If you have cached data in your stream but not yet stored it into the underlying storage, you should do so now. Return TRUE if the cached data was successfully stored (or if there was no data to store), or FALSE if the data could not be stored.
array stream_stat ( void )This method is called in response to fstat() calls on the stream and should return an array containing the same values as appropriate for the stream.
bool unlink ( string path)This method is called in response to unlink() calls on URL paths associated with the wrapper and should attempt to delete the item specified by path. It should return TRUE on success or FALSE on failure. In order for the appropriate error message to be returned, do not define this method if your wrapper does not support unlinking.
Poznßmka: Userspace wrapper unlink method is not supported prior to PHP 5.0.0.
This method is called in response to rename() calls on URL paths associated with the wrapper and should attempt to rename the item specified by path_from to the specification given by path_to. It should return TRUE on success or FALSE on failure. In order for the appropriate error message to be returned, do not define this method if your wrapper does not support renaming.
Poznßmka: Userspace wrapper rename method is not supported prior to PHP 5.0.0.
This method is called in response to mkdir() calls on URL paths associated with the wrapper and should attempt to create the directory specified by path. It should return TRUE on success or FALSE on failure. In order for the appropriate error message to be returned, do not define this method if your wrapper does not support creating directories. Posible values for options include STREAM_REPORT_ERRORS and STREAM_MKDIR_RECURSIVE.
Poznßmka: Userspace wrapper mkdir method is not supported prior to PHP 5.0.0.
This method is called in response to rmdir() calls on URL paths associated with the wrapper and should attempt to remove the directory specified by path. It should return TRUE on success or FALSE on failure. In order for the appropriate error message to be returned, do not define this method if your wrapper does not support removing directories. Possible values for options include STREAM_REPORT_ERRORS.
Poznßmka: Userspace wrapper rmdir method is not supported prior to PHP 5.0.0.
This method is called immediately when your stream object is created for examining directory contents with opendir(). path specifies the URL that was passed to opendir() and that this object is expected to explore. You can use parse_url() to break it apart.
array url_stat ( string path, int flags)This method is called in response to stat() calls on the URL paths associated with the wrapper and should return as many elements in common with the system function as possible. Unknown or unavailable values should be set to a rational value (usually 0).
flags holds additional flags set by the streams API. It can hold one or more of the following values OR'd together.
Flag | Description |
---|---|
STREAM_URL_STAT_LINK | For resources with the ability to link to other resource (such as an HTTP Location: forward, or a filesystem symlink). This flag specified that only information about the link itself should be returned. Not the resource pointed to by the link. This flag is set in response to calls to lstat(), is_link(), or filetype(). |
STREAM_URL_STAT_QUIET | If this flag is set, your wrapper should not raise any errors. If this flag is not set, you are responsible for reporting errors using the trigger_error() function during stating of the path. |
This method is called in response to readdir() and should return a string representing the next filename in the location opened by dir_opendir().
bool dir_rewinddir ( void )This method is called in response to rewinddir() and should reset the output generated by dir_readdir(). i.e.: The next call to dir_readdir() should return the first entry in the location returned by dir_opendir().
bool dir_closedir ( void )This method is called in response to closedir(). You should release any resources which were locked or allocated during the opening and use of the directory stream.
The example below implements a var:// protocol handler that allows read/write access to a named global variable using standard filesystem stream functions such as fread(). The var:// protocol implemented below, given the url "var://foo" will read/write data to/from $GLOBALS["foo"].
P°φklad 1. A Stream for reading/writing global variables
|
V╣echny tyto funkce r∙zn²mi zp∙soby pracujφ s °et∞zci. N∞kterΘ specializovan∞j╣φ funkce najdete v sekcφch regulßrnφch v²raz∙ a obsluha URL.
Informace o chovßnφ °et∞zc∙, zvlß╣t∞ v souvislosti s pou╛itφm jednoduch²ch uvozovek, dvojit²ch uvozovek a znak∙ opat°en²ch zp∞tn²mi lomφtky, viz polo╛ky ╪et∞zce v sekci Typy tohoto manußlu.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Dal╣φ informace o mnohem mocn∞j╣φm zachßzenφ s °et∞zci a obslu╛n²mi funkcemi nalezenete v sekcφch POSIX funkce pro regulßrnφ v²razy a Perl kompatibilnφ funkce pro regulßrnφ v²razy.
Vracφ °et∞zec se zp∞tn²mi lomφtky p°ed znaky, kterΘ jsou vypsßny v parametru charlist. Dßle doplnφ \n, \r atd. podobn∞ jako v jazyce C, znaky s ASCII k≤dem ni╛╣φm ne╛ 32 a vy╣╣φm ne╛ 126 se p°evedou na osmiΦkovou reprezentaci.
Pokud zvolφte oescapovat znaky 0, a, b, f, n, r, t a v, budou konvertovßny na \0, \a, \b, \f, \n, \r, \t a \v. V PHP \0 (NULL), \r (carriage return), \n (nov² °ßdek) a \t (tab) jsou p°eddefinovanΘ escape sekvence, while in C all of these are predefined escape sequences.
V charlist m∙╛ete udat rozsah, nap°. "\0..\37", co╛ by escapovalo v╣echny znaky s ASCII k≤dem mezi 0 a 31.
Pakli╛e uvßdφte sekvenci znak∙ v parametru charlist ujist∞te se, ╛e vφte kterΘ dal╣φ znaky jdou mezi znaky, je╛ jsou uvedeny na zaΦßtku a na konci rozsahu.
echo addcslashes('foo[ ]', 'A..z'); // V²stup: \f\o\o\[ \] // V╣echny velkΘ i malΘ znaky budou escapovßny // ... but so will the [\]^_` and any tabs, line // feeds, carriage returns, etc. |
Viz takΘ: stripcslashes(), stripslashes(), htmlspecialchars(), htmlspecialchars() a quotemeta().
Vracφ °et∞zec se zp∞tn²mi lomφtky p°ed znaky, kterΘ by ohly b²t problΘmovΘ v databßzov²ch dotazech apod. Tyto znaky jsou jednoduchß uvozovka ('), dvojitß uvozovka ("), zp∞tnΘ lomφtko (\) a NUL (NULL byte).
P°φklad pou╛itφ funkce addslashes() je kdy╛ vklßdßte data do databßze. Nap°φklad p°i vlo╛enφ jmΘna O'reilly do databßze musφte tento °et∞zec escapovat. V∞t╣ina databßzφ pro to pou╛φvß znak \, z Φeho╛ vyjde O\'reilly. To se pou╛ije pouze pro vlo╛enφ do databßze, lomφtka navφc nebudou ulo╛ena. Nastavenφ PHP direktivy magic_quotes_sybase na on zp∙sobφ, ╛e znak ' je mφsto lomφtka escapovßn dal╣φm znakem '.
PHP direktiva magic_quotes_gpc je v²chozφm nastavenφ nastavena na on, co╛ zp∙sobφ ╛e funkce addslashes() bude pou╛ita na v╣echna data GET, POST a COOKIE. Nepou╛φvejte funkci addslashes() na °et∞zce, kterΘ ji╛ byly escapovßny dφky direktiv∞ magic_quotes_gpc, jinak zp∙sobφte dvojitΘ escapovßnφ. Funkce get_magic_quotes_gpc() se m∙╛e hodit, pro ov∞°enφ nastavenφ tΘto direktivy.
Viz takΘ stripslashes(), htmlspecialchars(), quotemeta() a get_magic_quotes_gpc().
Vracφ ASCII °et∞zec obsahujφcφ hexadecimßlnφ reprezentaci str. Konverze probφhß po bytech, hornφ slabika prvnφ.
Vracφ p°edan² °et∞zec bez netisknuteln²ch znak∙ (vΦ. konc∙ °ßdku) na konci.
Poznßmka: chop() se li╣φ do PerlovskΘ funkce chop(), kterß z °et∞zce odstra≥uje poslednφ znak.
Vracφ °et∞zec jednoho znaku obsahujφcφ znak specifikovan² argumentem ascii.
Dß se pou╛φt k rozd∞lenφ °et∞zce na men╣φ Φßsti, co╛ m∙╛e b²t u╛iteΦnΘ nap°. p°i uvßd∞nφ v²stupu z base64_encode do souladu se sΘmantikou RFC 2045. Ka╛d²ch chunklen (defaultn∞ 76) znak∙ vlo╛φ °et∞zec end (defaultn∞ "\r\n"). Vracφ nov² °et∞zec, p∙vodnφ z∙stßvß beze zm∞ny.
Poznßmka: Tato funkce byla p°idßna v 3.0.6.
Tato funkce p°evede dan² °et∞zec z jednΘ znakovΘ sady azbuky do jinΘ. Argumenty from a to jsou jednotlivΘ znaky, kterΘ p°edstavujφ zdrojovou a cφlovou znakovou sadu Azbuky. PodporovanΘ typy jsou:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillic
PoΦφtß poΦet v²skyt∙ v╣ech byte hodnot (0..255) v string a vracφ je r∙zn²mi zp∙soby. Voliteln² argument Mode mß defaultnφ hodnotu 0. V zßvislosti na mode vracφ count_chars() jednu z nßsledujφcφch mo╛nostφ:
0 - pole s klφΦi tvo°en²mi byte hodnotami a hodnotami tvo°en²mi Φetnostφ ka╛dΘho bytu.
1 - stejnΘ jako 0, ale vracφ pouze byte hodnoty s Φetnostφ vy╣╣φ ne╛ nula.
2 - stejnΘ jako 0, ale vracφ pouze byte hodnoty s Φetnostφ rovnou nule.
3 - vracφ °et∞zec obsahujφcφ v╣echny pou╛itΘ byte hodnoty.
4 - vracφ °et∞zec obsahujφcφ v╣echny nepou╛itΘ byte hodnoty.
Generuje 32bitov² polynomick² kontrolnφ souΦet pro str. Obvykle se pou╛φvß ke kontrole integrity p°enß╣en²ch dat.
Viz takΘ: md5().
crypt() za╣ifruje °et∞zec pomocφ standardnφ UnixovskΘ ╣ifrovacφ metody DES nebo alternativnφho algoritmu dostupnΘho v operaΦnφm systΘmu. Argumenty jsou °et∞zec k za╣ifrovßnφ a voliteln² dvouznakov² °et∞zec salt, na kterΘm se ╣ifrovßnφ zalo╛φ. Vφce informacφ naleznete v UnixovskΘ man strßnce va╣φ crypt funkce.
Nenφ-li uveden salt, PHP jej nßhodn∞ vygeneruje.
N∞kterΘ operaΦnφ systΘmy podporujφ vφce typ∙ ╣ifrovßnφ. N∞kdy se standardnφ DES ╣ifrovßnφ nahrazuje ╣ifrovacφm algoritmem zalo╛en²m na MD5. Typ ╣ifrovßnφ se zvolφ podle argumentu salt. PHP zjistφ pΦi instalaci schopnosti funkce crypt a bude p°ijφmat salt pro dal╣φ typy ╣ifrovßnφ. P°i absenci salt PHP automaticky vygeneruje standardnφ dvouznakov² DES salt a v p°φpad∞, ╛e je v²chozφm typem ╣ifrovßnφ na danΘm systΘmu MD5, vygeneruje nßhodn² salt kompatibilnφ s MD5. PHP vytvß°φ konstantu CRYPT_SALT_LENGTH, kterß vßm °ekne, jestli se na vß╣ systΘm hodφ b∞╛n² dvouznakov² salt nebo del╣φ dvanßctiznakov² MD5 salt.
Pou╛φvßte-li poskytnut² salt, m∞li byste si b²t v∞domi toho, ╛e se generuje jen jednou. Pokud tuto funkci volßte rekurzivn∞, m∙╛e to mφt ·Φinek na vzhled a bezpeΦnost.
U standardnφho DES ╣ifrovßnφ crypt() vracφ salt jako prvnφ dva znaky v²stupu. K tomu takΘ pou╛φvß jen prvnφch osum znak∙ z str, tak╛e del╣φ °et∞zce, ktewrΘ zaΦφnajφ osmi stejn²mi znaky budou generovat i stejn² v²sledek (kdy╛ je pou╛it stejn² salt).
Na systΘmech, kde funkce crypt()() podporuje vφce typ∙ ╣ifrovßnφ se nßsledujφcφ konstanty nastavφ na 0 nebo 1 podle toho, zda je dan² typ dostupn²:
CRYPT_STD_DES - Standardnφ DES ╣ifrovßnφ s dvouznakov²m SALT
CRYPT_EXT_DES - Roz╣φ°enΘ DES ╣ifrovßnφ s devφtiznakov²m SALT
CRYPT_MD5 - MD5 ╣ifrovßnφ s dvanßctiznakov²m SALT zaΦφnajφcφm $1$
CRYPT_BLOWFISH - Roz╣φ°enΘ DES ╣ifrovßnφ s ╣estnßctiznakov²m SALT zaΦφnajφcφm $2$
Poznßmka: Neexistuje ╛ßdnß decrypt funkce, proto╛e crypt() pou╛φvß jednosm∞rn² algoritmus.
P°φklad 1. crypt() p°φklad
|
Dßle takΘ md5() a Mcrypt p°φkazy.
Vytiskne v╣echny parametry.
echo() vlastn∞ nenφ funkce (je to jazykov² konstrukt), tak╛e u n∞j nemusφte pou╛φvat zßvorky. Opravdu, pokud byste pot°ebovali vytisknout vφce ne╛ jeden parametr, nemohli byste dokonce zßvorky v∙bec pou╛φt. Proto nelze pou╛φt echo() ani pro prom∞nnou funkci, ov╣em mφsto toho m∙╛ete pou╛φt funkci print().
P°φklad 1. Ukßzka echo()
|
echo() takΘ mß zkrßcenou syntaxi, kdy je mo╛nΘ nßsledn∞ za otvφracφm php tagem pou╛φt jen znak rovnß se.
Poznßmka: Tato zkrßcenß syntaxe bude fungovat pouze jsou-li povoleny zkrßcenΘ otvφracφ php tagy; short_open_tag je nastaveno na "on".
Vracφ pole °et∞zc∙, z nich╛ ka╛d² je Φßstφ argumentu string vznikl² jeho rozd∞lenφm na hranicφch tvo°en²ch °et∞zcem separator. Pokud je definovßn limit, vrßcenΘ pole bude obsahovat maximßln∞ limit prvk∙, a poslednφ prvek bude obsahovat cel² zbytek string.
Poznßmka: Je-li separator prßzdn² °et∞zec (""), explode() vrßtφ FALSE. Pokud separator obsahuje hodnotu, kterß nenφ obsa╛ena v string, pak explode() vrßtφ pole obsahujφcφ cel² string.
Argument limit byl p°idßn v PHP 4.0.1
Poznßmka: I kdy╛ implode() m∙╛e z historick²ch d∙vod∙ p°ijφmat argumenty v obou mo╛n²ch po°adφch, explode() nem∙╛e. Musφte se ujistit, ╛e je argument separator p°ed argumentem string.
Viz takΘ: preg_split(), spliti(), split() a implode().
Write a string produced according to the formatting string format to the stream resource specified by handle..
The format string is composed of zero or more directives: ordinary characters (excluding %) that are copied directly to the result, and conversion specifications, each of which results in fetching its own parameter. This applies to fprintf(), sprintf(), and printf().
Each conversion specification consists of a percent sign (%), followed by one or more of these elements, in order:
An optional padding specifier that says what character will be used for padding the results to the right string size. This may be a space character or a 0 (zero character). The default is to pad with spaces. An alternate padding character can be specified by prefixing it with a single quote ('). See the examples below.
An optional alignment specifier that says if the result should be left-justified or right-justified. The default is right-justified; a - character here will make it left-justified.
An optional number, a width specifier that says how many characters (minimum) this conversion should result in.
An optional precision specifier that says how many decimal digits should be displayed for floating-point numbers. This option has no effect for other types than float. (Another function useful for formatting numbers is number_format().)
A type specifier that says what type the argument data should be treated as. Possible types:
% - a literal percent character. No argument is required. |
b - the argument is treated as an integer, and presented as a binary number. |
c - the argument is treated as an integer, and presented as the character with that ASCII value. |
d - the argument is treated as an integer, and presented as a (signed) decimal number. |
u - the argument is treated as an integer, and presented as an unsigned decimal number. |
f - the argument is treated as a float, and presented as a floating-point number. |
o - the argument is treated as an integer, and presented as an octal number. |
s - the argument is treated as and presented as a string. |
x - the argument is treated as an integer and presented as a hexadecimal number (with lowercase letters). |
X - the argument is treated as an integer and presented as a hexadecimal number (with uppercase letters). |
See also: printf(), sprintf(), sscanf(), fscanf(), vsprintf(), and number_format().
P°φklad 1. sprintf(): zero-padded integers
|
P°φklad 2. sprintf(): formatting currency
|
(PHP 4 )
get_html_translation_table -- Vracφ p°ekladovou tabulku pou╛φvanou v htmlspecialchars() a htmlentities()get_html_translation_table() vracφ p°ekladovou tabulku, kterß se intern∞ pou╛φvß ve funkcφch htmlspecialchars() a htmlentities(). Dv∞ novΘ konstanty (HTML_ENTITIES, HTML_SPECIALCHARS) vßm umo╛≥ujφ urΦit, kterou tabulku chcete. A stejn∞ jako u funkcφ htmlspecialchars() a htmlentities() m∙╛ete p°φpadn∞ urΦit quote_style se kter²m pracujete. Defaultnφ hodnota je ENT_COMPAT m≤d. Viz popis t∞chto m≤d∙ u htmlspecialchars().
Skv∞lΘ je, ╛e pomocφ array_flip() m∙╛ete zm∞nit sm∞r p°ekladu.
Obsahem $original je: "Hallo & <Frau> & KrΣmer".Poznßmka: Tato funkce byla p°idßna v PHP 4.0.
Viz takΘ: htmlspecialchars(), htmlentities(), strtr() a array_flip().
Voliteln² argument max_chars_per_line indikuje maximßlnφ poΦet znak∙ na °ßdek v²stupu. Funkce se sna╛φ nerozd∞lovat slova.
Viz takΘ: hebrevc().
Tato funkce se podobß hebrev() s tφm rozdφlem, ╛e p°evßdφ konce °ßdk∙ (\n) na "<br>\n". Voliteln² argument max_chars_per_line indikuje maximßlnφ poΦet znak∙ na °ßdek v²stupu. Funkce se sna╛φ nerozd∞lovat slova.
Viz takΘ: hebrev().
html_entity_decode() is the opposite of htmlentities() in that it converts all HTML entities to their applicable characters from string.
The optional second quote_style parameter lets you define what will be done with 'single' and "double" quotes. It takes on one of three constants with the default being ENT_COMPAT:
Tabulka 1. Available quote_style constants
Constant Name | Description |
---|---|
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone. |
ENT_QUOTES | Will convert both double and single quotes. |
ENT_NOQUOTES | Will leave both double and single quotes unconverted. |
The ISO-8859-1 character set is used as default for the optional third charset. This defines the character set used in conversion. Support for this third argument was added in PHP 4.1.0.
Following character sets are supported in PHP 4.3.0 and later.
Tabulka 2. Supported charsets
Charset | Aliases | Description |
---|---|---|
ISO-8859-1 | ISO8859-1 | Western European, Latin-1 |
ISO-8859-15 | ISO8859-15 | Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1(ISO-8859-1). |
UTF-8 | ASCII compatible multi-byte 8-bit Unicode. | |
cp866 | ibm866, 866 | DOS-specific Cyrillic charset. This charset is supported in 4.3.2. |
cp1251 | Windows-1251, win-1251, 1251 | Windows-specific Cyrillic charset. This charset is supported in 4.3.2. |
cp1252 | Windows-1252, 1252 | Windows specific charset for Western European. |
KOI8-R | koi8-ru, koi8r | Russian. This charset is supported in 4.3.2. |
BIG5 | 950 | Traditional Chinese, mainly used in Taiwan. |
GB2312 | 936 | Simplified Chinese, national standard character set. |
BIG5-HKSCS | Big5 with Hong Kong extensions, Traditional Chinese. | |
Shift_JIS | SJIS, 932 | Japanese |
EUC-JP | EUCJP | Japanese |
Poznßmka: Any other character sets are not recognized and ISO-8859-1 will be used instead.
P°φklad 1. Decoding HTML entities
|
Poznßmka: You might wonder why trim(html_entity_decode(' ')); doesn't reduce the string to an empty string, that's because the ' ' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 characterset.
See also htmlentities(), htmlspecialchars(), get_html_translation_table(), htmlspecialchars() and urldecode().
Tato funkce je ve v╣em shodnß s htmlspecialchars() krom∞ toho, ╛e na HTML entity se p°evedou v╣echny znaky, kterΘ majφ odpovφdajφcφ entity. Stejn∞ jako htmlspecialchars() p°ijφmß voliteln² druh² argument, kter² indikuje, co se mß stßt s jednoduch²mi a dvojit²mi uvozovkami. ENT_COMPAT (default) p°evede pouze dvojitΘ uvozovky, ENT_QUOTES p°evede dvojitΘ i jednoduchΘ uvozovky, a ENT_NOQUOTES ponechß jednoduchΘ i dvojitΘ uvozovky bez konverze.
V souΦasnosti se jako v²chozφ znakovß sada pou╛φvß ISO-8859-1. Voliteln² druh² argument byl p°idßn v PHP 3.0.17 a PHP 4.0.3.
Stejn∞ jako htmlspecialchars() lze pomocφ t°etφho parametru nastavit znakovou sadu, kterß mß b²t pou╛ita p°i konverzi °et∞zce. Tento t°etφ parametr byl p°idßn v PHP 4.1.0.
Neexistuje ╛ßdnß zp∞tnß funkce. Ka╛dopßdn∞ si m∙╛ete vytvo°it vlastnφ. Nßsleduje p°φklad jak na to.
Viz takΘ: htmlspecialchars() a nl2br().
N∞kterΘ znaky majφ v HTML zvlß╣tnφ v²znam, a pokud si majφ zachovat b∞╛n² v²znam, m∞ly by b²t reprezentovßny HTML entitami. Tato funkce vracφ °et∞zec, ve kterΘm do╣lo k n∞kter²m z t∞chto konverzφ; provßd∞jφ se ty p°eklady, kterΘ jsou v ka╛dodennφm programovßnφ pro web neju╛iteΦn∞j╣φ. Pokud po╛adujete p°eklad v╣ech znakov²ch entit HTML, pou╛ijte htmlentities().
Tato funkce je u╛iteΦnß, pokud se chcete chrßnit p°ed p°φpadn²m v²skytem HTML v textu dodanΘm u╛ivateli, nap°φklad u aplikacφ typu kniha host∙ nebo diskusnφ skupina. Voliteln² druh² argument, quote_style, urΦuje, co se mß stßt s jednoduch²mi a dvojit²mi uvozovkami. Defaultnφ m≤d, ENT_COMPAT, je zp∞tn∞ kompatibilnφ m≤d, konvertuje pouze dvojitΘ uvozovky a jednoduchΘ uvozovky ponechßvß nep°elo╛enΘ. Pokud zadßte ENT_QUOTES, p°elo╛φ se jednoduchΘ i dvojitΘ uvozovky, a pokud zadßte ENT_NOQUOTES, oba druhy z∙stanou bez p°ekladu.
Dochßzφ k t∞mto p°eklad∙m:
'&' (ampersand) se stßvß '&'
'"' (dvojitß uvozovka) se stßvß '"' when ENT_NOQUOTES is not set.
''' (jednoduchß uvozovka) se stßvß ''' only when ENT_QUOTES is set.
'<' (men╣φ ne╛) se stßvß '<'
'>' (v∞t╣φ ne╛) se stßvß '>'
Poznßmka: tato funkce provßdφ pouze v²╣e uvedenΘ p°eklady. Kompletnφ p°eklad entit viz htmlentities(). Voliteln² druh² argument byl p°idßn v PHP 3.0.17 a PHP 4.0.3.
T°etφ parametr charset definuje k≤dovou strßnku pou╛itou pro p°evod. V²chozφ k≤dovß strßnka je ISO-8859-1. T°etφ parametr je k dispozici od PHP 4.1.0.
Viz takΘ get_html_translation_table(), strip_tags(), htmlentities() a nl2br().
Vracφ °et∞zec obsahujφcφ °et∞zcovou reprezentaci v╣ech prvk∙ pole v p∙vodnφm po°adφ s °et∞zcem glue mezi ka╛d²mi dv∞ma prvky.
Poznßmka: implode() m∙╛e z historick²ch d∙vod∙ p°ijφmat argumenty v obou mo╛n²ch po°adφch. Kv∙li konzistenci s explode() se ale doporuΦuje pou╛φvat dokumentovanΘ po°adφ argument∙.
Funkce join() je alias k implode(), a je ve v╣ech ohledech stejnß.
(PHP 3>= 3.0.17, PHP 4 >= 4.0.1)
levenshtein -- SpoΦφtat XXX Levenshteinovu vzdßlenost mezi dv∞ma °et∞zciTato funkce vracφ XXX Levenshtein-Distance mezi p°edan²mi °et∞zci nebo -1, pokud dΘlka jednoho z p°edan²ch °et∞zc∙ p°esßhne omezenφ 255 znak∙ (255 by m∞lo b²t pro b∞╛nß porovnßnφ vφc ne╛ dost, a nikdo se zdrav²m rozumem nebude v PHP d∞lat genetickou anal²zu).
Levenshteinova vzdßlenost se definuje jako minimßlnφ poΦet znaku, kterΘ musφte nahradit, vlo╛it nebo smazat, abyste zm∞nili str1 na str2. Slo╛itost tohoto algoritmu je O(m*n), kde n a m jsou dΘlky str1 a str2 (celkem slu╣nΘ v porovnßnφ se similar_text(), kter² je O(max(n,m)**3), ale i tak drahΘ).
Ve svΘ nejjednodu╣╣φ podob∞ tato funkce pouze vezme dva °et∞zce jako argumenty a spoΦφtß poΦet vlo╛enφ, nahrazenφ a smazßnφ nutn²ch k transformaci str1 na str2.
Druhß varianta p°ijme t°i dal╣φ argumenty, kterΘ definujφ nßklady na operace vlo╛enφ, nahrazeni a smazßnφ. Tato varianta je v╣eobecn∞j╣φ a p°izp∙sobiv∞j╣φ ne╛ varianta prvnφ, ale ne tak v²konnß.
T°etφ varianta (zatφm neimplementovanß) bude nejv╣eobecn∞j╣φ a nejp°izp∙sobiv∞j╣φ, ale takΘ nejpomalej╣φ alternativou. Bude volat u╛ivatelskou funkci, kterß urΦφ nßklady na v╣echny mo╛nΘ operace.
Tato u╛ivatelskß funkce se bude volat s nßsledujφcφmi argumenty:
operatce, kterß se mß provΘst: 'I', 'R' or 'D'
p∙vodnφ znak v °et∞zci 1
p∙vodnφ znak v °et∞zci 2
pozice v °et∞zci 1
pozice v °et∞zci 2
znaky zb²vajφcφ v °et∞zci 1
znaky zb²vajφcφ v °et∞zci 2
Tento p°φstup nabφzφ mo╛nost zohlednit d∙le╛itost urΦit²ch symbol∙ (znak∙) a/nebo rozdφly mezi nimi, Φi dokonce kontext, ve kterΘm se vyskytujφ p°i urΦovßnφ nßklad∙ na vlo╛enφ, zm∞nu nebo smazßnφ, ale za cenu ztrßty v╣ech optimalizacφ vyu╛itφ CPU registru a XXX cache misses, kterΘ byly zapracovßny do p°edchozφch dvou variant.
Viz takΘ: soundex(), similar_text() a metaphone().
Returns an associative array containing localized numeric and monetary formatting information.
localeconv() returns data based upon the current locale as set by setlocale(). The associative array that is returned contains the following fields:
Array element | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
decimal_point | Decimal point character | ||||||||||
thousands_sep | Thousands separator | ||||||||||
grouping | Array containing numeric groupings | ||||||||||
int_curr_symbol | International currency symbol (i.e. USD) | ||||||||||
currency_symbol | Local currency symbol (i.e. $) | ||||||||||
mon_decimal_point | Monetary decimal point character | ||||||||||
mon_thousands_sep | Monetary thousands separator | ||||||||||
mon_grouping | Array containing monetary groupings | ||||||||||
positive_sign | Sign for positive values | ||||||||||
negative_sign | Sign for negative values | ||||||||||
int_frac_digits | International fractional digits | ||||||||||
frac_digits | Local fractional digits | ||||||||||
p_cs_precedes | TRUE if currency_symbol precedes a positive value, FALSE if it succeeds one | ||||||||||
p_sep_by_space | TRUE if a space separates currency_symbol from a positive value, FALSE otherwise | ||||||||||
n_cs_precedes | TRUE if currency_symbol precedes a negative value, FALSE if it succeeds one | ||||||||||
n_sep_by_space | TRUE if a space separates currency_symbol from a negative value, FALSE otherwise | ||||||||||
p_sign_posn |
| ||||||||||
n_sign_posn |
|
The grouping fields contain arrays that define the way numbers should be grouped. For example, the grouping field for the en_US locale, would contain a 2 item array with the values 3 and 3. The higher the index in the array, the farther left the grouping is. If an array element is equal to CHAR_MAX, no further grouping is done. If an array element is equal to 0, the previous element should be used.
P°φklad 1. localeconv() example
|
The constant CHAR_MAX is also defined for the use mentioned above.
See also setlocale().
Tato funkce o°φzne netisknutelnΘ znaky ze zaΦßtku °et∞zce a vracφ o°φznut² °et∞zec. NetisknutelnΘ znaky, kterΘ se v souΦasnosti odstra≥ujφ, jsou: "\n", "\r", "\t", "\v", "\0", a prostß mezera.
Calculates the MD5 hash of the specified filename using the RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. The hash is a 32-character hexadecimal number. If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.
Poznßmka: The optional raw_output parameter was added in PHP 5.0.0 and defaults to FALSE
This function has the same purpose of the command line utility md5sum.
See also md5(), crc32(), and sha1_file().
SpoΦφtß MD5 hash argumentu str pomocφ MD5 Message-Digest Algoritmu spoleΦnosti RSA Data Security, Inc. a vrßtφ tento hash. Pokud je voliteln² parametr raw_output nastaven na TRUE, je vrßcen md5 otisk v binßrnφm formßtu dΘlky 16 byt∙.
Poznßmka: Voliteln² parametr raw_output byl p°idßn ve verzi PHP 5.0.0 a jeho v²chozφ hodnota je FALSE
Viz takΘ crc32(), md5_file() a sha1().
SpoΦφtß metaphone klφΦ argumentu str.
metaphone(), podobn∞ jako soundex(), vytvo°φ stejn² klφΦ pro podobn∞ zn∞jφcφ slova. Je p°esn∞j╣φ ne╛ soundex(), proto╛e znß zßkladnφ pravidla anglickΘ v²slovnosti. Metaphone klφΦe majφ prom∞nlivou dΘlku.
Metaphone vyvinul Lawrence Philips <lphilips@verity.com>. Je popsßno v ["Practical Algorithms for Programmers", Binstock & Rex, Addison Wesley, 1995].
Poznßmka: Tato funkce byla p°idßna v PHP 4.0.
money_format() returns a formatted version of number. This function wraps the C library function strfmon(), with the difference that this implementation converts only one number at a time.
Poznßmka: The function money_format() is only defined if the system has strfmon capabilities. For example, Windows does not, so money_format() is undefined in Windows.
The format specification consists of the following sequence:
a % character
optional flags
optional field width
optional left precision
optional right precision
a required conversion character
Flags. One or more of the optional flags below can be used:
The character = followed by a a (single byte) character f to be used as the numeric fill character. The default fill character is space.
Disable the use of grouping characters (as defined by the current locale).
Specify the formatting style for positive and negative numbers. If + is used, the locale's equivalent for + and - will be used. If ( is used, negative amounts are enclosed in parenthesis. If no specification is given, the default is +.
Suppress the currency symbol from the output string.
If present, it will make all fields left-justified (padded to the right), as opposed to the default which is for the fields to be right-justified (padded to the left).
Field width.
A decimal digit string specifying a minimum field width. Field will be right-justified unless the flag - is used. Default value is 0 (zero).
Left precision.
The maximum number of digits (n) expected to the left of the decimal character (e.g. the decimal point). It is used usually to keep formatted output aligned in the same columns, using the fill character if the number of digits is less than n. If the number of actual digits is bigger than n, then this specification is ignored.
If grouping has not been suppressed using the ^ flag, grouping separators will be inserted before the fill characters (if any) are added. Grouping separators will not be applied to fill characters, even if the fill character is a digit.
To ensure alignment, any characters appearing before or after the number in the formatted output such as currency or sign symbols are padded as necessary with space characters to make their positive and negative formats an equal length.
Right precision .
A period followed by the number of digits (p) after the decimal character. If the value of p is 0 (zero), the decimal character and the digits to its right will be omitted. If no right precision is included, the default will dictated by the current local in use. The amount being formatted is rounded to the specified number of digits prior to formatting.
Conversion characters .
The number is formatted according to the locale's international currency format (e.g. for the USA locale: USD 1,234.56).
The number is formatted according to the locale's national currency format (e.g. for the de_DE locale: DM1.234,56).
Returns the the % character.
Poznßmka: The LC_MONETARY category of the locale settings, affects the behavior of this function. Use setlocale() to set to the appropriate default locale before using this function.
Characters before and after the formatting string will be returned unchanged.
P°φklad 1. money_format() Example We will use different locales and format specifications to illustrate the use of this function.
|
See also: setlocale(), number_format(),sprintf(), printf() and sscanf().
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Vracφ string, ve kterΘm je p°ed ka╛d² konec °ßdku vlo╛ena znaΦka '<br />'.
Poznßmka: Od PHP 4.0.5, je funkce nl2br() XHTML zp∙sobilß. V╣echny verze p°ed 4.0.5 vrßtφ string se znaΦkou '<br>' vlo╛enou p°ed konce °ßdk∙ mφsto '<br />'.
Viz takΘ htmlspecialchars(), htmlentities(), wordwrap() a str_replace().
number_format() returns a formatted version of number. This function accepts either one, two or four parameters (not three):
If only one parameter is given, number will be formatted without decimals, but with a comma (",") between every group of thousands.
If two parameters are given, number will be formatted with decimals decimals with a dot (".") in front, and a comma (",") between every group of thousands.
If all four parameters are given, number will be formatted with decimals decimals, dec_point instead of a dot (".") before the decimals and thousands_sep instead of a comma (",") between every group of thousands.
Only the first character of thousands_sep is used. For example, if you use foo as thousands_sep on the number 1000, number_format() will return 1f000.
P°φklad 1. number_format() Example For instance, French notation usually use two decimals, comma (',') as decimal separator, and space (' ') as thousand separator. This is achieved with this line :
|
Vracφ ASCII hodnotu prvnφho znaku v string. Tato funkce dopl≥uje chr().
Viz takΘ: chr().
Rozparsuje °et∞zec jako kdyby to byl query-string p°edan² v URL a definuje p°φslu╣nΘ prom∞nnΘ v souΦasnΘm rozsahu platnosti. Pokud je p°edßn druh² argument arr, prom∞nnΘ se mφsto toho ulo╛φ do tΘto prom∞nnΘ jako pole.
Poznßmka: Voliteln² druh² parametr je k dispozici od PHP 4.0.3.
Poznßmka: Pro zφskßnφ aktußlnφho QUERY_STRING, mo╛nß budete muset pou╛φt prom∞nnou $_SERVER['QUERY_STRING']. Mo╛nß vßs takΘ bude zajφmat kapitola prom∞nnΘ mimo PHP.
Viz takΘ parse_url(), pathinfo(), set_magic_quotes_runtime() a urldecode().
Vytvo°φ v²tup podle argumentu format, kter² je popsßn v dokumentaci sprintf().
(PHP 3>= 3.0.6, PHP 4 )
quoted_printable_decode -- P°evΘst quoted-printable °et∞zec na osmibitov² °et∞zecTato funkce vracφ osmibitov² binßrnφ °et∞zec odpovφdajφcφ dek≤dovanΘmu quoted printable °et∞zci. Tato funkce je podobnß imap_qprint() s tou v²jimkou, ╛e tato funkce nevy╛aduje IMAP modul.
Vracφ verzi str se zp∞tn²m lomφtkem p°ed v╣emi v²skyty nßsledujφcφch znak∙:
. \\ + * ? [ ^ ] ( $ ) |
Viz takΘ: addslashes(), htmlentities(), htmlspecialchars(), nl2br() a stripslashes().
Vracφ p°edan² °et∞zec bez netisknuteln²ch znak∙ (vΦ. konc∙ °ßdku) na konci. Toto je alias k chop().
category je °et∞zec urΦujφcφ kategorii funkcφ ovlivn∞n²ch nastavenφm locale:
LC_ALL pro v╣echny nφ╛e uvedenΘ kategorie
LC_COLLATE pro porovnßvßnφ °et∞zc∙ - v PHP v souΦasnosti neimplementovßno
LC_CTYPE pro klasifikaci a konverzi znak∙, nap°. strtoupper()
LC_MONETARY pro localeconv() - v PHP v souΦasnosti neimplementovßno
LC_NUMERIC pro odd∞lovaΦ desetinn²ch mφst
LC_TIME pro formßtovßnφ data a Φasu pomocφ strftime()
Pokud je locale prßzn² °et∞zec (""), nßzvy locale se nastavφ na hodnoty systΘmov²ch prom∞nn²ch se stejn²mi jmΘny jako majφ v²╣e uvedenΘ kategorie, nebo z "LANG".
Pokud je locale nula nebo "0", locale se nezm∞nφ, pouze se vrßtφ souΦasnß hodnota.
setlocale() vracφ novΘ aktußlnφ locale nebo FALSE, pokud na dotyΦnΘ platform∞ nenφ funkcionalita locale implementovßna, zadanΘ locale neexistuje, nebo je nßzev kategorie neplatn². Neplatn² nßzev kategorie takΘ vyvolß varovßnφ.
Calculates the sha1 hash of filename using the US Secure Hash Algorithm 1, and returns that hash. The hash is a 40-character hexadecimal number. Upon failure, FALSE is returned. If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20.
Poznßmka: The optional raw_output parameter was added in PHP 5.0.0 and defaults to FALSE
See also sha1(), crc32(), and md5_file()
Calculates the sha1 hash of str using the US Secure Hash Algorithm 1, and returns that hash. The hash is a 40-character hexadecimal number. If the optional raw_output is set to TRUE, then the sha1 digest is instead returned in raw binary format with a length of 20.
Poznßmka: The optional raw_output parameter was added in PHP 5.0.0 and defaults to FALSE
See also sha1_file(), crc32(), and md5()
similar_text() spoΦφtß podobnost dvou °et∞zc∙ podle Oliver [1993]. Pozn.: Tato implementace nepou╛φvß stack jako v Oliverov∞ pseudok≤du, n²br╛ rekurzivnφ volßnφ, co╛ m∙╛e Φi nemusφ cel² proces zrychlit. Komplexita tohoto algoritmu je O(N**3) kde N je dΘlka nejdel╣φho °et∞zce.
Pokud je similar_text() p°edßn t°etφ argument (odkazem), spoΦφtß tato funkce podobnost v procentech. Vracφ poΦet znak∙ shodn²ch v obou °et∞zcφch.
SpoΦφtß soundex klφΦ str.
Soundex klφΦe majφ tu vlastnost, ╛e slova vyslovovanß podobn∞ produkujφ shodnΘ soundex klφΦe, a dajφ se proto vyu╛φt ke zjednodu╣enφ hledßnφ v databßzφch, kde znßte v²slovnost, ale ne hlßskovßnφ. Tato funkce vracφ °et∞zec dlouh² 4 znaky zaΦφnajφcφ pφsmenem.
Tato konkrΘtnφ soundex funkce je popsßna Donaldem Knuthem v "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392.
P°φklad 1. Soundex ukßzky
|
Vracφ °et∞zec vytvo°en² podle formßtovacφho °et∞zce format.
Formßtovacφ °et∞zec se sklßdß z nula nebo vφce direktiv: b∞╛n²ch znak∙ (krom∞ %), kterΘ se p°φmo kopφrujφ do v²sledku, a p°evodnφch specifikacφ, z nich╛ ka╛dß p°ijφmß jeden argument. Toto platφ pro sprintf() i printf().
Ka╛dß p°evodnφ specifikace se sklßdß ze znaku procenta (%), nßsledovanΘho jednφm nebo vφce z t∞chto znak∙, v tomto po°adφ:
Voliteln² padding specifier, kter² urΦuje, jak² znak se pou╛ije na dopln∞nφ v²sledku na sprßvnou dΘlku °et∞zce. M∙╛e to b²t mezera nebo 0 (pφsmeno nula). Default je nula. Jin² dopl≥ujφcφ znak m∙╛ete zadat tak, ╛e p°ed n∞j p°ed°adφte jednoduchou uvozovku ('). Viz ukßzky nφ╛e.
Voliteln² alignment specifier, kter² urΦuje, jestli se mß v²sledek zarovnat doleva nebo doprava. Default je doprava, pomlΦka (-) to zm∞nφ na doleva.
VolitelnΘ Φφslo width specifier, kterΘ urΦuje, kolik znak∙ (minimßln∞) mß obsahovat v²sledek p°evodu.
Voliteln² precision specifier, kter² urΦuje, kolik desetinn²ch mφst se mß zobrazit u Φφsel s desetinnou Φßrkou. Tento p°epφnaΦ nemß ╛ßdn² vliv na jinΘ typy ne╛ double. (Dal╣φ funkcφ u╛iteΦnou na formßtovßnφ Φφsel je number_format().)
type specifier, kter² urΦuje, za jak² typ se majφ data argumentu pova╛ovat. Mo╛nΘ typy:
% - a doslovn² znak procenta. Nevy╛aduje se ╛ßdn² argument. |
b - argument se pova╛uje za integer a je prezentovßn jako binßrnφ Φφslo. |
c - argument se pova╛uje za integer a je prezentovßn jako znak s touto ASCII hodnotou. |
d - argument se pova╛uje za integer a je prezentovßn jako desφtkovΘ Φφslo. |
f - argument se pova╛uje za double a je prezentovßn jako Φφslo s plovoucφ desetinou Φßrkou. |
o - argument se pova╛uje za integer a je prezentovßn jako oktalovΘ Φφslo. |
s - argument se pova╛uje za °et∞zec a je takto prezentovßn. |
x - the argument se pova╛uje za integer a je prezentovßn jako hexadecimßlnφ Φφslo (s mal²mi pφsmeny). |
X - argument se pova╛uje za integer a je prezentovßn jako hexadecimßlnφ Φφslo (s kapitßlkami). |
Viz takΘ: printf(), sscanf(), fscanf() a number_format().
Funkce sscanf() je vstupnφm analogem printf(). sscanf() Φte °et∞zec str a interpretuje ho podle formßtu format. Pokud jsou jφ p°edßny pouze dva argumenty, vracφ rozparsovanΘ hodnoty v poli.
This function returns a string or an array with all occurrences of search in subject (ignoring case) replaced with the given replace value. If you don't need fancy replacing rules, you should generally use this function instead of eregi_replace() or preg_replace() with the i modifier.
If subject is an array, then the search and replace is performed with every entry of subject, and the return value is an array as well.
If search and replace are arrays, then str_ireplace() takes a value from each array and uses them to do search and replace on subject. If replace has fewer values than search, then an empty string is used for the rest of replacement values. If search is an array and replace is a string; then this replacement string is used for every value of search.
This function is binary safe.
Poznßmka: As of PHP 5.0.0 the number of matched and replaced needles will be returned in count which is passed by reference. Prior to PHP 5.0.0 this parameter is not available.
See also: str_replace(), ereg_replace(), preg_replace(), and strtr().
str_pad() doplnφ °et∞zec input zleva, zprava nebo z obou stran na danou dΘlku. Pokud jφ nenφ p°edßn voliteln² argument pad_string, doplnφ se input mezerami, jinak se doplnφ znaky z pad_string.
Voliteln² argument pad_type m∙╛e nab²t hodnot STR_PAD_RIGHT, STR_PAD_LEFT nebo STR_PAD_BOTH. Default je STR_PAD_RIGHT.
Pokud je hodnota pad_length negativnφ nebo men╣φ ne╛ je dΘlka input, k dopln∞nφ nedojde.
Vracφ input_str multiplier krßt opakovan². multiplier musφ b²t v∞t╣φ ne╛ 0.
This will output "-=-=-=-=-=-=-=-=-=-=".
Poznßmka: Tato funkce byla p°idßna v PHP 4.0.
Tato funkce nahradφ v╣echny v²skyty needle v argumentu haystack argumentem str. Pokud nepot°ebujete slo╛itß pravidla pro nahrazovßnφ, m∞li byste v╛dy pou╛φt tuto funkci mφsto ereg_replace() nebo preg_replace().
Od PHP 4.0.5 m∙╛e b²t ka╛d² parametr funkce str_replace() typu array.
Varovßnφ |
V PHP verzφch star╣φch ne╛ 4.3.3 byla chyba p°i pou╛φvßnφ polφ v parametrech search a zßrove≥ replace, kterß zp∙sobila, ╛e prßzdnΘ polo╛ky pole search byly p°eskoΦeny bez zv²╣enφ internφho ukazatele v poli replace. Bylo to opraveno v PHP 4.3.3. V╣echny skripty, kterΘ na tuto chybu spolΘhaly, by m∞ly p°ed zavolßnφm tΘto funkce odstranit prßzdnΘ hodnoty vyhledßvßnφ, aby nasimulovaly p∙vodnφ chovßnφ. |
Pokud je parametr subject pole, prob∞hne vyhledßvßnφ a nahrazenφ v ka╛dΘ polo╛ce pole subject a nßvratovß hodnota je takΘ pole.
Pokud jsou parametry search a replace pole, funkce str_replace() bere hodnoty t∞chto polφ a pou╛φvß je pro vyhledßvßnφ a nahrazenφ v parametru subject. Pokud mß parametr replace mΘn∞ hodnot ne╛ parametr search, tak se pro chyb∞jφcφ hodnoty pou╛ije prßzdn² °et∞zec. Pokud je parametr search pole a parametr replace je °et∞zec, tak se tento °et∞zec pou╛ije pro ka╛dou hodnotu parametru search.
P°φklad 1. Ukßzka str_replace()
|
Poznßmka: Tato funkce je binßrn∞ bezpeΦnß.
Poznßmka: Od PHP 5.0.0 je poΦet nalezen²ch a zam∞n∞n²ch °et∞zc∙ (search) vrßcen v parametru count, kter² je p°edßvßn referencφ. P°ed PHP 5.0.0 nenφ tento parametr k dispozici.
Viz takΘ str_ireplace(), substr_replace(), ereg_replace(), preg_replace() a strtr().
This function performs the ROT13 encoding on the str argument and returns the resulting string. The ROT13 encoding simply shifts every letter by 13 places in the alphabet while leaving non-alpha characters untouched. Encoding and decoding are done by the same function, passing an encoded string as argument will return the original version.
Poznßmka: The behaviour of this function was buggy until PHP 4.3.0. Before this, the str was also modified, as if passed by reference.
str_shuffle() shuffles a string. One permutation of all possible is created.
Converts a string to an array. If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length.
FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string, the entire string is returned as the first (and only) array element.
P°φklad 1. Example uses of str_split()
Output may look like:
|
See also preg_split(), split(), count_chars(), str_word_count(), and for.
Counts the number of words inside string. If the optional format is not specified, then the return value will be an integer representing the number of words found. In the event the format is specified, the return value will be an array, content of which is dependent on the format. The possible value for the format and the resultant outputs are listed below.
1 - returns an array containing all the words found inside the string.
2 - returns an associative array, where the key is the numeric position of the word inside the string and the value is the actual word itself.
For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with "'" and "-" characters.
P°φklad 1. Example uses for str_word_count()
Output may look like:
|
See also explode(), preg_split(), split(), count_chars(), and substr_count().
Pokud je str1 mΘn∞ ne╛ str2 vracφ < 0; pokud je str1 v∞t╣φ ne╛ str2 vracφ > 0, a 0, pokud jsou stejnΘ.
Viz takΘ: ereg(), strcmp(), substr(), stristr(), strncasecmp() a strstr().
Tato funkce je alias k strstr(), a je ve v╣ech sm∞rech identickß.
Pokud je str1 mΘn∞ ne╛ str2, vracφ < 0; pokud je str1 v∞t╣φ ne╛ str2, vracφ > 0, a 0, pokud jsou stejnΘ.
Pozn.: toto srovnßnφ je case-sensitive.
Viz takΘ: ereg(), strcasecmp(), substr(), stristr(), strncasecmp(), strncmp() a strstr().
Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal. strcoll() uses the current locale for doing the comparisons. If the current locale is C or POSIX, this function is equivalent to strcmp().
Note that this comparison is case sensitive, and unlike strcmp() this function is not binary safe.
Poznßmka: strcoll() was added in PHP 4.0.5, but was not enabled for win32 until 4.2.3.
See also ereg(), strcmp(), strcasecmp(), substr(), stristr(), strncasecmp(), strncmp(), strstr(), and setlocale().
Vracφ dΘlku ·vodnφho segmentu str1, kter² neobsahuje ╛ßdn² ze znak∙ str2.
Viz takΘ: strspn().
Tato funkce se sna╛φ odstranit z p°edanΘho °et∞zce v╣echny HTML a PHP tagy. It errors on the side of caution in case of incomplete or bogus tags. It uses the same tag stripping state machine as the fgetss() function.
Voliteln² druh² argument m∙╛ete pou╛φt k urΦenφ tag∙, kterΘ se nemajφ odstranit.
Poznßmka: Argument allowable_tags byl p°idßn v PHP 3.0.13, PHP 4 b3.
Vracφ °et∞zec bez odstran∞n²ch zp∞tn²ch lomφtek. Rozeznßvß CΘΦkovΘ \n, \r ..., oktalovΘ a hexadecimßlnφ reprezentace.
Poznßmka: Tato funkce byla p°idßna v PHP4b3-dev.
Viz takΘ: addcslashes().
Returns the numeric position of the first occurrence of needle in the haystack string. Unlike strpos(), stripos() is case-insensitive.
Note that the needle may be a string of one or more characters.
If needle is not found, stripos() will return boolean FALSE.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
P°φklad 1. stripos() examples
|
If needle is not a string, it is converted to an integer and applied as the ordinal value of a character.
The optional offset parameter allows you to specify which character in haystack to start searching. The position returned is still relative to the the beginning of haystack.
See also strpos(), strrpos(), strrchr(), substr(), stristr(), strstr(), strripos() and str_ireplace().
Vracφ °et∞zec s odstran∞n²mi zp∞tn²mi lomφtky. (\' se stßvß ' a pod.) Zdvojenß zp∞tnß lomφtka (\\) se spojujφ do jednoduch²ch (\).
Funkce stripslashes() m∙╛e b²t pou╛ita nap°φklad tehdy, kdy╛ je PHP direktiva magic_quotes_gpc nastavena na on (co╛ je v²chozφ nastavenφ) a vy tato data nevklßdßte na mφsta (jako je databßze), kterß toto escapovßnφ pot°ebujφ. To je nap°φklad tehdy, kdy╛ data zadanß do HTML formulß°e pouze vypisujete.
Viz takΘ addslashes() a get_magic_quotes_gpc().
Vracφ haystack od prvnφho v²skytu needle do konce. needle a haystack se zkoumajφ bez ohledu na velikost pφsmen.
Pokud needle nenajde, vracφ FALSE.
Pokud needle nenφ °et∞zec, p°evede se na integer a pou╛ije se jako Φφselnß hodnota znaku.
Tato funkce implementuje srovnßvacφ algoritmus kter² t°φdφ alfanumerickΘ °et∞zce stejn²m zp∙sobem jako Φlov∞k. Chovßnφ tΘto funkce se podobß strnatcmp() s tou v²jimkou, ╛e porovnßnφ je case-insensitive. Vφce informacφ viz strßnka Martina Poola Natural Order String Comparison.
Podobn∞ jako jinΘ funkce pro porovnßvßnφ °et∞zc∙ i tato vracφ < 0 pokud je str1 men╣φ ne╛ str2; > 0 pokud je str1 v∞t╣φ ne╛ str2, a 0 pokud jsou shodnΘ.
Viz takΘ: ereg(), strcasecmp(), substr(), stristr(), strcmp(), strncmp(), strncasecmp(), strnatcmp() a strstr().
Tato funkce implementuje srovnßvacφ algoritmus kter² t°φdφ alfanumerickΘ °et∞zce stejn²m zp∙sobem jako Φlov∞k, toto se popisuje jako "p°irozenΘ t°φd∞nφ". Ukßzka rozdφlu m∞zi tφmto algoritmem a b∞╛n²mi poΦφtaΦov²mi algoritmy pro °azenφ °et∞zc∙ (nap°. strcmp()):
$arr1 = $arr2 = array ("img12.png","img10.png","img2.png","img1.png"); echo "Standardnφ porovnßvßnφ °et∞zc∙\n"; usort($arr1,"strcmp"); print_r($arr1); echo "\nP°irozenΘ porovnßvßnφ °et∞zc∙\n"; usort($arr2,"strnatcmp"); print_r($arr2); |
Standardnφ porovnßvßnφ °et∞zc∙ Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) P°irozenΘ porovnßvßnφ °et∞zc∙ Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png ) |
Podobn∞ jako jinΘ funkce pro porovnßvßnφ °et∞zc∙ i tato vracφ < 0 pokud je str1 men╣φ ne╛ str2; > 0 pokud je str1 v∞t╣φ ne╛ str2, a 0 pokud jsou shodnΘ.
Pozn.: toto porovnßnφ je case-sensitive.
Viz takΘ: ereg(), strcasecmp(), substr(), stristr(), strcmp(), strncmp(), strncasecmp(), strnatcasecmp(), strstr(), natsort() a natcasesort().
Tato funkce se podobß strcasecmp(), s tφm rozdφlem, ╛e m∙╛ete urΦit (maximßlnφ) poΦet znak∙ (len) z ka╛dΘho z °et∞zc∙, kterΘ se pou╛ijφ p°i porovnßnφ. Pokud je n∞kter² z °et∞zc∙ krat╣φ ne╛ len, pak se pro porovnßnφ pou╛ije dΘlka tohoto °et∞zce.
Pokud je str1 mΘn∞ ne╛ str2, vracφ < 0; pokud je str1 v∞t╣φ ne╛ str2, vracφ > 0, a 0, pokud jsou stejnΘ.
Viz takΘ: ereg(), strcasecmp(), strcmp(), substr(), stristr() a strstr().
This function is similar to strcmp(), with the difference that you can specify the (upper limit of the) number of characters (len) from each string to be used in the comparison. If any of the strings is shorter than len, then the length of that string will be used for the comparison.
Vracφ < 0 pokud je str1 men╣φ ne╛ str2; > 0 pokud je str1 v∞t╣φ ne╛ str2, a 0 pokud jsou shodnΘ.
Pozn.: toto srovnßnφ je case-sensitive.
Viz takΘ: ereg(), strncasecmp(), strcasecmp(), substr(), stristr(), strcmp() a strstr().
Vracφ Φφselnou pozici prvnφho v²skytu needle v °et∞zci haystack. Narozdφl od strrpos() tato funkce p°ijme jako argument needle °et∞zec vφce znak∙, a cel² tento °et∞zec se pou╛ije.
Pokud needle nenajde, vracφ FALSE.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
P°φklad 1. strpos() examples
|
Pokud needle nenφ °et∞zec, p°evede se na integer a pou╛ije se jako Φφselnß hodnota znaku.
Voliteln² argument offset vßm umo╛≥uje urΦit, na kterΘ pozici v haystack mß hledßnφ zaΦφt. Vrßcenß pozice je i tak relativnφ k zaΦßtku haystack.
Viz takΘ: strrpos(), stripos(), strripos(), strrchr(), substr(), stristr() a strstr().
Tato funkce vracφ tu Φßst haystack, kterß zaΦφnß poslednφm v²skytem needle a pokraΦuje do konce haystack.
Pokud needle nenajde, vracφ FALSE.
Pokud needle obsahuje vφce ne╛ jeden znak, pou╛ije se prvnφ z nich. Toto chovßnφ je odli╣nΘ od funkce strchr().
Pokud needle nenφ °et∞zec, p°evede se na integer a pou╛ije se jako Φφselnß hodnota znaku.
(PHP 5 CVS only)
strripos -- Find position of last occurrence of a case-insensitive string in a stringReturns the numeric position of the last occurrence of needle in the haystack string. Unlike strrpos(), strripos() is case-insensitive. Also note that string positions start at 0, and not 1.
Note that the needle may be a string of one or more characters.
If needle is not found, FALSE is returned.
Varovßnφ |
Tato funkce m∙╛e vracet booleovskou hodnotu FALSE, ale takΘ nebooleovskou hodnotu odpovφdajφcφ ohodnocenφ FALSE, nap°φklad 0 nebo "". ╚t∞te prosφm sekci o typu Boolean, kde najdete vφce informacφ. Pro testovßnφ nßvratovΘ hodnoty tΘto funkce pou╛ijte operßtor ===. |
P°φklad 1. A simple strripos() example
Outputs:
|
offset may be specified to begin searching an arbitrary number of characters into the string. Negative values will stop searching at an arbitrary point prior to the end of the string.
See also strrpos(), strrchr(), substr(), stripos() and stristr().
Vracφ Φφselnou pozici poslednφho v²skytu needle v °et∞zci haystack. ╪et∞zec needle m∙╛e b²t v PHP 4 jen jeden znak dlouh². Pokud obsahuje vφce znak∙, pou╛ije se prvnφ z nich.
Pokud needle nenajde, vracφ FALSE.
Poznßmka: NßvratovΘ hodnoty "znak nalezen na pozici 0" a "znak nenalezen" se dajφ snadno zam∞nit. Tady je nßvod, jak zjistit tento rozdφl:
Pokud needle nenφ °et∞zec, p°evede se na integer a pou╛ije se jako Φφselnß hodnota znaku.
Poznßmka: Od PHP 5.0.0 m∙╛e b²t zadßn parametr offset. To zp∙sobφ, ╛e hledßnφ zaΦne od urΦitΘ pozice v °et∞zci. ZßpornΘ hodnoty zastavφ hledßnφ na urΦitΘm mφst∞ p°ed koncem °et∞zce.
Poznßmka: Parametr needle m∙╛e b²t od PHP 5.0.0 °et∞zec del╣φ ne╛ 1 znak.
Viz takΘ strpos(), strripos(), strrchr(), substr(), stristr() a strstr().
Vracφ ·vodnφho segmentu str1, kter² se sklßdß v²hradn∞ ze znak∙ v str2.
Viz takΘ: strcspn().
Vracφ Φßst haystack od prvnφho v²skytu needle do konce.
Pokud needle nenajde, vracφ FALSE.
Pokud needle nenφ °et∞zec, p°evede se na integer a pou╛ije se jako Φφselnß hodnota znaku.
Poznßmka: Pozn.: tato funkce rozli╣uje velikost pφsmen. Pro hledßnφ bez rozli╣enφ velikosti pφsmen pou╛ijte stristr().
Poznßmka: Pokud pouze chcete zjistit, zda se urΦit² °et∞zec needle vyskytuje v °et∞zci haystack, je rychlej╣φ a mΘn∞ nßroΦnΘ na pam∞╗ pou╛itφ funkce strpos().
Viz takΘ ereg(), preg_match(), strchr(), stristr(), strpos(), strrchr() a substr().
strtok() is used to tokenize a string. That is, if you have a string like "This is an example string" you could tokenize this string into its individual words by using the space character as the token.
Note that only the first call to strtok uses the string argument. Every subsequent call to strtok only needs the token to use, as it keeps track of where it is in the current string. To start over, or to tokenize a new string you simply call strtok with the string argument again to initialize it. Note that you may put multiple tokens in the token parameter. The string will be tokenized when any one of the characters in the argument are found.
Also be careful that your tokens may be equal to "0". This evaluates to FALSE in conditional expressions.
Vracφ string se v╣emi alfabetick²mi znaky zm∞n∞n²mi na malß pφsmena.
Pozn.: co je 'alfabetick²' je dßno aktußlnφm mφstnφm nastavenφm. Nap°φklad ve standardnφm "C" locale se znaky jako p°ehlasovanΘ a (─) nep°evedou.
Viz takΘ: strtoupper() a ucfirst().
Vracφ string se v╣emi alfabetick²mi znaky zm∞n∞n²mi na velkß pφsmena.
Pozn.: co je 'alfabetick²' je dßno aktußlnφm mφstnφm nastavenφm. Nap°φklad ve standardnφm "C" locale se znaky jako p°ehlasovanΘ a (Σ) nep°evedou.
Viz takΘ: strtolower() a ucfirst().
Tato funkce upravφ str tak, ╛e v╣echny v²skyty v╣ech znak∙ ve from p°elo╛φ na odpovφdajφcφ znaky v to a vrßtφ v²sledek.
Pokud jsou from a to r∙zn∞ dlouhΘ, p°eb²vajφcφ znaky z del╣φho z t∞ch dvou se ignorujφ.
strtr() se dß takΘ volat pouze se dv∞ma argumenty. P°i volßnφ se dv∞ma argumenty se chovß takto: from musφ b²t pole obsahujφcφ pßry °et∞zc∙, kterΘ se zam∞nφ ve zdrojovΘm °et∞zci. strtr() v╛dy hledß nejdel╣φ mo╛nou shodu a NENAHRAZUJE ty Φßsti °et∞zce, na kter²ch u╛ pracovala.
Poznßmka: Tato vlastnost (dva argumenty) byla p°idßna v PHP 4.0.
Viz takΘ: ereg_replace().
(no version information, might be only in CVS)
substr_compare -- Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length charactersVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
substr_count() vracφ poΦet v²skyt∙ °et∞zce needle v °et∞zci haystack string.
substr_replace() nahrazuje Φßst °et∞zce string ohraniΦenou argumenty start a (voliteln∞) length °et∞zcem v argumentu replacement. Vracφ v²sledek.
Pokud je start pozitivnφ, nßhrada zaΦne na start-tΘm znaku argumentu string.
Pokud je start negativnφ, nßhrada zaΦne na start-tΘm znaku od konce argumentu string.
Pokud je p°φtomen length, a je pozitivnφ, p°edstavuje dΘlku Φßsti argumentu string, kterß bude nahra╛ena. Pokud je negativnφ, p°edstavuje poΦet znak∙ od konce string, kde mß nahrazovßnφ skonΦit. Pokud p°φtomen nenφ, bere se standardn∞ strlen( string ); tj. nahrazovßnφ konΦφ na konci argumentu string.
P°φklad 1. Ukßzka substr_replace()
|
Viz takΘ str_replace() a substr().
Poznßmka: Funkce substr_replace() byla p°idßna v PHP 4.0.
substr() vracφ Φßst argumentu string urΦenou argumenty start a length.
Pokud je start kladn², vrßcen² °et∞zec zaΦne start-t²m znakem °et∞zce string, poΦφtßno od nuly. Nap°φklad v °et∞zci 'abcdef' je znakem na 0-tΘ pozici 'a', znakem na pozici 2 je 'c', atd.
P°φklad 1. Zßkladnφ pou╛itφ substr()
|
Pokud je start zßporn², vrßcen² °et∞zec zaΦne start-t²m znakem od konce argumentu string.
Pokud je argument length kladn², vrßcen² °et∞zec skonΦφ length znak∙ za pozicφ start. Pokud je parametr string krat╣φ ne╛ start znak∙, vrßtφ tato funkce FALSE.
Pokud je parametr length negativnφ, tak bude z konce °et∞zce string vynechßn odpovφdajφcφ poΦet znak∙. Pokud parametr start urΦuje pozici za tφmto zkrßcenφm, bude vrßcen prßzdn² °et∞zec.
Viz takΘ strrchr(), substr_replace(), ereg() a trim().
Poznßmka: Voliteln² parametr charlist byl p°idßn v PHP 4.1.0
Tato funkce odstra≥uje bφlΘ znaky ze zaΦßtku a konce °et∞zce a vracφ °et∞zec bez t∞chto znak∙. Bez druhΘho parametru odstranφ tato funkce nßsledujφcφ znaky:
" " (ASCII 32 (0x20)), obyΦejnß mezera.
"\t" (ASCII 9 (0x09)), tabulßtor.
"\n" (ASCII 10 (0x0A)), novß °ßdka (line feed).
"\r" (ASCII 13 (0x0D)), nßvrat vozφku (carriage return).
"\0" (ASCII 0 (0x00)), znak NUL.
"\x0B" (ASCII 11 (0x0B)), vertikßlnφ tabulßtor.
M∙╛ete takΘ urΦit, kterΘ znaky chcete odstranit, a to pomocφ parametru charlist. Jednodu╣e vyjmenujte v╣echny znaky, kterΘ chcete odstranit. Pomocφ .. m∙╛ete urΦit rozsah znak∙.
P°φklad 1. P°φklady pou╛itφ trim()
|
Zm∞nφ prvnφ znak argumentu str, pokud je tento znak alfabetick².
Pozn.: co znamenß 'alfabetick²' urΦuje aktußlnφ mφstnφ nastavenφ (locale). Nap°φklad ve standardnφm "C" locale se znaky jako p°ehlasovanΘ a (Σ) nep°evedou.
Viz takΘ strtoupper() a strtolower().
Zm∞nφ prvnφ znak ka╛dΘho slova v argumentu str na velkΘ pφsmeno, pokud je tento znak alfabetick².
Poznßmka: Definice slova je: jak²koli °et∞zec znak∙, kter² nßsleduje bezprost°edn∞ po netisknutelnΘm znaku (to jsou: mezera, posun o tiskouvou stranu, p°esun na novou °ßdku, nßvrat vozφku, horizontßlnφ tabelßtor a vertikßlnφ tabelßtor0.
Viz takΘ strtoupper(), strtolower() and ucfirst().
Display array values as a formatted string according to format (which is described in the documentation for sprintf()).
Operates as printf() but accepts an array of arguments, rather than a variable number of arguments.
See also printf(), sprintf(), vsprintf()
Return array values as a formatted string according to format (which is described in the documentation for sprintf()).
Operates as sprintf() but accepts an array of arguments, rather than a variable number of arguments.
Zalßme °et∞zec str na sloupci urΦenΘm (voliteln²m) argumentem break.
Pokud nenφ zadßn argument width nebo break, wordwrap() automaticky zalßme °ßdky °et∞zce na sloupci 75 znakem '\n' (konec °ßdku).
Pokud mß argument cut hodnotu 1, °et∞zec se na urΦenou ╣φ°ku zalomφ v╛dy. Tak╛e pokud mßte slovo del╣φ ne╛ je danß ╣φ°ka, rozd∞lφ se. (Viz druh² p°φklad.)
Poznßmka: Argument cut byl p°idßn PHP 4.0.3.
Tato ukßzka by zobrazila:
Tato ukßzka by zobrazila:
Viz takΘ: nl2br().
To enable Sybase-DB support configure PHP --with-sybase[=DIR]. DIR is the Sybase home directory, defaults to /home/sybase. To enable Sybase-CT support configure PHP --with-sybase-ct[=DIR]. DIR is the Sybase home directory, defaults to /home/sybase.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Sybase configuration options
Name | Default | Changeable |
---|---|---|
sybase.allow_persistent | "On" | PHP_INI_SYSTEM |
sybase.max_persistent | "-1" | PHP_INI_SYSTEM |
sybase.max_links | "-1" | PHP_INI_SYSTEM |
sybase.interface_file | "/usr/sybase/interfaces" | PHP_INI_SYSTEM |
sybase.min_error_severity | "10" | PHP_INI_ALL |
sybase.min_message_severity | "10" | PHP_INI_ALL |
sybase.compatability_mode | "Off" | PHP_INI_SYSTEM |
magic_quotes_sybase | "Off" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to allow persistent Sybase connections.
The maximum number of persistent Sybase connections per process. -1 means no limit.
The maximum number of Sybase connections per process, including persistent connections. -1 means no limit.
Minimum error severity to display.
Minimum message severity to display.
Compatability mode with old versions of PHP 3.0. If on, this will cause PHP to automatically assign types to results according to their Sybase type, instead of treating them all as strings. This compatability mode will probably not stay around forever, so try applying whatever necessary changes to your code, and turn it off.
If magic_quotes_sybase is on, a single-quote is escaped with a single-quote instead of a backslash if magic_quotes_gpc or magic_quotes_runtime are enabled.
Poznßmka: Note that when magic_quotes_sybase is ON it completely overrides magic_quotes_gpc . In this case even when magic_quotes_gpc is enabled neither double quotes, backslashes or NUL's will be escaped.
Tabulka 2. Sybase-CT configuration options
Name | Default | Changeable |
---|---|---|
sybct.allow_persistent | "On" | PHP_INI_SYSTEM |
sybct.max_persistent | "-1" | PHP_INI_SYSTEM |
sybct.max_links | "-1" | PHP_INI_SYSTEM |
sybct.min_server_severity | "10" | PHP_INI_ALL |
sybct.min_client_severity | "10" | PHP_INI_ALL |
sybct.hostname | NULL | PHP_INI_ALL |
sybct.deadlock_retry_count | "-1" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to allow persistent Sybase-CT connections. The default is on.
The maximum number of persistent Sybase-CT connections per process. The default is -1 meaning unlimited.
The maximum number of Sybase-CT connections per process, including persistent connections. The default is -1 meaning unlimited.
Server messages with severity greater than or equal to sybct.min_server_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_server_severity(). The default is 10 which reports errors of information severity or greater.
Client library messages with severity greater than or equal to sybct.min_client_severity will be reported as warnings. This value can also be set from a script by calling sybase_min_client_severity(). The default is 10 which effectively disables reporting.
The name of the host you claim to be connecting from, for display by sp_who. The default is none.
Allows you to to define how often deadlocks are to be retried. The default is -1, or "forever".
For further details and definition of the PHP_INI_* constants see ini_set().
sybase_affected_rows() returns the number of rows affected by the last INSERT, UPDATE or DELETE query on the server associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed.
P°φklad 1. Delete-Query
The above example would produce the following output:
|
This command is not effective for SELECT statements, only on statements which modify records. To retrieve the number of rows returned from a SELECT, use sybase_num_rows().
Poznßmka: Tato funkce je k dispozici pouze p°i pou╛itφ rozhranφ knihovny CT k Sybase a ne knihovny DB.
See also sybase_num_rows().
sybase_close() closes the link to a Sybase database that's associated with the specified link link_identifier. If the link identifier isn't specified, the last opened link is assumed.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.
sybase_close() will not close persistent links generated by sybase_pconnect().
See also sybase_connect() and sybase_pconnect().
Returns a positive Sybase link identifier on success, or FALSE on failure.
sybase_connect() establishes a connection to a Sybase server. The servername argument has to be a valid servername that is defined in the 'interfaces' file.
In case a second call is made to sybase_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.
The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling sybase_close().
See also sybase_pconnect() and sybase_close().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
sybase_data_seek() moves the internal row pointer of the Sybase result associated with the specified result identifier to pointer to the specified row number. The next call to sybase_fetch_row() would return that row.
See also sybase_fetch_row().
Using sybase_deadlock_retry_count(), the number of retries can be defined in cases of deadlocks. By default, every deadlock is retried an infinite number of times or until the process is killed by Sybase, the executing script is killed (for instance, by set_time_limit()) or the query succeeds.
Poznßmka: Tato funkce je k dispozici pouze p°i pou╛itφ rozhranφ knihovny CT k Sybase a ne knihovny DB.
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
sybase_fetch_array() is an extended version of sybase_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.
An important thing to note is that using sybase_fetch_array() is NOT significantly slower than using sybase_fetch_row(), while it provides a significant added value.
Poznßmka: When selecting fields with identical names (for instance, in a join), the associative indices will have a sequential number prepended. See the example for details.
P°φklad 1. Identical fieldnames
The above example would produce the following output (assuming the two tables only have each one column called "person_id"):
|
See also sybase_fetch_row(), sybase_fetch_assoc() and sybase_fetch_object().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
sybase_fetch_assoc() is a version of sybase_fetch_row() that uses column names instead of integers for indices in the result array. Columns from different tables with the same names are returned as name, name1, name2, ..., nameN.
An important thing to note is that using sybase_fetch_assoc() is NOT significantly slower than using sybase_fetch_row(), while it provides a significant added value.
See also sybase_fetch_array(), sybase_fetch_object() and sybase_fetch_row().
Returns an object containing field information.
sybase_fetch_field() can be used in order to obtain information about fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by sybase_fetch_field() is retrieved.
The properties of the object are:
name - column name. if the column is a result of a function, this property is set to computed#N, where #N is a serial number.
column_source - the table from which the column was taken
max_length - maximum length of the column
numeric - 1 if the column is numeric
type - datatype of the column
See also sybase_field_seek().
Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.
sybase_fetch_object() is similar to sybase_fetch_assoc(), with one difference - an object is returned, instead of an array.
Use the second object to specify the type of object you want to return. If this parameter is omitted, the object will be of type stdClass.
Poznßmka: As of PHP 4.3.0, this function will no longer return numeric object members.
Old behaviour:
New behaviour:
object(stdclass)(3) { [0]=> string(3) "foo" ["foo"]=> string(3) "foo" [1]=> string(3) "bar" ["bar"]=> string(3) "bar" }
object(stdclass)(3) { ["foo"]=> string(3) "foo" ["bar"]=> string(3) "bar" }
Speed-wise, the function is identical to sybase_fetch_array(), and almost as quick as sybase_fetch_row() (the difference is insignificant).
See also sybase_fetch_array() and sybase_fetch_row().
Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.
sybase_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.
Subsequent call to sybase_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.
Tabulka 1. Data types
PHP | Sybase |
---|---|
string | VARCHAR, TEXT, CHAR, IMAGE, BINARY, VARBINARY, DATETIME |
int | NUMERIC (w/o precision), DECIMAL (w/o precision), INT, BIT, TINYINT, SMALLINT |
float | NUMERIC (w/ precision), DECIMAL (w/ precision), REAL, FLOAT, MONEY |
NULL | NULL |
See also sybase_fetch_array(), sybase_fetch_assoc(), sybase_fetch_object(), sybase_data_seek() and sybase_result().
Seeks to the specified field offset. If the next call to sybase_fetch_field() won't include a field offset, this field would be returned.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also sybase_fetch_field().
sybase_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script ends. You may call sybase_free_result() with the result identifier as an argument and the associated result memory will be freed.
sybase_get_last_message() returns the last message reported by the server.
See also sybase_min_message_severity().
sybase_min_client_severity() sets the minimum client severity level.
Poznßmka: Tato funkce je k dispozici pouze p°i pou╛itφ rozhranφ knihovny CT k Sybase a ne knihovny DB.
See also sybase_min_server_severity().
sybase_min_error_severity() sets the minimum error severity level.
See also sybase_min_message_severity().
sybase_min_message_severity() sets the minimum message severity level.
See also sybase_min_error_severity().
sybase_min_server_severity() sets the minimum server severity level.
Poznßmka: Tato funkce je k dispozici pouze p°i pou╛itφ rozhranφ knihovny CT k Sybase a ne knihovny DB.
See also sybase_min_client_severity().
sybase_num_fields() returns the number of fields in a result set.
See also sybase_query(), sybase_fetch_field() and sybase_num_rows().
sybase_num_rows() returns the number of rows in a result set.
See also sybase_num_fields(), sybase_query() and sybase_fetch_row().
Returns a positive Sybase persistent link identifier on success, or FALSE on error.
sybase_pconnect() acts very much like sybase_connect() with two major differences.
First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.
Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (sybase_close() will not close links established by sybase_pconnect()()).
This type of links is therefore called 'persistent'.
See also sybase_connect().
Returns a positive Sybase result identifier on success, or FALSE on error.
sybase_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if sybase_connect() was called, and use it.
See also sybase_select_db() and sybase_connect().
Returns the contents of the cell at the row and offset in the specified Sybase result set.
sybase_result() returns the contents of one cell from a Sybase result set. The field argument can be the field's offset, or the field's name, or the field's table dot field's name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name.
When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than sybase_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.
Recommended high-performance alternatives: sybase_fetch_row(), sybase_fetch_array() and sybase_fetch_object().
sybase_select_db() sets the current active database on the server that's associated with the specified link identifier. If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if sybase_connect() was called, and use it.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Every subsequent call to sybase_query() will be made on the active database.
See also sybase_connect(), sybase_pconnect() and sybase_query()
(PHP 4 >= 4.3.0)
sybase_set_message_handler -- Sets the handler called when a server message is raisedsybase_set_message_handler() sets a user function to handle messages generated by the server. You may specify the name of a global function, or use an array to specify an object reference and a method name.
The handler expects five arguments in the following order: message number, severity, state, line number and description. The first four are integers. The last is a string. If the function returns FALSE, PHP generates an ordinary error message.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
P°φklad 3. sybase_set_message_handler() unhandled messages
|
Returns a positive Sybase result identifier on success, or FALSE on error.
sybase_unbuffered_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if sybase_connect() was called, and use it.
Unlike sybase_query(), sybase_unbuffered_query() reads only the first row of the result set. sybase_fetch_array() and similar function read more rows as needed. sybase_data_seek() reads up to the target row. The behavior may produce better performance for large result sets.
sybase_num_rows() will only return the correct number of rows if all result sets have been read. To Sybase, the number of rows is not known and is therefore computed by the client implementation.
Poznßmka: If you don't read all of the resultsets prior to executing the next query, PHP will raise a warning and cancel all of the pending results. To get rid of this, use sybase_free_result() which will cancel pending results of an unbuffered query.
The optional store_result can be FALSE to indicate the resultsets shouldn't be fetched into memory, thus minimizing memory usage which is particularly interesting with very large resultsets.
P°φklad 1. sybase_unbuffered_query() example
|
Tidy is a binding for the Tidy HTML clean and repair utility which allows you to not only clean and otherwise manipluate HTML documents, but also traverse the document tree.
To use Tidy, you will need libtidy installed, available on the tidy homepage http://tidy.sourceforge.net/.
Tidy is currently available for PHP 4.3.x and PHP 5 as a PECL extension from http://pecl.php.net/package/tidy.
If PEAR is available on your *nix-like system you can use the pear installer to install the tidy extension, by the following command: pear -v install tidy.
You can always download the tar.gz package and install tidy by hand:
Windows users can download the extension dll php_tidy.dll from http://snaps.php.net/win32/PECL_STABLE/.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
For further details and definition of the PHP_INI_* constants see ini_set().
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Default path for tidy config file.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The following constants are defined:
Tabulka 2. tidy tag constants
constant | description |
---|---|
TIDY_TAG_UNKNOWN | |
TIDY_TAG_A | |
TIDY_TAG_ABBR | |
TIDY_TAG_ACRONYM | |
TIDY_TAG_ACRONYM | |
TIDY_TAG_ALIGN | |
TIDY_TAG_APPLET | |
TIDY_TAG_AREA | |
TIDY_TAG_B | |
TIDY_TAG_BASE | |
TIDY_TAG_BASEFONT | |
TIDY_TAG_BDO | |
TIDY_TAG_BGSOUND | |
TIDY_TAG_BIG | |
TIDY_TAG_BLINK | |
TIDY_TAG_BLOCKQUOTE | |
TIDY_TAG_BODY | |
TIDY_TAG_BR | |
TIDY_TAG_BUTTON | |
TIDY_TAG_CAPTION | |
TIDY_TAG_CENTER | |
TIDY_TAG_CITE | |
TIDY_TAG_CODE | |
TIDY_TAG_COL | |
TIDY_TAG_COLGROUP | |
TIDY_TAG_COMMENT | |
TIDY_TAG_DD | |
TIDY_TAG_DEL | |
TIDY_TAG_DFN | |
TIDY_TAG_DIR | |
TIDY_TAG_DIV | |
TIDY_TAG_DL | |
TIDY_TAG_DT | |
TIDY_TAG_EM | |
TIDY_TAG_EMBED | |
TIDY_TAG_FIELDSET | |
TIDY_TAG_FONT | |
TIDY_TAG_FORM | |
TIDY_TAG_FRAME | |
TIDY_TAG_FRAMESET | |
TIDY_TAG_H1 | |
TIDY_TAG_H2 | |
TIDY_TAG_H3 | |
TIDY_TAG_H4 | |
TIDY_TAG_H5 | |
TIDY_TAG_6 | |
TIDY_TAG_HEAD | |
TIDY_TAG_HR | |
TIDY_TAG_HTML | |
TIDY_TAG_I | |
TIDY_TAG_IFRAME | |
TIDY_TAG_ILAYER | |
TIDY_TAG_IMG | |
TIDY_TAG_INPUT | |
TIDY_TAG_INS | |
TIDY_TAG_ISINDEX | |
TIDY_TAG_KBD | |
TIDY_TAG_KEYGEN | |
TIDY_TAG_LABEL | |
TIDY_TAG_LAYER | |
TIDY_TAG_LEGEND | |
TIDY_TAG_LI | |
TIDY_TAG_LINK | |
TIDY_TAG_LISTING | |
TIDY_TAG_MAP | |
TIDY_TAG_MARQUEE | |
TIDY_TAG_MENU | |
TIDY_TAG_META | |
TIDY_TAG_MULTICOL | |
TIDY_TAG_NOBR | |
TIDY_TAG_NOEMBED | |
TIDY_TAG_NOFRAMES | |
TIDY_TAG_NOLAYER | |
TIDY_TAG_NOSAFE | |
TIDY_TAG_NOSCRIPT | |
TIDY_TAG_OBJECT | |
TIDY_TAG_OL | |
TIDY_TAG_OPTGROUP | |
TIDY_TAG_OPTION | |
TIDY_TAG_P | |
TIDY_TAG_PARAM | |
TIDY_TAG_PLAINTEXT | |
TIDY_TAG_PRE | |
TIDY_TAG_Q | |
TIDY_TAG_RP | |
TIDY_TAG_RT | |
TIDY_TAG_RTC | |
TIDY_TAG_RUBY | |
TIDY_TAG_S | |
TIDY_TAG_SAMP | |
TIDY_TAG_SCRIPT | |
TIDY_TAG_SELECT | |
TIDY_TAG_SERVER | |
TIDY_TAG_SERVLET | |
TIDY_TAG_SMALL | |
TIDY_TAG_SPACER | |
TIDY_TAG_SPAN | |
TIDY_TAG_STRIKE | |
TIDY_TAG_STRONG | |
TIDY_TAG_STYLE | |
TIDY_TAG_SUB | |
TIDY_TAG_TABLE | |
TIDY_TAG_TBODY | |
TIDY_TAG_TD | |
TIDY_TAG_TEXTAREA | |
TIDY_TAG_TFOOT | |
TIDY_TAG_TH | |
TIDY_TAG_THEAD | |
TIDY_TAG_TITLE | |
TIDY_TAG_TR | |
TIDY_TAG_TR | |
TIDY_TAG_TT | |
TIDY_TAG_U | |
TIDY_TAG_UL | |
TIDY_TAG_VAR | |
TIDY_TAG_WBR | |
TIDY_TAG_XMP |
Tabulka 3. tidy attribute constants
constant | description |
---|---|
TIDY_ATTR_UNKNOWN | |
TIDY_ATTR_ABBR | |
TIDY_ATTR_ACCEPT | |
TIDY_ATTR_ACCEPT_CHARSET | |
TIDY_ATTR_ACCESSKEY | |
TIDY_ATTR_ACTION | |
TIDY_ATTR_ADD_DATE | |
TIDY_ATTR_ALIGN | |
TIDY_ATTR_ALINK | |
TIDY_ATTR_ALT | |
TIDY_ATTR_ARCHIVE | |
TIDY_ATTR_AXIS | |
TIDY_ATTR_BACKGROUND | |
TIDY_ATTR_BGCOLOR | |
TIDY_ATTR_BGPROPERTIES | |
TIDY_ATTR_BORDER | |
TIDY_ATTR_BORDERCOLOR | |
TIDY_ATTR_BOTTOMMARGIN | |
TIDY_ATTR_CELLPADDING | |
TIDY_ATTR_CELLSPACING | |
TIDY_ATTR_CHAR | |
TIDY_ATTR_CHAROFF | |
TIDY_ATTR_CHARSET | |
TIDY_ATTR_CHECKED | |
TIDY_ATTR_CITE | |
TIDY_ATTR_CLASS | |
TIDY_ATTR_CLASSID | |
TIDY_ATTR_CLEAR | |
TIDY_ATTR_CODE | |
TIDY_ATTR_CODEBASE | |
TIDY_ATTR_CODETYPE | |
TIDY_ATTR_COLOR | |
TIDY_ATTR_COLS | |
TIDY_ATTR_COLSPAN | |
TIDY_ATTR_COMPACT | |
TIDY_ATTR_CONTENT | |
TIDY_ATTR_COORDS | |
TIDY_ATTR_DATA | |
TIDY_ATTR_DATAFLD | |
TIDY_ATTR_DATAPAGESIZE | |
TIDY_ATTR_DATASRC | |
TIDY_ATTR_DATETIME | |
TIDY_ATTR_DECLARE | |
TIDY_ATTR_DEFER | |
TIDY_ATTR_DIR | |
TIDY_ATTR_DISABLED | |
TIDY_ATTR_ENCODING | |
TIDY_ATTR_ENCTYPE | |
TIDY_ATTR_FACE | |
TIDY_ATTR_FOR | |
TIDY_ATTR_FRAME | |
TIDY_ATTR_FRAMEBORDER | |
TIDY_ATTR_FRAMESPACING | |
TIDY_ATTR_GRIDX | |
TIDY_ATTR_GRIDY | |
TIDY_ATTR_HEADERS | |
TIDY_ATTR_HEIGHT | |
TIDY_ATTR_HREF | |
TIDY_ATTR_HREFLANG | |
TIDY_ATTR_HSPACE | |
TIDY_ATTR_HTTP_EQUIV | |
TIDY_ATTR_ID | |
TIDY_ATTR_ISMAP | |
TIDY_ATTR_LABEL | |
TIDY_ATTR_LANG | |
TIDY_ATTR_LANGUAGE | |
TIDY_ATTR_LAST_MODIFIED | |
TIDY_ATTR_LAST_VISIT | |
TIDY_ATTR_LEFTMARGIN | |
TIDY_ATTR_LINK | |
TIDY_ATTR_LONGDESC | |
TIDY_ATTR_LOWSRC | |
TIDY_ATTR_MARGINHEIGHT | |
TIDY_ATTR_MARGINWIDTH | |
TIDY_ATTR_MAXLENGTH | |
TIDY_ATTR_MEDIA | |
TIDY_ATTR_METHOD | |
TIDY_ATTR_MULTIPLE | |
TIDY_ATTR_NAME | |
TIDY_ATTR_NOHREF | |
TIDY_ATTR_NORESIZE | |
TIDY_ATTR_NOSHADE | |
TIDY_ATTR_NOWRAP | |
TIDY_ATTR_OBJECT | |
TIDY_ATTR_OnAFTERUPDATE | |
TIDY_ATTR_OnBEFOREUNLOAD | |
TIDY_ATTR_OnBEFOREUPDATE | |
TIDY_ATTR_OnBLUR | |
TIDY_ATTR_OnCHANGE | |
TIDY_ATTR_OnCLICK | |
TIDY_ATTR_OnDATAAVAILABLE | |
TIDY_ATTR_OnDATASETCHANGED | |
TIDY_ATTR_OnDATASETCOMPLETE | |
TIDY_ATTR_OnDBLCLICK | |
TIDY_ATTR_OnERRORUPDATE | |
TIDY_ATTR_OnFOCUS | |
TIDY_ATTR_OnKEYDOWN | |
TIDY_ATTR_OnKEYPRESS | |
TIDY_ATTR_OnKEYUP | |
TIDY_ATTR_OnLOAD | |
TIDY_ATTR_OnMOUSEDOWN | |
TIDY_ATTR_OnMOUSEMOVE | |
TIDY_ATTR_OnMOUSEOUT | |
TIDY_ATTR_OnMOUSEOVER | |
TIDY_ATTR_OnMOUSEUP | |
TIDY_ATTR_OnRESET | |
TIDY_ATTR_OnROWENTER | |
TIDY_ATTR_OnROWEXIT | |
TIDY_ATTR_OnSELECT | |
TIDY_ATTR_OnSUBMIT | |
TIDY_ATTR_OnUNLOAD | |
TIDY_ATTR_PROFILE | |
TIDY_ATTR_PROMPT | |
TIDY_ATTR_RBSPAN | |
TIDY_ATTR_READONLY | |
TIDY_ATTR_REL | |
TIDY_ATTR_REV | |
TIDY_ATTR_RIGHTMARGIN | |
TIDY_ATTR_ROWS | |
TIDY_ATTR_ROWSPAN | |
TIDY_ATTR_RULES | |
TIDY_ATTR_SCHEME | |
TIDY_ATTR_SCOPE | |
TIDY_ATTR_SCROLLING | |
TIDY_ATTR_SELECTED | |
TIDY_ATTR_SHAPE | |
TIDY_ATTR_SHOWGRID | |
TIDY_ATTR_SHOWGRIDX | |
TIDY_ATTR_SHOWGRIDY | |
TIDY_ATTR_SIZE | |
TIDY_ATTR_SPAN | |
TIDY_ATTR_SRC | |
TIDY_ATTR_STANDBY | |
TIDY_ATTR_START | |
TIDY_ATTR_STYLE | |
TIDY_ATTR_SUMMARY | |
TIDY_ATTR_TABINDEX | |
TIDY_ATTR_TARGET | |
TIDY_ATTR_TEXT | |
TIDY_ATTR_TITLE | |
TIDY_ATTR_TOPMARGIN | |
TIDY_ATTR_TYPE | |
TIDY_ATTR_USEMAP | |
TIDY_ATTR_VALIGN | |
TIDY_ATTR_VALUE | |
TIDY_ATTR_VALUETYPE | |
TIDY_ATTR_VERSION | |
TIDY_ATTR_VLINK | |
TIDY_ATTR_VSPACE | |
TIDY_ATTR_WIDTH | |
TIDY_ATTR_WRAP | |
TIDY_ATTR_XML_LANG | |
TIDY_ATTR_XML_SPACE | |
TIDY_ATTR_XMLNS |
Tabulka 4. tidy nodetype constants
constant | description |
---|---|
TIDY_NODETYPE_ROOT | |
TIDY_NODETYPE_DOCTYPE | |
TIDY_NODETYPE_COMMENT | |
TIDY_NODETYPE_PROCINS | |
TIDY_NODETYPE_TEXT | |
TIDY_NODETYPE_START | |
TIDY_NODETYPE_END | |
TIDY_NODETYPE_STARTEND | |
TIDY_NODETYPE_CDATA | |
TIDY_NODETYPE_SECTION | |
TIDY_NODETYPE_ASP | |
TIDY_NODETYPE_JSTE | |
TIDY_NODETYPE_PHP | |
TIDY_NODETYPE_XMLDECL |
(no version information, might be only in CVS)
tidy_access_count -- Returns the Number of Tidy accessibility warnings encountered for specified document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_clean_repair -- Execute configured cleanup and repair operations on parsed markupVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_config_count -- Returns the Number of Tidy configuration errors encountered for specified document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_diagnose -- Run configured diagnostics on parsed and repaired markup.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_error_count -- Returns the Number of Tidy errors encountered for specified document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_body -- Returns a TidyNode Object starting from the >BODY< tag of the tidy parse treeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Tato funkce je k dispozici pouze v Zend Engine 2, to znamenß v PHP >= 5.0.0.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_error_buffer -- Return warnings and errors which occurred parsing the specified documentVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_head -- Returns a TidyNode Object starting from the >HEAD< tag of the tidy parse treeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Tato funkce je k dispozici pouze v Zend Engine 2, to znamenß v PHP >= 5.0.0.
(no version information, might be only in CVS)
tidy_get_html_ver -- Get the Detected HTML version for the specified document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_html -- Returns a TidyNode Object starting from the >HTML< tag of the tidy parse treeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Tato funkce je k dispozici pouze v Zend Engine 2, to znamenß v PHP >= 5.0.0.
(no version information, might be only in CVS)
tidy_get_output -- Return a string representing the parsed tidy markupVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_release -- Get release date (version) for Tidy libraryVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_get_root -- Returns a TidyNode Object representing the root of the tidy parse treeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Tato funkce je k dispozici pouze v Zend Engine 2, to znamenß v PHP >= 5.0.0.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_getopt -- Returns the value of the specified configuration option for the tidy document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_is_xhtml -- Indicates if the document is a generic (non HTML/XHTML) XML document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_load_config -- Load an ASCII Tidy configuration file with the specified encodingVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->attributes -- Returns an array of attribute objects for nodeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->children -- Returns an array of child nodesVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->get_attr -- Return the attribute with the provided attribute idVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->get_nodes -- Return an array of nodes under this node with the specified idVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->has_children -- Returns true if this node has childrenVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->has_siblings -- Returns true if this node has siblingsVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_comment -- Returns true if this node represents a commentVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_html -- Returns true if this node is part of a HTML documentVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_jste -- Returns true if this node is JSTEVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_text -- Returns true if this node represents text (no markup)Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_xhtml -- Returns true if this node is part of a XHTML documentVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->is_xml -- Returns true if this node is part of a XML documentVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->next -- Returns the next sibling to this nodeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_node->prev -- Returns the previous sibling to this nodeVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_parse_string -- Parse a document stored in a stringVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_repair_file -- Repair a file using an optionally provided configuration fileVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_repair_string -- Repair a string using an optionally provided configuration fileVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_reset_config -- Restore Tidy configuration to default valuesVarovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_save_config -- Save current settings to named file. Only non-default values are written.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(no version information, might be only in CVS)
tidy_set_encoding -- Set the input/output character encoding for parsing markup.Sets the encoding for input/output documents. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ. Possible values for encoding are ascii, latin1, raw, utf8, iso2022, mac, win1252, utf16le, utf16be, utf16, big5, and shiftjis.
(no version information, might be only in CVS)
tidy_setopt -- Updates the configuration settings for the specified tidy document.Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
The tokenizer functions provide an interface to the PHP tokenizer embedded in the Zend Engine. Using these functions you may write your own PHP source analyzing or modification tools without having to deal with the language specification at the lexical level.
See also the appendix about tokens.
Beginning with PHP 4.3.0 these functions are enabled by default. For older versions you have to configure and compile PHP with --enable-tokenizer. You can disable tokenizer support with --disable-tokenizer.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Poznßmka: Builtin support for tokenizer is available with PHP 4.3.0.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Here is a simple example PHP scripts using the tokenizer that will read in a PHP file, strip all comments from the source and print the pure code only.
P°φklad 1. Strip comments with the tokenizer
|
token_get_all() parses the given source string into PHP language tokens using the Zend engine's lexical scanner. The function returns an array of token identifiers. Each individual token identifier is either a single character (i.e.: ;, ., >, !, etc...), or a two element array containing the token index in element 0, and the string content of the original token in element 1.
For a list of parser tokens, see L, or use token_name() to translate a token value into its string representation.
P°φklad 1. token_get_all() examples
|
base64_decode() dek≤duje encoded_data a vrßtφ p∙vodnφ data. Vrßcenß data mohou b²t binßrnφ
Viz takΘ: base64_encode(), RFC 2045 sekce 6.8.
base64_encode() vrßtφ data zak≤dovan² pomocφ base64. Toto k≤dovßnφ je navr╛eno tak, aby umo╛nilo binßrnφm dat∙m p°e╛φt transport p°enosov²mi vrstvami, kterΘ nejsou osmibitovΘ, jako jsou nap°φklad t∞la email∙.
Data k≤dovanß pomocφ base64 zabφrajφ o zhruba 33% prostoru vφce ne╛ p∙vodnφ data.
Viz takΘ: base64_decode(), chunk_split(), RFC-2045 sekce 6.8.
(PHP 3>= 3.0.4, PHP 4 )
get_meta_tags -- Zφskß hodnoty content atribut∙ v╣ech meta tag∙ v souboru a vrßtφ poleOtev°e filename, p°eΦte ho po °ßdcφch, a vyhledß <meta> tagy ve tvaru
Hodnota atributu name se ve vrßcenΘm poli stßvß klφΦem, hodnota atributu content hodnotou tohoto pole, tak╛e ho m∙╛ete snadno projφt nebo zφskat jednotlivΘ hodnoty pomocφ snandardnφch funkcφ pro prßci s poli. Zvlß╣tnφ znaky v hodnot∞ atributu name jsou nahrazeny znakem '_', zbytek se p°evede na malß pφsmena.
Pokud je use_include_path rovno 1, PHP se pokusφ otev°φt soubor v standardnφ include cest∞.
Generates a url-encoded query string from the associative (or indexed) array provided. formdata may be an array or object containing properties. A formdata array may be a simple one-dimensional structure, or an array of arrays (who in turn may contain other arrays). If numeric indices are used in the base array and a numeric_prefix is provided, it will be prepended to the numeric index for elements in the base array only. This is to allow for legal variable names when the data is decoded by PHP or another CGI application later on.
P°φklad 2. http_build_query() with numerically index elements.
|
P°φklad 3. http_build_query() with complex arrays
this will output : (word wrapped for readability)
|
See also: parse_str(), parse_url(), urlencode(), and array_walk()
Tato funkce vrßtφ asociativnφ pole v╣ech komponent URL p°φtomnych v url. Ty mohou b²t: "scheme", "host", "port", "user", "pass", "path", "query" a "fragment".
Vrßtφ °et∞zec, ve kterΘm sekvence znaku procent (%) nßsledov²ch dv∞ma ╣estnßctkov²mi Φφslicemi byly nahrazeny prost²mi znaky. Nap°φklad °et∞zec
foo%20bar%40baz |
foo bar@baz |
Viz takΘ: rawurlencode(), urldecode(), urlencode().
Vrßtφ °et∞zec, ve kterΘm byly v╣echny nealfanumerickΘ znaky krom∞
-_. |
Viz takΘ: rawurldecode(), urldecode(), urlencode() a RFC 1738.
Dek≤duje v╣echny %## k≤dy v danΘm °et∞zci. Vrßtφ dek≤dovan² °et∞zec.
Viz takΘ urlencode(), rawurlencode() a rawurldecode().
Vrßtφ °et∞zec, ve kterΘm byly v╣echny nealfanumerickΘ znaky krom∞ -_. nahrazeny znakem procent (%) nßsledovan²m dv∞ma ╣estnßcktov²mi Φφslicemi a mezery k≤dovßny jako znaky plus (+). K≤dovßnφ je stejnΘ jako u dat postovan²ch z WWW formulß°e, tj. stejn∞ jako u application/x-www-form-urlencoded typu. To se li╣φ od RFC1738 k≤dovßnφ (viz rawurlencode()) v tom, ╛e z historick²ch d∙vod∙ se mezery k≤dujφ jako znaky plus (+). Tato funkce je vhodnß p°i k≤dovßnφ °et∞zce, kter² se mß pou╛φt jako query Φßst URL jako p°φhodn² zp∙sob p°edßnφ prom∞nn²ch na dal╣φ strßnku:
Poznßmka: pozor p°i p°edßvßnφ prom∞nn²ch, kterΘ by mohly odpovφdat HTML entitßm. V∞ci jako &, © a £ browser analyzuje a mφsto po╛adovanΘho jmΘna prom∞nnΘ pou╛ije odpovφdajφcφ entitu. To je z°ejm² problΘm, na kter² W3C upozor≥uje u╛ lΘta. P°φruΦka je tady: http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP podporuje zm∞nu odd∞lovaΦe argument∙ na st°ednφk doporuΦovan² W3C skrze .ini direktivu arg_separator. Bohu╛el, v∞t╣ina u╛ivatelsk²ch program∙ neposφlß data z formulß°∙ v tomto formßtu. P°enositeln∞j╣φ formou je pou╛φt jako odd∞lovaΦ & mφsto &. Na to nemusφte m∞nit arg_separator. Nechte ho na &, ale k≤dujte URL pomocφ htmlentities() (urlencode($data)).
Viz takΘ urldecode(), htmlentities(), rawurldecode(), rawurlencode().
For information on how variables behave, see the Variables entry in the Language Reference section of the manual.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. Variables Configuration Options
Name | Default | Changeable |
---|---|---|
unserialize_callback_func | "" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
The unserialize callback function will called (with the undefined class' name as parameter), if the unserializer finds an undefined class which should be instanciated. A warning appears if the specified function is not defined, or if the function doesn't include/implement the missing class. So only set this entry, if you really want to implement such a callback-function.
See also unserialize().
This function is an alias of floatval().
Poznßmka: This alias is a left-over from a function-renaming. In older versions of PHP you'll need to use this alias of the floatval() function, because floatval() wasn't yet available in that version.
empty() returns FALSE if var has a non-empty or non-zero value. In otherwords, "", 0, "0", NULL, FALSE, array(), var $var;, and objects with empty properties, are all considered empty. TRUE is returned if var is empty.
empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set. See converting to boolean for more information.
P°φklad 1. A simple empty() / isset() comparison.
|
Poznßmka: Proto╛e se jednß o konstrukci jazyka a ne funkci, nem∙╛e b²t volßna pomocφ funkcφ v prom∞nn²ch
Poznßmka: empty() only checks variables as anything else will result in a parse error. In otherwords, the following will not work: empty(addslashes($name)).
See also isset(), unset(), array_key_exists(), count(), strlen(), and the type comparison tables.
Returns the float value of var.
Var may be any scalar type. You cannot use floatval() on arrays or objects.
<?php $var = '122.34343The'; $float_value_of_var = floatval($var); echo $float_value_of_var; // prints 122.34343 ?> |
See also intval(), strval(), settype() and Type juggling.
This function returns an multidimensional array containing a list of all defined variables, be them environment, server or user-defined variables.
<?php $b = array(1, 1, 2, 3, 5, 8); $arr = get_defined_vars(); // print $b print_r($arr["b"]); /* print path to the PHP interpreter (if used as a CGI) * e.g. /usr/local/bin/php */ echo $arr["_"]; // print the command-line paramaters if any print_r($arr["argv"]); // print all the server vars print_r($arr["_SERVER"]); // print all the available keys for the arrays of variables print_r(array_keys(get_defined_vars())); ?> |
See also get_defined_functions() and get_defined_constants().
This function returns a string representing the type of the resource passed to it. If the paramater is not a valid resource, it generates an error.
Returns the type of the PHP variable var.
Varovßnφ |
Never use gettype() to test for a certain type, since the returned string may be subject to change in a future version. In addition, it is slow too, as it involves string comparison. Instead, use the is_* functions. |
Possibles values for the returned string are:
"boolean" (since PHP 4)
"integer"
"double" (for historical reasons "double" is returned in case of a float, and not simply "float")
"string"
"array"
"object"
"resource" (since PHP 4)
"NULL" (since PHP 4)
"user function" (PHP 3 only, deprecated)
"unknown type"
For PHP 4, you should use function_exists() and method_exists() to replace the prior usage of gettype() on a function.
See also settype(), is_array(), is_bool(), is_float(), is_integer(), is_null(), is_numeric(), is_object(), is_resource(), is_scalar(), and is_string().
Imports GET/POST/Cookie variables into the global scope. It is useful if you disabled register_globals, but would like to see some variables in the global scope.
Using the types parameter, you can specify which request variables to import. You can use 'G', 'P' and 'C' characters respectively for GET, POST and Cookie. These characters are not case sensitive, so you can also use any combination of 'g', 'p' and 'c'. POST includes the POST uploaded file information. Note that the order of the letters matters, as when using "gp", the POST variables will overwrite GET variables with the same name. Any other letters than GPC are discarded.
The prefix parameter is used as a variable name prefix, prepended before all variable's name imported into the global scope. So if you have a GET value named "userid", and provide a prefix "pref_", then you'll get a global variable named $pref_userid.
If you're interested in importing other variables into the global scope, such as SERVER, consider using extract().
Poznßmka: Although the prefix parameter is optional, you will get an E_NOTICE level error if you specify no prefix, or specify an empty string as a prefix. This is a possible security hazard. Notice level errors are not displayed using the default error reporting level.
<?php // This will import GET and POST vars // with an "rvar_" prefix import_request_variables("gP", "rvar_"); echo $rvar_foo; ?> |
See also $_REQUEST, register_globals, Predefined Variables, and extract().
Returns the integer value of var, using the specified base for the conversion (the default is base 10).
var may be any scalar type. You cannot use intval() on arrays or objects.
Poznßmka: The base argument for intval() has no effect unless the var argument is a string.
See also floatval(), strval(), settype() and Type juggling.
Returns TRUE if var is an array, FALSE otherwise.
See also is_float(), is_int(), is_integer(), is_string(), and is_object().
Returns TRUE if the var parameter is a boolean.
See also is_array(), is_float(), is_int(), is_integer(), is_string(), and is_object().
Verify that the contents of a variable can be called as a function. This can check that a simple variable contains the name of a valid function, or that an array contains a properly encoded object and function name.
The var parameter can be either the name of a function stored in a string variable, or an object and the name of a method within the object, like this:
array($SomeObject, 'MethodName') |
If the syntax_only argument is TRUE the function only verifies that var might be a function or method. It will only reject simple variables that are not strings, or an array that does not have a valid structure to be used as a callback. The valid ones are supposed to have only 2 entries, the first of which is an object or a string, and the second a string.
The callable_name argument receives the "callable name". In the example below it's "someClass:someMethod". Note, however, that despite the implication that someClass::SomeMethod() is a callable static method, this is not the case.
<?php // How to check a variable to see if it can be called // as a function. // // Simple variable containing a function // function someFunction() { } $functionVariable = 'someFunction'; var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true) echo $callable_name, "\n"; // someFunction // // Array containing a method // class someClass { function someMethod() { } } $anObject = new someClass(); $methodVariable = array($anObject, 'someMethod'); var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true) echo $callable_name, "\n"; // someClass:someMethod ?> |
Returns TRUE if var is a float, FALSE otherwise.
Poznßmka: To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
See also is_bool(), is_int(), is_integer(), is_numeric(), is_string(), is_array(), and is_object(),
Returns TRUE if var is an integer FALSE otherwise.
Poznßmka: To test if a variable is a number or a numeric string (such as form input, which is always a string), you must use is_numeric().
See also is_bool(), is_float(), is_integer(), is_numeric(), is_string(), is_array(), and is_object().
Returns TRUE if var is null, FALSE otherwise.
See the NULL type when a variable is considered to be NULL and when not.
See also NULL, is_bool(), is_numeric(), is_float(), is_int(), is_string(), is_object(), is_array(), is_integer(), and is_real().
Returns TRUE if var is a number or a numeric string, FALSE otherwise.
See also is_bool(), is_float(), is_int(), is_string(), is_object(), is_array(), and is_integer().
Returns TRUE if var is an object, FALSE otherwise.
See also is_bool(), is_int(), is_integer(), is_float(), is_string(), and is_array().
is_resource() returns TRUE if the variable given by the var parameter is a resource, otherwise it returns FALSE.
See the documentation on the resource-type for more information.
is_scalar() returns TRUE if the variable given by the var parameter is a scalar, otherwise it returns FALSE.
Scalar variables are those containing an integer, float, string or boolean. Types array, object and resource are not scalar.
<?php function show_var($var) { if (is_scalar($var)) { echo $var; } else { var_dump($var); } } $pi = 3.1416; $proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin"); show_var($pi); // prints: 3.1416 show_var($proteins) // prints: // array(3) { // [0]=> // string(10) "hemoglobin" // [1]=> // string(20) "cytochrome c oxidase" // [2]=> // string(10) "ferredoxin" // } ?> |
Poznßmka: is_scalar() does not consider resource type values to be scalar as resources are abstract datatypes which are currently based on integers. This implementation detail should not be relied upon, as it may change.
See also is_bool(), is_numeric(), is_float(), is_int(), is_real(), is_string(), is_object(), is_array(), and is_integer().
Returns TRUE if var is a string, FALSE otherwise.
See also is_bool(), is_int(), is_integer(), is_float(), is_real(), is_object(), and is_array().
Returns TRUE if var exists; FALSE otherwise.
If a variable has been unset with unset(), it will no longer be set. isset() will return FALSE if testing a variable that has been set to NULL. Also note that a NULL byte ("\0") is not equivalent to the PHP NULL constant.
Warning: isset() only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined() function.
<?php $var = ''; // This will evaluate to &true; so the text will be printed. if (isset($var)) { echo "This var is set set so I will print."; } // In the next examples we'll use var_dump to output // the return value of isset(). $a = "test"; $b = "anothertest"; var_dump(isset($a)); // TRUE var_dump(isset($a, $b)); // TRUE unset ($a); var_dump(isset($a)); // FALSE var_dump(isset($a, $b)); // FALSE $foo = NULL; var_dump(isset($foo)); // FALSE ?> |
This also work for elements in arrays:
<?php $a = array ('test' => 1, 'hello' => NULL); var_dump(isset($a['test'])); // TRUE var_dump(isset($a['foo'])); // FALSE var_dump(isset($a['hello'])); // FALSE // The key 'hello' equals NULL so is considered unset // If you want to check for NULL key values then try: var_dump(array_key_exists('hello', $a)); // TRUE ?> |
Poznßmka: Proto╛e se jednß o konstrukci jazyka a ne funkci, nem∙╛e b²t volßna pomocφ funkcφ v prom∞nn²ch
See also empty(), unset(), defined(), the type comparison tables, array_key_exists(), and the error control @ operator.
Poznßmka: The return parameter was added in PHP 4.3.0
print_r() displays information about a variable in a way that's readable by humans. If given a string, integer or float, the value itself will be printed. If given an array, values will be presented in a format that shows keys and elements. Similar notation is used for objects. print_r() and var_export() will also show protected and private properties of objects with PHP 5, on the contrary to var_dump().
Remember that print_r() will move the array pointer to the end. Use reset() to bring it back to beginning.
<pre> <?php $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z')); print_r ($a); ?> </pre> |
Which will output:
<pre> Array ( [a] => apple [b] => banana [c] => Array ( [0] => x [1] => y [2] => z ) ) </pre> |
If you would like to capture the output of print_r(), use the return parameter. If this parameter is set to TRUE, print_r() will return its output, instead of printing it (which it does by default).
Poznßmka: If you need to capture the output of print_r() with a version of PHP prior to 4.3.0, use the output-control functions.
Poznßmka: Prior to PHP 4.0.4, print_r() will continue forever if given an array or object that contains a direct or indirect reference to itself. An example is print_r($GLOBALS) because $GLOBALS is itself a global variable that contains a reference to itself.
See also ob_start(), var_dump() and var_export().
serialize() returns a string containing a byte-stream representation of value that can be stored anywhere.
This is useful for storing or passing PHP values around without losing their type and structure.
To make the serialized string into a PHP value again, use unserialize(). serialize() handles all types, except the resource-type. You can even serialize() arrays that contain references to itself. References inside the array/object you are serialize()ing will also be stored.
When serializing objects, PHP will attempt to call the member function __sleep() prior to serialization. This is to allow the object to do any last minute clean-up, etc. prior to being serialized. Likewise, when the object is restored using unserialize() the __wakeup() member function is called.
Poznßmka: In PHP 3, object properties will be serialized, but methods are lost. PHP 4 removes that limitation and restores both properties and methods. Please see the Serializing Objects section of Classes and Objects for more information.
P°φklad 1. serialize() example
|
See Also: unserialize().
Set the type of variable var to type.
Possibles values of type are:
"boolean" (or, since PHP 4.2.0, "bool")
"integer" (or, since PHP 4.2.0, "int")
"float" (only possible since PHP 4.2.0, for older versions use the deprecated variant "double")
"string"
"array"
"object"
"null" (since PHP 4.2.0)
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
See also gettype(), type-casting and type-juggling.
Returns the string value of var. See the documentation on string for more information on converting to string.
var may be any scalar type. You cannot use strval() on arrays or objects.
See also floatval(), intval(), settype() and Type juggling.
unserialize() takes a single serialized variable (see serialize()) and converts it back into a PHP value. The converted value is returned, and can be an integer, float, string, array or object. In case the passed string is not unserializeable, FALSE is returned.
unserialize_callback_func directive: It's possible to set a callback-function which will be called, if an undefined class should be instantiated during unserializing. (to prevent getting an incomplete object "__PHP_Incomplete_Class".) Use your php.ini, ini_set() or .htaccess to define 'unserialize_callback_func'. Everytime an undefined class should be instantiated, it'll be called. To disable this feature just empty this setting. Also note that the directive unserialize_callback_func directive became available in PHP 4.2.0.
If the variable being unserialized is an object, after successfully reconstructing the object PHP will automatically attempt to call the __wakeup() member function (if it exists).
P°φklad 1. unserialize_callback_func example
|
Poznßmka: In PHP 3, methods are not preserved when unserializing a serialized object. PHP 4 removes that limitation and restores both properties and methods. Please see the Serializing Objects section of Classes and Objects or more information.
P°φklad 2. unserialize() example
|
See also serialize().
unset() destroys the specified variables. Note that in PHP 3, unset() will always return TRUE (actually, the integer value 1). In PHP 4, however, unset() is no longer a true function: it is now a statement. As such no value is returned, and attempting to take the value of unset() results in a parse error.
The behavior of unset() inside of a function can vary depending on what type of variable you are attempting to destroy.
If a globalized variable is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.
<?php function destroy_foo() { global $foo; unset($foo); } $foo = 'bar'; destroy_foo(); echo $foo; ?> |
If a variable that is PASSED BY REFERENCE is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.
<?php function foo(&$bar) { unset($bar); $bar = "blah"; } $bar = 'something'; echo "$bar\n"; foo($bar); echo "$bar\n"; ?> |
If a static variable is unset() inside of a function, unset() destroys the variable and all its references.
The above example would output:If you would like to unset() a global variable inside of a function, you can use the $GLOBALS array to do so:
Poznßmka: Proto╛e se jednß o konstrukci jazyka a ne funkci, nem∙╛e b²t volßna pomocφ funkcφ v prom∞nn²ch
See also isset(), empty(), and array_splice().
This function displays structured information about one or more expressions that includes its type and value. Arrays and objects are explored recursively with values indented to show structure.
In PHP only public properties of objects will be returned in the output. var_export() and print_r() will also return protected and private properties.
Tip: Jako pro cokoliv, co posφlß svΘ v²sledky p°φmo do prohlφ╛eΦe, m∙╛ete pou╛φt funkce pro °φzenφ v²stupu k zachycenφ v²stupu tΘto funkce a jeho ulo╛enφ - nap°φklad - do °et∞zce (string).
See also var_export() and print_r().
This function returns structured information about the variable that is passed to this function. It is similar to var_dump() with two exceptions. The first one is that the returned representation is valid PHP code, the second that it will also return protected and private properties of an object with PHP 5.
You can also return the variable representation by using TRUE as second parameter to this function.
<?php $a = array (1, 2, array ("a", "b", "c")); var_export($a); ?> |
output:
array ( 0 => 1, 1 => 2, 2 => array ( 0 => 'a', 1 => 'b', 2 => 'c', ), ) |
<?php $b = 3.1; $v = var_export($b, true); echo $v; ?> |
output:
3.1 |
See also var_export() and print_r().
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
This extension has been moved from PHP as of PHP 4.3.0 and now vpopmail lives in PECL.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(4.0.5 - 4.2.3 only)
vpopmail_auth_user -- Attempt to validate a username/domain/password. Returns true/falseVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
This extension is a generic extension API to DLLs. This was originally written to allow access to the Win32 API from PHP, although you can also access other functions exported via other DLLs.
Currently supported types are generic PHP types (strings, booleans, floats, integers and nulls) and types you define with w32api_deftype().
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
This extension defines one resource type, used for user defined types. The name of this resource is "dynaparm".
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
This example gets the amount of time the system has been running and displays it in a message box.
P°φklad 1. Get the uptime and display it in a message box
|
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
If you would like to define a type for a w32api call, you need to call w32api_deftype(). This function takes 2n+1 arguments, where n is the number of members the type has. The first argument is the name of the type. After that is the type of the member followed by the members name (in pairs). A member type can be a user defined type. All the type names are case sensitive. Built in type names should be provided in lowercase. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
(4.2.0 - 4.2.3 only)
w32api_init_dtype -- Creates an instance of the data type typename and fills it with the values passedVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function creates an instance of the data type named typename, filling in the values of the data type. The typename parameter is case sensitive. You should give the values in the same order as you defined the data type with w32api_deftype(). The type of the resource returned is dynaparm.
(4.2.0 - 4.2.3 only)
w32api_invoke_function -- Invokes function funcname with the arguments passed after the function nameVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
w32api_invoke_function() tries to find the previously registered function, named funcname, passing the parameters you provided. The return type is the one you set when you registered the function, the value is the one returned by the function itself. Any of the arguments can be of any PHP type or w32api_deftype() defined type, as needed.
(4.2.0 - 4.2.3 only)
w32api_register_function -- Registers function function_name from library with PHPVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function tries to find the function_name function in libary, and tries to import it into PHP. The function will be registered with the given return_type. This type can be a generic PHP type, or a type defined with w32api_deftype(). All type names are case sensitive. Built in type names should be provided in lowercase. Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
This function sets the method call type. The parameter can be one of the constants DC_CALL_CDECL or DC_CALL_STD. The extension default is DC_CALL_STD.
Tyto funkce jsou urΦeny pro prßci s WDDX.
Pokud chcete pou╛φvat WDDX, budete muset nainstalovat expat knihovnu (kterß je u Apache 1.3.7 a vy╣╣φch).
Po instalaci expatu zkompilujte PHP s volbou --enable-wddx.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
V╣echny funkce, kterΘ serializujφ prom∞nnΘ, pou╛φvajφ prvnφ element pole k rozhodnutφ jestli se toto pole serializuje do pole nebo struktury. Pokud mß prvnφ element °et∞zec jako index, serializuje se do struktury, jinak do pole.
P°φklad 2. Pou╛itφ inkrementßlnφch paket∙
Tato ukßzka vytvo°φ:
|
Poznßmka: If you want to serialize non-ASCII characters you have to set the appropriate locale before doing so (see setlocale()).
wddx_add_vars() se pou╛φvß k serializaci p°edan²ch prom∞nn²ch a p°idßnφ v²sledku do paketu specifikovanΘho packet_id. Prom∞nnΘ urΦenΘ k serializaci se udßvajφ stejn∞ jako u wddx_serialize_vars().
wddx_deserialized() p°ijφmß °et∞zec packet a deserializuje ho. Vracφ v²sledek, co╛ m∙╛e b²t °et∞zec, Φφslo, nebo pole. Pozn.: Struktury se deserializujφ do asociativnφch polφ.
wddx_packet_end() ukonΦφ WDDX paket urΦen² argumentem packet_id a vracφ °et∞zec obsahujφcφ tento paket.
wddx_packet_start() se pou╛φvß k zapoΦetφ novΘho WDDX paketu pro inkrementßlnφ p°idßvßnφ prom∞nn²ch. P°ijφmß voliteln² °et∞zec comment a vracφ ID packetu pro pou╛itφ v dal╣φch funkcφch. Uvnit° paketu automaticky vytvß°φ definici struktury kterß bude obsahovat p°idanΘ prom∞nnΘ.
wddx_serialize_value() se pou╛φvß k vytvo°enφ WDDX paketu z jedinΘ danΘ hodnoty. P°ijφmß hodnotu obsa╛enou ve var a voliteln² °et∞zec comment, kter² se pou╛ije v hlaviΦce paketu, a vracφ WDDX paket.
wddx_serialize_vars() se pou╛φvß k vytvo°enφ WDDX paketu se strukturou kterß obsahuje serializovanou reprezentaci p°edan²ch prom∞nn²ch.
wddx_serialize_vars() p°ijφmß prom∞nn² poΦet argument∙, ka╛d² z nich m∙╛e b²t bu∩ °et∞zec obsahujφcφ nßzev prom∞nnΘ, nebo pole nßzv∙ prom∞nn²ch, nebo jinΘ pole atd.
V²╣e uvedenß ukßzka vytvo°φ:
<wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var> <var name='b'><number>5.5</number></var><var name='c'><array length='3'> <string>blue</string><string>orange</string><string>violet</string></array></var> <var name='d'><string>colors</string></var></struct></data></wddxPacket> |
XML (eXtensible Markup Language) is a data format for structured document interchange on the Web. It is a standard defined by The World Wide Web consortium (W3C). Information about XML and related technologies can be found at http://www.w3.org/XML/.
This PHP extension implements support for James Clark's expat in PHP. This toolkit lets you parse, but not validate, XML documents. It supports three source character encodings also provided by PHP: US-ASCII, ISO-8859-1 and UTF-8. UTF-16 is not supported.
This extension lets you create XML parsers and then define handlers for different XML events. Each XML parser also has a few parameters you can adjust.
This extension uses expat, which can be found at http://www.jclark.com/xml/expat.html. The Makefile that comes with expat does not build a library by default, you can use this make rule for that:
libexpat.a: $(OBJS) ar -rc $@ $(OBJS) ranlib $@ |
These functions are enabled by default, using the bundled expat library. You can disable XML support with --disable-xml. If you compile PHP as a module for Apache 1.3.9 or later, PHP will automatically use the bundled expat library from Apache. In order you don't want to use the bundled expat library configure PHP --with-expat-dir=DIR, where DIR should point to the base installation directory of expat.
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
The xml resource as returned by xml_parser_create() and xml_parser_create_ns() references an xml parser instance to be used with the functions provided by this extension.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
The XML event handlers defined are:
Tabulka 1. Supported XML handlers
PHP function to set handler | Event description |
---|---|
xml_set_element_handler() | Element events are issued whenever the XML parser encounters start or end tags. There are separate handlers for start tags and end tags. |
xml_set_character_data_handler() | Character data is roughly all the non-markup contents of XML documents, including whitespace between tags. Note that the XML parser does not add or remove any whitespace, it is up to the application (you) to decide whether whitespace is significant. |
xml_set_processing_instruction_handler() | PHP programmers should be familiar with processing instructions (PIs) already. <?php ?> is a processing instruction, where php is called the "PI target". The handling of these are application-specific, except that all PI targets starting with "XML" are reserved. |
xml_set_default_handler() | What goes not to another handler goes to the default handler. You will get things like the XML and document type declarations in the default handler. |
xml_set_unparsed_entity_decl_handler() | This handler will be called for declaration of an unparsed (NDATA) entity. |
xml_set_notation_decl_handler() | This handler is called for declaration of a notation. |
xml_set_external_entity_ref_handler() | This handler is called when the XML parser finds a reference to an external parsed general entity. This can be a reference to a file or URL, for example. See the external entity example for a demonstration. |
The element handler functions may get their element names case-folded. Case-folding is defined by the XML standard as "a process applied to a sequence of characters, in which those identified as non-uppercase are replaced by their uppercase equivalents". In other words, when it comes to XML, case-folding simply means uppercasing.
By default, all the element names that are passed to the handler functions are case-folded. This behaviour can be queried and controlled per XML parser with the xml_parser_get_option() and xml_parser_set_option() functions, respectively.
The following constants are defined for XML error codes (as returned by xml_parse()):
XML_ERROR_NONE |
XML_ERROR_NO_MEMORY |
XML_ERROR_SYNTAX |
XML_ERROR_NO_ELEMENTS |
XML_ERROR_INVALID_TOKEN |
XML_ERROR_UNCLOSED_TOKEN |
XML_ERROR_PARTIAL_CHAR |
XML_ERROR_TAG_MISMATCH |
XML_ERROR_DUPLICATE_ATTRIBUTE |
XML_ERROR_JUNK_AFTER_DOC_ELEMENT |
XML_ERROR_PARAM_ENTITY_REF |
XML_ERROR_UNDEFINED_ENTITY |
XML_ERROR_RECURSIVE_ENTITY_REF |
XML_ERROR_ASYNC_ENTITY |
XML_ERROR_BAD_CHAR_REF |
XML_ERROR_BINARY_ENTITY_REF |
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF |
XML_ERROR_MISPLACED_XML_PI |
XML_ERROR_UNKNOWN_ENCODING |
XML_ERROR_INCORRECT_ENCODING |
XML_ERROR_UNCLOSED_CDATA_SECTION |
XML_ERROR_EXTERNAL_ENTITY_HANDLING |
PHP's XML extension supports the Unicode character set through different character encodings. There are two types of character encodings, source encoding and target encoding. PHP's internal representation of the document is always encoded with UTF-8.
Source encoding is done when an XML document is parsed. Upon creating an XML parser, a source encoding can be specified (this encoding can not be changed later in the XML parser's lifetime). The supported source encodings are ISO-8859-1, US-ASCII and UTF-8. The former two are single-byte encodings, which means that each character is represented by a single byte. UTF-8 can encode characters composed by a variable number of bits (up to 21) in one to four bytes. The default source encoding used by PHP is ISO-8859-1.
Target encoding is done when PHP passes data to XML handler functions. When an XML parser is created, the target encoding is set to the same as the source encoding, but this may be changed at any point. The target encoding will affect character data as well as tag names and processing instruction targets.
If the XML parser encounters characters outside the range that its source encoding is capable of representing, it will return an error.
If PHP encounters characters in the parsed XML document that can not be represented in the chosen target encoding, the problem characters will be "demoted". Currently, this means that such characters are replaced by a question mark.
Here are some example PHP scripts parsing XML documents.
This first example displays the structure of the start elements in a document with indentation.
P°φklad 1. Show XML Element Structure
|
P°φklad 2. Map XML to HTML This example maps tags in an XML document directly to HTML tags. Elements not found in the "map array" are ignored. Of course, this example will only work with a specific XML document type.
|
This example highlights XML code. It illustrates how to use an external entity reference handler to include and parse other documents, as well as how PIs can be processed, and a way of determining "trust" for PIs containing code.
XML documents that can be used for this example are found below the example (xmltest.xml and xmltest2.xml.)
P°φklad 3. External Entity Example
|
P°φklad 4. xmltest.xml
|
This file is included from xmltest.xml:
(PHP 3>= 3.0.6, PHP 4 )
utf8_decode -- Converts a string with ISO-8859-1 characters encoded with UTF-8 to single-byte ISO-8859-1.This function decodes data, assumed to be UTF-8 encoded, to ISO-8859-1.
See also utf8_encode() for an explanation of UTF-8 encoding.
This function encodes the string data to UTF-8, and returns the encoded version. UTF-8 is a standard mechanism used by Unicode for encoding wide character values into a byte stream. UTF-8 is transparent to plain ASCII characters, is self-synchronized (meaning it is possible for a program to figure out where in the bytestream characters start) and can be used with normal string comparison functions for sorting and such. PHP encodes UTF-8 characters in up to four bytes, like this:
Each b represents a bit that can be used to store character data.
An error code from xml_get_error_code().
Returns a string with a textual description of the error code code, or FALSE if no description was found.
A reference to the XML parser to get byte index from.
This function returns FALSE if parser does not refer to a valid parser, or else it returns which byte index the parser is currently at in its data buffer (starting at 0).
A reference to the XML parser to get column number from.
This function returns FALSE if parser does not refer to a valid parser, or else it returns which column on the current line (as given by xml_get_current_line_number()) the parser is currently at.
A reference to the XML parser to get line number from.
This function returns FALSE if parser does not refer to a valid parser, or else it returns which line the parser is currently at in its data buffer.
A reference to the XML parser to get error code from.
This function returns FALSE if parser does not refer to a valid parser, or else it returns one of the error codes listed in the error codes section.
This function parses an XML file into 2 parallel array structures, one (index) containing pointers to the location of the appropriate values in the values array. These last two parameters must be passed by reference.
Below is an example that illustrates the internal structure of the arrays being generated by the function. We use a simple note tag embedded inside a para tag, and then we parse this an print out the structures generated:
<?php $simple = "<para><note>simple note</note></para>"; $p = xml_parser_create(); xml_parse_into_struct($p, $simple, $vals, $index); xml_parser_free($p); echo "Index array\n"; print_r($index); echo "\nVals array\n"; print_r($vals); ?> |
When we run that code, the output will be:
Index array Array ( [PARA] => Array ( [0] => 0 [1] => 2 ) [NOTE] => Array ( [0] => 1 ) ) Vals array Array ( [0] => Array ( [tag] => PARA [type] => open [level] => 1 ) [1] => Array ( [tag] => NOTE [type] => complete [level] => 2 [value] => simple note ) [2] => Array ( [tag] => PARA [type] => close [level] => 1 ) ) |
Event-driven parsing (based on the expat library) can get complicated when you have an XML document that is complex. This function does not produce a DOM style object, but it generates structures amenable of being transversed in a tree fashion. Thus, we can create objects representing the data in the XML file easily. Let's consider the following XML file representing a small database of aminoacids information:
P°φklad 1. moldb.xml - small database of molecular information
|
P°φklad 2. parsemoldb.php - parses moldb.xml into and array of molecular objects
|
A reference to the XML parser to use.
Chunk of data to parse. A document may be parsed piece-wise by calling xml_parse() several times with new data, as long as the is_final parameter is set and TRUE when the last data is parsed.
If set and TRUE, data is the last piece of data sent in this parse.
When the XML document is parsed, the handlers for the configured events are called as many times as necessary, after which this function returns TRUE or FALSE.
TRUE is returned if the parse was successful, FALSE if it was not successful, or if parser does not refer to a valid parser. For unsuccessful parses, error information can be retrieved with xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() and xml_get_current_byte_index().
xml_parser_create_ns() creates a new XML parser with XML namespace support and returns a resource handle referencing it to be used by the other XML functions.
With a namespace aware parser tag parameters passed to the various handler functions will consist of namespace and tag name separated by the string specified in seperator or ':' by default.
The optional encoding specifies the character encoding of the XML input to be parsed. Supported encodings are "ISO-8859-1", which is also the default if no encoding is specified, "UTF-8" and "US-ASCII".
See also xml_parser_create(), and xml_parser_free().
xml_parser_create() creates a new XML parser and returns a resource handle referencing it to be used by the other XML functions.
The optional encoding specifies the character encoding of the XML input to be parsed. Supported encodings are "ISO-8859-1", which is also the default if no encoding is specified, "UTF-8" and "US-ASCII".
See also xml_parser_create_ns() and xml_parser_free().
A reference to the XML parser to free.
This function returns FALSE if parser does not refer to a valid parser, or else it frees the parser and returns TRUE.
A reference to the XML parser to get an option from.
Which option to fetch. See xml_parser_set_option() for a list of options.
This function returns FALSE if parser does not refer to a valid parser, or if the option could not be set. Else the option's value is returned.
See xml_parser_set_option() for the list of options.
A reference to the XML parser to set an option in.
Which option to set. See below.
The option's new value.
This function returns FALSE if parser does not refer to a valid parser, or if the option could not be set. Else the option is set and TRUE is returned.
The following options are available:
Tabulka 1. XML parser options
Option constant | Data type | Description |
---|---|---|
XML_OPTION_CASE_FOLDING | integer | Controls whether case-folding is enabled for this XML parser. Enabled by default. |
XML_OPTION_TARGET_ENCODING | string | Sets which target encoding to use in this XML parser. By default, it is set to the same as the source encoding used by xml_parser_create(). Supported target encodings are ISO-8859-1, US-ASCII and UTF-8. |
Sets the character data handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
The function named by handler must accept
two parameters:
handler ( resource parser, string data)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, data, contains the character data as a string.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
Sets the default handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
The function named by handler must accept
two parameters:
handler ( resource parser, string data)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, data, contains the character data. This may be the XML declaration, document type declaration, entities or other data for which no other handler exists.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
Sets the element handler functions for the XML parser parser. start_element_handler and end_element_handler are strings containing the names of functions that must exist when xml_parse() is called for parser.
The function named by start_element_handler
must accept three parameters:
start_element_handler ( resource parser, string name, array attribs)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters.
The third parameter, attribs, contains an associative array with the element's attributes (if any). The keys of this array are the attribute names, the values are the attribute values. Attribute names are case-folded on the same criteria as element names. Attribute values are not case-folded.
The original order of the attributes can be retrieved by walking through attribs the normal way, using each(). The first key in the array was the first attribute, and so on.
The function named by end_element_handler
must accept two parameters:
end_element_handler ( resource parser, string name)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handlers are set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
(PHP 3>= 3.0.6, PHP 4 )
xml_set_external_entity_ref_handler -- set up external entity reference handlerSets the external entity reference handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
The function named by handler must accept
five parameters, and should return an integer value. If the
value returned from the handler is FALSE (which it will be if no
value is returned), the XML parser will stop parsing and
xml_get_error_code() will return XML_ERROR_EXTERNAL_ENTITY_HANDLING.
handler ( resource parser, string open_entity_names, string base, string system_id, string public_id)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, open_entity_names, is a space-separated list of the names of the entities that are open for the parse of this entity (including the name of the referenced entity).
This is the base for resolving the system identifier (system_id) of the external entity. Currently this parameter will always be set to an empty string.
The fourth parameter, system_id, is the system identifier as specified in the entity declaration.
The fifth parameter, public_id, is the public identifier as specified in the entity declaration, or an empty string if none was specified; the whitespace in the public identifier will have been normalized as required by the XML spec.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
Sets the notation declaration handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
A notation declaration is part of the document's DTD and has the following format:
<!NOTATION <parameter>name</parameter> { <parameter>systemId</parameter> | <parameter>publicId</parameter>?> |
The function named by handler must accept
five parameters:
handler ( resource parser, string notation_name, string base, string system_id, string public_id)
The first parameter, parser, is a reference to the XML parser calling the handler.
This is the notation's name, as per the notation format described above.
This is the base for resolving the system identifier (system_id) of the notation declaration. Currently this parameter will always be set to an empty string.
System identifier of the external notation declaration.
Public identifier of the external notation declaration.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
This function allows to use parser inside object. All callback functions could be set with xml_set_element_handler() etc and assumed to be methods of object.
<?php class xml { var $parser; function xml() { $this->parser = xml_parser_create(); xml_set_object($this->parser, &$this); xml_set_element_handler($this->parser, "tag_open", "tag_close"); xml_set_character_data_handler($this->parser, "cdata"); } function parse($data) { xml_parse($this->parser, $data); } function tag_open($parser, $tag, $attributes) { var_dump($parser, $tag, $attributes); } function cdata($parser, $cdata) { var_dump($parser, $cdata); } function tag_close($parser, $tag) { var_dump($parser, $tag); } } // end of class xml $xml_parser = new xml(); $xml_parser->parse("<A ID='hallo'>PHP</A>"); ?> |
(PHP 3>= 3.0.6, PHP 4 )
xml_set_processing_instruction_handler -- Set up processing instruction (PI) handlerSets the processing instruction (PI) handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
A processing instruction has the following format:
You can put PHP code into such a tag, but be aware of one limitation: in an XML PI, the PI end tag (?>) can not be quoted, so this character sequence should not appear in the PHP code you embed with PIs in XML documents. If it does, the rest of the PHP code, as well as the "real" PI end tag, will be treated as character data.
The function named by handler must accept
three parameters:
handler ( resource parser, string target, string data)
The first parameter, parser, is a reference to the XML parser calling the handler.
The second parameter, target, contains the PI target.
The third parameter, data, contains the PI data.
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
(PHP 3>= 3.0.6, PHP 4 )
xml_set_unparsed_entity_decl_handler -- Set up unparsed entity declaration handlerSets the unparsed entity declaration handler function for the XML parser parser. handler is a string containing the name of a function that must exist when xml_parse() is called for parser.
This handler will be called if the XML parser encounters an external entity declaration with an NDATA declaration, like the following:
<!ENTITY <parameter>name</parameter> {<parameter>publicId</parameter> | <parameter>systemId</parameter>} NDATA <parameter>notationName</parameter> |
See section 4.2.2 of the XML 1.0 spec for the definition of notation declared external entities.
The function named by handler must accept six
parameters:
handler ( resource parser, string entity_name, string base, string system_id, string public_id, string notation_name)
The first parameter, parser, is a reference to the XML parser calling the handler.
The name of the entity that is about to be defined.
This is the base for resolving the system identifier (systemId) of the external entity. Currently this parameter will always be set to an empty string.
System identifier for the external entity.
Public identifier for the external entity.
Name of the notation of this entity (see xml_set_notation_decl_handler()).
If a handler function is set to an empty string, or FALSE, the handler in question is disabled.
TRUE is returned if the handler is set up, FALSE if parser is not a parser.
Poznßmka: Mφsto nßzvu funkce m∙╛e b²t pou╛ito pole obsahujφcφ odkaz na objekt a nßzev metody.
These functions can be used to write XML-RPC servers and clients. You can find more information about XML-RPC at http://www.xmlrpc.com/, and more documentation on this extension and it's functions at http://xmlrpc-epi.sourceforge.net/.
Varovßnφ |
Toto roz╣φ°enφ je EXPERIMENT┴LN═. Chovßnφ tohoto roz╣φ°enφ, nßzvy funkcφ a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e bez ohlß╣enφ zm∞nit. Berte to v ·vahu a pou╛φvejte tento modul na vlastnφ nebezpeΦφ. |
XML-RPC support in PHP is not enabled by default. You will need to use the --with-xmlrpc[=DIR] configuration option when compiling PHP to enable XML-RPC support. This extension is bundled into PHP as of 4.1.0.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. XML-RPC configuration options
Name | Default | Changeable |
---|---|---|
xmlrpc_errors | "0" | PHP_INI_SYSTEM |
xmlrpc_error_number | "0" | PHP_INI_ALL |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
xmlrpc_get_type -- Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime stringsVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
xmlrpc_server_register_introspection_callback -- Register a PHP function to generate documentationVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
(PHP 4 >= 4.1.0)
xmlrpc_server_register_method -- Register a PHP function to resource method matching method_nameVarovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Varovßnφ |
Tato funkce je EXPERIMENT┴LN═. Chovßnφ tΘto funkce, jejφ nßzev a v╣echno ostatnφ, co je zde zdokumentovßno, se v budoucφch verzφch PHP m∙╛e BEZ OHL┴⌐EN═ zm∞nit. Berte to v ·vahu a pou╛φvejte tuto funkci na vlastnφ nebezpeΦφ. |
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Toto roz╣φ°enφ PHP poskytuje API nezßvislΘ na zpracovateli pro XSLT transformace. V souΦasnosti toto roz╣φ°enφ podporuje pouze knihovnu Sablotron od Ginger Alliance. Plßnovßna je podpora takΘ pro dal╣φ knihovny, jako nap°φklad Xalan nebo libxslt.
XSLT (Extensible Stylesheet Language (XSL) Transformations) je jazyk pro transformaci XML dokument∙ do jin²ch XML dokument∙. Je to standard definovan² The World Wide Web konsorciem (W3C). Imformace o XSLT a souvisejφcφch technologiφch jsou dostupnΘ na http://www.w3.org/TR/xslt.
Poznßmka: Toto roz╣φ°enφ se li╣φ od roz╣φ°enφ Sablotron, kterΘ bylo distribuovßno s PHP verzemi ni╛╣φmi ne╛ 4.1. Od PHP 4.1 je podporovßno pouze toto novΘ roz╣φ°enφ. Pokud pot°ebujete podporu pro star╣φ roz╣φ°enφ, zeptejte se prosφm v PHP konferencφch.
Tato extenze vyu╛φvß Sabloton a expat, kterΘ jsou dostupnΘ na http://www.gingerall.com/, a to jak binßrnφ soubory tak zdrojovΘ k≤dy.
Na UNIXu spus╗te configure s volbami --enable-xslt a --with-xslt-sablot. Sablotron knihovna by m∞la b²t nainstalovßna na n∞jakΘm mφst∞, kde ji vß╣ kompilßtor m∙╛e najφt.
ZaruΦte, aby byly k Sablotronu p°ilinkovßny stejnΘ knihovny, kterΘ jsou p°ilinkovßny k PHP. KonfiguraΦnφ p°epφnaΦe --with-expat-dir=DIR a --with-iconv-dir=DIR jsou zde proto, aby vßm pomohly s jejich specifikacφ. Pokud po╛adujete podporu, v╛dy se zmi≥te o t∞chto direktivßch a o tom, zda jsou na va╣em systΘmu instalovßny jinΘ verze t∞chto knihoven. Jednodu╣e °eΦeno, poskytn∞te v╣echna Φφsla verzφ.
V²straha |
ZaruΦte, aby knihovna Sablot byla p°ilinkovßna k -lstdc++, jinak se konfigurace nepoda°φ nebo se PHP nespustφ nebo nezavede. |
Podpora pro JavaScript E-XSLT: Pokud jste Sablotron zkompilovali s podporou pro JavaScript, musφte zadat volbu --with-sablot-js=DIR.
Poznßmka pro u╛ivatele Win32: Abyste mohli tento modul pou╛φvat pod Windows, musφte zkopφrovat n∞jakΘ soubory z adresß°e DLL disribuΦnφho archivu PHP/Win32 do adresß°e SYSTEM32 va╣ich Windows. (Nap°.: C:\WINNT\SYSTEM32 nebo C:\WINDOWS\SYSTEM32). Pro PHP <= 4.2.0 zkopφrujte sablot.dll a expat.dll. Pro PHP >= 4.2.1 zkopφrujte sablot.dll, expat.dll a iconv.dll.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Zru╣it ve╣kerΘ logovßnφ a hlß╣enφ chyb. Jednß se o obecnou volbu pro v╣echny nßstroje, kterΘ mohou b²t p°idßny v budoucnu.
P°ikßzat Sablotronu, aby parsoval ve°ejnΘ entity. Ve v²chozφm nastavenφ je tato volba vypnuta.
Nep°idßvat meta znaΦku "Content-Type" do HTML v²stupu. V²chozφ nastavenφ je urΦeno b∞hem kompilace Sablotronu.
PotlaΦit odstra≥ovßnφ bφl²ch znak∙ (pouze u datov²ch soubor∙).
Pova╛ovat nerozpoznanΘ dokumenty (funkce document()) za nesmrtelnΘ.
Vrßtit chybov² k≤d, pro scheme handlers.
Tato funkce vracφ handle novΘho XSL procesoru. Tento handle je pot°eba ve v╣ech nßsledn²ch volßnφch XSL funkcφ.
Vracφ Φφslo souΦasnΘ chyby danΘho XSL procesoru. Pokud nedostane handle, vracφ Φφslo poslednφ chyby bez ohledu na jejφ v²skyt.
Vracφ text souΦasnΘ chyby danΘho XSL procesoru. Pokud nedostane handle, vracφ text poslednφ chyby bez ohledu na jejφ v²skyt.
xslt_process() p°ijφmß jako prvnφ argument °et∞zec obsahujφcφ XSLT stylesheet, jako druh² argument °et∞zec obsahujφcφ XML data, kterß chcete transformovat, a jako t°etφ argument °et∞zec obsahujφcφcφ v²sledky transformace. xslt_process() vracφ TRUE p°i ·sp∞chu a FALSE p°i selhßnφ. ╚φslo a text chyby p°φpadn∞ vzniklΘ p°i transformaci m∙╛ete zφskat pomocφ xslt_errno() a xslt_error() funkcφ.
P°φklad 1. Pou╛itφ xslt_process() k transformaci t°φ °et∞zc∙
|
Sets the base URI for all XSLT transformations, the base URI is used with Xpath instructions to resolve document() and other commands which access external resources. It is also used to resolve URIs for the <xsl:include> and <xsl:import> elements.
As of 4.3, the default base URI is the directory of the executing script. In effect, it is the directory name value of the __FILE__ constant. Prior to 4.3, the default base URI was less predictable.
Poznßmka: Please note that file:// is needed in front of path if you use Windows.
Set the output encoding for the XSLT transformations. When using the Sablotron backend this option is only available when you compile Sablotron with encoding support.
Set an error handler function for the XSLT processor given by xh, this function will be called whenever an error occurs in the XSLT transformation (this function is also called for notices).
A reference to the XSLT parser.
This parameter is either a boolean value which toggles logging on and off, or a string containing the logfile in which log errors too.
This function allows you to set the file in which you want XSLT log messages to, XSLT log messages are different than error messages, in that log messages are not actually error messages but rather messages related to the state of the XSLT processor. They are useful for debugging XSLT, when something goes wrong.
By default logging is disabled, in order to enable logging you must first call xslt_set_log() with a boolean parameter which enables logging, then if you want to set the log file to debug to, you must then pass it a string containing the filename:
Poznßmka: Please note that file:// is needed in front of path if you use Windows.
UrΦit SAX handlery pro handle urΦen² v xh.
(PHP 4 >= 4.0.6)
xslt_set_sax_handlers -- Set the SAX handlers to be called when the XML document gets processed
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
Set Scheme handlers on the resource handle given by xh. Scheme handlers should be an array with the format (all elements are optional):
This extension offers a PHP interface to the YAZ toolkit that implements the Z39.50 Protocol for Information Retrieval. With this extension you can easily implement a Z39.50 origin (client) that searches or scans Z39.50 targets (servers) in parallel.
The module hides most of the complexity of Z39.50 so it should be fairly easy to use. It supports persistent stateless connections very similar to those offered by the various RDB APIs that are available for PHP. This means that sessions are stateless but shared among users, thus saving the connect and initialize phase steps in most cases.
YAZ is available at http://www.indexdata.dk/yaz/. You can find news information, example scripts, etc. for this extension at http://www.indexdata.dk/phpyaz/.
Compile YAZ (ANSI/NISO Z39.50 support) and install it. Build PHP with your favourite modules and add option --with-yaz[=DIR]. Your task is roughly the following:
If you are using YAZ as a shared extension, add (or uncomment) the following line in php.ini on Unix:
extension=php_yaz.so |
extension=php_yaz.dll |
On Windows, php_yaz.dll depend on yaz.dll. You'll find yaz.dll in sub directory dlls in the Win32 zip archive. Copy yaz.dll to a directory in your PATH environment (c:\winnt\system32 or c:\windows\system32).
Varovßnφ |
Roz╣φ°enφ IMAP nem∙╛e b²t pou╛φvßno zßrove≥ s roz╣φ°enφm recode nebo YAZ. Je to kv∙li faktu, ╛e tato roz╣φ°enφ sdφlejφ stejn² internφ symbol. |
Poznßmka: The above problem is solved in version 2.0 of YAZ.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
Tabulka 1. YAZ configuration options
Name | Default | Changeable |
---|---|---|
yaz.max_links | "100" | PHP_INI_ALL |
yaz.log_file | "" | PHP_INI_ALL |
PHP/YAZ keeps track of connections with targets (Z-Associations). A resource represents a connection to a target.
The script below demonstrates the parallel searching feature of the API. When invoked with no arguments it prints a query form; else (arguments are supplied) it searches the targets as given in array host.
P°φklad 2. Parallel searching using Yaz
|
Returns additional error message for target (last request), identified by parameter id. An empty string is returned if the last operation was successful or if no additional information was provided by the target.
See also yaz_error().
This function configures the CCL query parser for a target with definitions of access points (CCL qualifiers) and their mapping to RPN. To map a specific CCL query to RPN afterwards call the yaz_ccl_parse() function. Each index of the array config is the name of a CCL field and the corresponding value holds a string that specifies a mapping to RPN. The mapping is a sequence of attribute-type, attribute-value pairs. Attribute-type and attribute-value is separated by an equal sign (=). Each pair is separated by white space.
P°φklad 1. CCL configuration In the example below, the CCL parser is configured to support three CCL fields: ti, au and isbn. Each field is mapped to their BIB-1 equivalent. It is assumed that variable $id is the connection ID.
|
This function invokes a CCL parser. It converts a given CCL FIND query to an RPN query which may be passed to the yaz_search() function to perform a search. To define a set of valid CCL fields call yaz_ccl_conf() prior to this function. If the supplied query was successfully converted to RPN, this function returns TRUE, and the index rpn of the supplied array result holds a valid RPN query. If the query could not be converted (because of invalid syntax, unknown field, etc.) this function returns FALSE and three indexes are set in the resulting array to indicate the cause of failure: errorcode CCL error code (integer), errorstring CCL error string, and errorpos approximate position in query of failure (integer is character position).
P°φklad 1. CCL Parsing We will try to search using CCL. In the example below, $ccl is a CCL query.
|
Closes the connection given by parameter id. The id is a connection resource as returned by a previous call to yaz_connect().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function returns a connection resource on success, zero on failure.
yaz_connect() prepares for a connection to a Z39.50 target. The zurl argument takes the form host[:port][/database]. If port is omitted 210 is used. If database is omitted Default is used. This function is non-blocking and does not attempt to establish a socket - it merely prepares a connect to be performed later when yaz_wait() is called.
If the second argument, options, is given as a string it is treated as the Z39.50 V2 authentication string (OpenAuth).
If options is given as an array the contents of the array serves as options. Note that array options are only supported for PHP 4.1.0 and later.
yaz_connect() options
Username for authentication.
Group for authentication.
Password for authentication.
Cookie for session (YAZ proxy).
Proxy for connection (YAZ proxy).
A boolean. If TRUE the connection is persistent; If FALSE the connection is not persistent. By default connections are persistent.
A boolean. If TRUE piggyback is enabled for searches; If FALSE piggyback is disabled. By default piggyback is enabled. Enabling piggyback is more efficient and usually saves a network-round-trip for first time fetches of records. However, a few Z39.50 targets do not support piggyback or they ignore element set names. For those, piggyback should be disabled.
A string that specifies character set to be used in Z39.50 language and character set negotiation. Use strings such as: ISO-8859-1, UTF-8, UTF-16.
Most Z39.50 targets do not support this feature (and thus, this is ignored). Many targets use the ISO-8859-1 encoding for queries and messages. MARC21/USMARC records are not affected by this setting.
Poznßmka: The use of a proxy often improves performance. A Z39.50 proxy is part of the free YAZ++ package.
This function specifies one or more databases to be used in search, retrieval, etc. - overriding databases specified in call to yaz_connect(). Multiple databases are separated by a plus sign +.
This function allows you to use different sets of databases within a session.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function sets the element set name for retrieval. Call this function before yaz_search() or yaz_present() to specify the element set name for records to be retrieved. Most servers support F (for full records) and B (for brief records).
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Returns an errornumber for the target (last request) identified by id. The error code is either a Z39.50 diagnostic code (usually a Bib-1 diagnostic) or a client side error code which is generated by PHP/YAZ itself, such as "Connect failed", "Init Rejected", etc.
yaz_errno() should be called after network activity for each target - (after yaz_wait() returns) to determine the success or failure of the last operation (e.g. search). To get a text description of the error, call yaz_error().
Returns an error text message for target (last request), identified by parameter id. An empty string is returned if the last operation was successful.
yaz_error() returns an English text message corresponding to the last error number as returned by yaz_errno().
Returns the value of the option specified with name. If an option is not set, an empty string is returned.
See the description of yaz_set_option() for available options.
This function prepares for an Extended Services request using the Profile for the Use of Z39.50 Item Order Extended Service to Transport ILL (Profile/1). See this and the specification. The args parameter must be a hash array with information about the Item Order request to be sent. The key of the hash is the name of the corresponding ASN.1 tag path. For example, the ISBN below the Item-ID has the key item-id,ISBN.
The ILL-Request parameters are:
protocol-version-num
transaction-id,initial-requester-id,person-or-institution-symbol,person
transaction-id,initial-requester-id,person-or-institution-symbol,institution
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
transaction-id,transaction-group-qualifier
transaction-id,transaction-qualifier
transaction-id,sub-transaction-qualifier
service-date-time,this,date
service-date-time,this,time
service-date-time,original,date
service-date-time,original,time
requester-id,person-or-institution-symbol,person
requester-id,person-or-institution-symbol,institution
requester-id,name-of-person-or-institution,name-of-person
requester-id,name-of-person-or-institution,name-of-institution
responder-id,person-or-institution-symbol,person
responder-id,person-or-institution-symbol,institution
responder-id,name-of-person-or-institution,name-of-person
responder-id,name-of-person-or-institution,name-of-institution
transaction-type
delivery-address,postal-address,name-of-person-or-institution,name-of-person
delivery-address,postal-address,name-of-person-or-institution,name-of-institution
delivery-address,postal-address,extended-postal-delivery-address
delivery-address,postal-address,street-and-number
delivery-address,postal-address,post-office-box
delivery-address,postal-address,city
delivery-address,postal-address,region
delivery-address,postal-address,country
delivery-address,postal-address,postal-code
delivery-address,electronic-address,telecom-service-identifier
delivery-address,electronic-address,telecom-service-addreess
billing-address,postal-address,name-of-person-or-institution,name-of-person
billing-address,postal-address,name-of-person-or-institution,name-of-institution
billing-address,postal-address,extended-postal-delivery-address
billing-address,postal-address,street-and-number
billing-address,postal-address,post-office-box
billing-address,postal-address,city
billing-address,postal-address,region
billing-address,postal-address,country
billing-address,postal-address,postal-code
billing-address,electronic-address,telecom-service-identifier
billing-address,electronic-address,telecom-service-addreess
ill-service-type
requester-optional-messages,can-send-RECEIVED
requester-optional-messages,can-send-RETURNED
requester-optional-messages,requester-SHIPPED
requester-optional-messages,requester-CHECKED-IN
search-type,level-of-service
search-type,need-before-date
search-type,expiry-date
search-type,expiry-flag
place-on-hold
client-id,client-name
client-id,client-status
client-id,client-identifier
item-id,item-type
item-id,call-number
item-id,author
item-id,title
item-id,sub-title
item-id,sponsoring-body
item-id,place-of-publication
item-id,publisher
item-id,series-title-number
item-id,volume-issue
item-id,edition
item-id,publication-date
item-id,publication-date-of-component
item-id,author-of-article
item-id,title-of-article
item-id,pagination
item-id,ISBN
item-id,ISSN
item-id,additional-no-letters
item-id,verification-reference-source
copyright-complicance
retry-flag
forward-flag
requester-note
forward-note
There are also a few parameters that are part of the Extended Services Request package and the ItemOrder package:
package-name
user-id
contact-name
contact-phone
contact-email
itemorder-item
This function prepares for retrieval of records after a successful search. The yaz_range() should be called prior to this function to specify the range of records to be retrieved.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
This function should be called before either yaz_search() or yaz_present() to specify a range of records to be retrieved. The parameter start specifies the position of the first record to be retrieved and parameter number is the number of records. Records in a result set are numbered 1, 2, ... $hits where $hits is the count returned by yaz_hits().
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Returns the record at position pos or an empty string if no record exists at the given position.
The yaz_record() function inspects a record in the current result set at the position specified by parameter pos. If no database record exists at the given position an empty string is returned. The type specifies the form of the returned record.
If type is "string" the record is returned in a string representation suitable for printing (for XML and SUTRS). If type is "array" the record is returned as an array representation (for structured records). If type is "raw" the record is returned in its original raw form.
Records in a result set are numbered 1, 2, ... $hits where $hits is the count returned by yaz_hits().
yaz_scan_result() returns terms and associated information as received from the target in the last performed yaz_scan(). This function returns an array (0..n-1) where n is the number of terms returned. Each value is a pair where the first item is the term, and the second item is the result-count. If the optional parameter result is given it will be modified to hold additional information taken from the Scan Response: number (number of entries returned), stepsize (Step-size), position (position of term), status (Scan Status).
This function prepares for a Z39.50 Scan Request, where parameter id specifies connection. Starting term point for the scan is given by startterm. The form in which the starting term is specified is given by parameter type. Currently only type rpn is supported. The optional parameter flags specifies additional information to control the behaviour of the scan request. Three indexes are currently read from the flags: number (number of terms requested), position (preferred position of term) and stepSize (preferred step size). To actually transfer the Scan Request to the target and receive the Scan Response, yaz_wait() must be called. Upon completion of yaz_wait() call yaz_error() and yaz_scan_result() to handle the response.
The syntax of startterm is similar to the RPN query as described in yaz_search(). The startterm consists of zero or more @attr-operator specifications, then followed by exactly one token.
P°φklad 1. PHP function that scans titles
|
The schema must be specified as an OID (Object Identifier) in a raw dot-notation (like 1.2.840.10003.13.4) or as one of the known registered schemas: GILS-schema, Holdings, Zthes, ... This function should be called before yaz_search() or yaz_present().
yaz_search() prepares for a search on the connection given by parameter id. The parameter type represents the query type - only "rpn" is supported now in which case the third argument specifies a Type-1 query in prefix query notation. Like yaz_connect() this function is non-blocking and only prepares for a search to be executed later when yaz_wait() is called.
The RPN query is a textual representation of the Type-1 query as defined by the Z39.50 standard. However, in the text representation as used by YAZ a prefix notation is used, that is the operater precedes the operands. The query string is a sequence of tokens where white space is ignored unless surrounded by double quotes. Tokens beginning with an at-character (@) are considered operators, otherwise they are treated as search terms.
Tabulka 1. RPN Operators
Construct | Description |
---|---|
@and query1 query2 | intersection of query1 and query2 |
@or query1 query2 | union of query1 and query2 |
@not query1 query2 | query1 and not query2 |
@set name | result set reference |
@attrset set query | specifies attribute-set for query. This construction is only allowed once - in the beginning of the whole query |
@attr [set] type=value query | applies attribute to query. The type and value are integers specifying the attribute-type and attribute-value respectively. The set, if given, specifies the attribute-set. |
P°φklad 1. Query Examples You can search for simple terms, like this
The Query
This query applies two attributes for the same phrase.
This query
Another, more complex, one:
|
You can find information about attributes at the Z39.50 Maintenance Agency site.
Poznßmka: If you would like to use a more friendly notation, use the CCL parser - functions yaz_ccl_conf() and yaz_ccl_parse().
Sets option name to value.
Tabulka 1. PYP/YAZ Connection Options
Name | Description |
---|---|
implementationName | implementation name of target |
implementationVersion | implementation version of target |
implementationId | implementation ID of target |
schema | schema for retrieval. By default, no schema is used. Setting this option is equivalent to using function yaz_schema() |
preferredRecordSyntax | record syntax for retrieval. By default, no syntax is used. Setting this option is equivalent to using function yaz_syntax() |
start | offset for first record to be retrieved via yaz_search() or yaz_present(). Records are numbered from zero and upwards. Setting this option in combination with option count has the same effect as calling yaz_range() except that records are numbered from 1 in yaz_range() |
count | maximum number of records to be retrieved via yaz_search() or yaz_present(). |
elementSetName | element-set-name for retrieval. Setting this option is equivalent to calling yaz_element(). |
This function sets sorting criteria and enables Z39.50 Sort. Call this function before yaz_search(). Using this function alone does not have any effect. When used in conjunction with yaz_search(), a Z39.50 Sort will be sent after a search response has been received and before any records are retrieved with Z39.50 Present (yaz_present(). The parameter criteria takes the form
field1 flags1 field2 flags2 ...
where field1 specifies the primary attributes for sort, field2 seconds, etc.. The field specifies either a numerical attribute combinations consisting of type=value pairs separated by comma (e.g. 1=4,2=1) ; or the field may specify a plain string criteria (e.g. title. The flags is a sequence of the following characters which may not be separated by any white space.
Sort Flags
Sort ascending
Sort descending
Case insensitive sorting
Case sensitive sorting
The syntax must be specified as an OID (Object Identifier) in a raw dot-notation (like 1.2.840.10003.5.10) or as one of the known registered record syntaxes (sutrs, usmarc, grs1, xml, etc.). This function should be called before yaz_search() or yaz_present().
This function carries out networked (blocked) activity for outstanding requests which have been prepared by the functions yaz_connect(), yaz_search(), yaz_present(), yaz_scan() and yaz_itemorder(). yaz_wait() returns when all targets have either completed all requests or aborted (in case of errors).
If the options array is given that holds options that change the behaviour of yaz_wait().
Sets timeout in seconds. If a target has not responded within the timeout it is considered dead and yaz_wait() returns. The default value for timeout is 15 seconds.
NIS (d°φve Yellow Pages) umo╛≥uje sφ╗ovou sprßvu d∙le╛it²ch administrativnφch soubor∙ (nap°. soubory s hesly). Vφce informacφ viz NIS man strßnka a The Linux NIS(YP)/NYS/NIS+ HOWTO. Existuje takΘ kniha Managing NFS and NIS od Hala Sterna.
Poznßmka: Toto roz╣φ°enφ nenφ k dispozici na platformßch Windows.
None besides functions from standard Unix libraries which are always available (either libc or libnsl, configure will detect which one to use).
Pokud chcete tyto funkce zprovoznit, musφte PHP zkonfigurovat s volbou --enable-yp (PHP 4).
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
Varovßnφ |
Tato funkce je╣t∞ nenφ zdokumentovßna, k dispozici je pouze seznam argument∙. |
yp_cat() returns all map entries as an array with the maps key values as array indices and the maps entries as array data.
yp_err_string() returns the error message associated with the previous operation. Useful to indicate what exactly went wrong.
Viz takΘ yp_errno().
yp_errno() returns the error code of the previous operation.
Possible errors are:
1 args to function are bad |
2 RPC failure - domain has been unbound |
3 can't bind to server on this domain |
4 no such map in server's domain |
5 no such key in map |
6 internal yp server or client error |
7 resource allocation failure |
8 no more records in map database |
9 can't communicate with portmapper |
10 can't communicate with ypbind |
11 can't communicate with ypserv |
12 local domain name not set |
13 yp database is bad |
14 yp version mismatch |
15 access violation |
16 database busy |
Viz takΘ yp_err_string().
yp_first() vracφ prvnφ klφΦ/hodnota pßr danΘ mapy v danΘ domΘn∞, nebo FALSE.
Viz takΘ yp-get-default-domain()
yp_get_default_domain() vracφ defaultnφ domΘnu uzlu nebo FALSE. Dß se pou╛φvat jako argument domΘny v nßsledn²ch volßnφch NIS.
NIS domΘna se dß popsat jako skupina map NIS. Ka╛d² server, kter² pot°ebuje vyhledat informace se p°ipojφ k urΦitΘ domΘn∞. Detailn∞j╣φ informace viz dokumentace zmφn∞nß v ·vodu.
yp_master() vracφ nßzev master NIS serveru urΦitΘ mapy.
Viz takΘ yp-get-default-domain().
yp_match() vracφ hodnotu asociovanou v danΘ map∞ s p°edan²m klφΦem nebo FALSE. KlφΦ musφ b²t dßn p°esn∞.
V tomto p°φpad∞ by to mohlo b²t: joe:##joe:11111:100:Joe User:/home/j/joe:/usr/local/bin/bash
Viz takΘ yp-get-default-domain()
yp_next() vracφ dal╣φ klφΦ/hodnota pßr v map∞ po danΘm klφΦi, nebo FALSE.
Viz takΘ yp-get-default-domain().
yp_order() vracφ po°adovΘ Φφslo mapy nebo FALSE.
Viz takΘ: yp-get-default-domain().
This module enables you to transparently read ZIP compressed archives and the files inside them.
This module uses the functions of the ZZIPlib library by Guido Draheim. You need ZZIPlib version >= 0.10.6.
Note that ZZIPlib only provides a subset of functions provided in a full implementation of the ZIP compression algorithm and can only read ZIP file archives. A normal ZIP utility is needed to create the ZIP file archives read by this library.
Zip support in PHP is not enabled by default. You will need to use the --with-zip[=DIR] configuration option when compiling PHP to enable zip support.
Poznßmka: Zip support before PHP 4.1.0 is experimental. This section reflects the Zip extension as it exists in PHP 4.1.0 and later.
This example opens a ZIP file archive, reads each file in the archive and prints out its contents. The test2.zip archive used in this example is one of the test archives in the ZZIPlib source distribution.
P°φklad 1. Zip Usage Example
|
Closes a zip file archive. The parameter zip must be a zip archive previously opened by zip_open().
This function has no return value.
See also zip_open() and zip_read().
Closes a directory entry specified by zip_entry. The parameter zip_entry must be a valid directory entry opened by zip_entry_open().
This function has no return value.
See also zip_entry_open() and zip_entry_read().
Returns the compressed size of the directory entry specified by zip_entry. The parameter zip_entry is a valid directory entry returned by zip_read().
See also zip_open() and zip_read().
(4.1.0 - 4.3.2 only)
zip_entry_compressionmethod -- Retrieve the Compression Method of a Directory EntryReturns the compression method of the directory entry specified by zip_entry. The parameter zip_entry is a valid directory entry returned by zip_read().
See also zip_open() and zip_read().
Returns the actual size of the directory entry specified by zip_entry. The parameter zip_entry is a valid directory entry returned by zip_read().
See also zip_open() and zip_read().
Returns the name of the directory entry specified by zip_entry. The parameter zip_entry is a valid directory entry returned by zip_read().
See also zip_open() and zip_read().
Opens a directory entry in a zip file for reading. The parameter zip is a valid resource handle returned by zip_open(). The parameter zip_entry is a directory entry resource returned by zip_read(). The optional parameter mode can be any of the modes specified in the documentation for fopen().
Poznßmka: Currently, mode is ignored and is always "rb". This is due to the fact that zip support in PHP is read only access. Please see fopen() for an explanation of various modes, including "rb".
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
Poznßmka: Unlike fopen() and other similar functions, the return value of zip_entry_open() only indicates the result of the operation and is not needed for reading or closing the directory entry.
See also zip_entry_read() and zip_entry_close().
Reads up to length bytes from an open directory entry. If length is not specified, then zip_entry_read() will attempt to read 1024 bytes. The parameter zip_entry is a valid directory entry returned by zip_read().
Poznßmka: The length parameter should be the uncompressed length you wish to read.
Returns the data read, or FALSE if the end of the file is reached.
See also zip_entry_open(), zip_entry_close() and zip_entry_filesize().
Opens a new zip archive for reading. The filename parameter is the filename of the zip archive to open.
Returns a resource handle for later use with zip_read() and zip_close() or returns FALSE if filename does not exist.
See also zip_read() and zip_close().
Reads the next entry in a zip file archive. The parameter zip must be a zip archive previously opened by zip_open().
Returns a directory entry resource for later use with the zip_entry_...() functions or FALSE if there's no more entries to read.
See also zip_open(), zip_close(), zip_entry_open(), and zip_entry_read().
This module enables you to transparently read and write gzip (.gz) compressed files, through versions of most of the filesystem functions which work with gzip-compressed files (and uncompressed files, too, but not with sockets).
Poznßmka: Version 4.0.4 introduced a fopen-wrapper for .gz-files, so that you can use a special 'zlib:' URL to access compressed files transparently using the normal f*() file access functions if you prepend the filename or path with a 'zlib:' prefix when calling fopen().
In version 4.3.0, this special prefix has been changed to 'zlib://' to prevent ambiguities with filenames containing ':'.
This feature requires a C runtime library that provides the fopencookie() function. To my current knowledge the GNU libc is the only library that provides this feature.
This module uses the functions of zlib by Jean-loup Gailly and Mark Adler. You have to use a zlib version >= 1.0.9 with this module.
Zlib support in PHP is not enabled by default. You will need to configure PHP --with-zlib[=DIR]
Verze PHP pro Windows mß vestav∞nou podporu pro toto roz╣φ°enφ. K pou╛itφ t∞chto funkcφ nenφ t°eba naΦφtat ╛ßdnß dal╣φ roz╣φ°enφ.
Poznßmka: Builtin support for zlib on Windows is available with PHP 4.3.0.
Chovßnφ t∞chto funkcφ je ovlivn∞no nastavenφm parametr∙ v php.ini.
The zlib extension offers the option to transparently compress your pages on-the-fly, if the requesting browser supports this. Therefore there are three options in the configuration file php.ini.
Tabulka 1. Zlib Configuration Options
Name | Default | Changeable |
---|---|---|
zlib.output_compression | "Off" | PHP_INI_ALL |
zlib.output_compression_level | "-1" | PHP_INI_ALL |
zlib.output_handler | "" | PHP_INI_ALL |
Zde je struΦnΘ vysv∞tlenφ konfiguraΦnφch direktiv.
Whether to transparently compress pages. If this option is set to "On" in php.ini or the Apache configuration, pages are compressed if the browser sends an "Accept-Encoding: gzip" or "deflate" header. "Content-Encoding: gzip" (respectively "deflate") and "Vary: Accept-Encoding" headers are added to the output.
You can use ini_set() to disable this in your script if the headers aren't already sent. If you output a "Content-Type: image/" header the compression is disabled, too (in order to circumvent a Netscape bug). You can reenable it, if you add "ini_set('zlib.output_compression', 'On')" after the header call which added the image content-type.
This option also accepts integer values instead of boolean "On"/"Off", using this you can set the output buffer size (default is 4KB).
Poznßmka: output_handler must be empty if this is set 'On' ! Instead you must use zlib.output_handler.
Compression level used for transparent output compression.
You cannot specify additional output handlers if zlib.output_compression is activated here. This setting does the same as output_handler but in a different order.
Tyto konstanty jsou definovßny tφmto roz╣φ°enφm a budou k dispozici pouze tehdy, bylo-li roz╣φ°enφ zkompilovßno spoleΦn∞ s PHP nebo dynamicky zavedeno za b∞hu.
This example opens a temporary file and writes a test string to it, then it prints out the content of this file twice.
P°φklad 1. Small Zlib Example
|
The gz-file pointed to by zp is closed.
Vracφ TRUE p°i ·sp∞chu, FALSE p°i selhßnφ.
The gz-file pointer must be valid, and must point to a file successfully opened by gzopen().
This function returns a compressed version of the input data using the ZLIB data format, or FALSE if an error is encountered. The optional parameter level can be given as 0 for no compression up to 9 for maximum compression.
For details on the ZLIB compression algorithm see the document "ZLIB Compressed Data Format Specification version 3.3" (RFC 1950).
Poznßmka: This is not the same as gzip compression, which includes some header data. See gzencode() for gzip compression.
See also gzdeflate(), gzinflate(), gzuncompress(), gzencode().
This function returns a compressed version of the input data using the DEFLATE data format, or FALSE if an error is encountered. The optional parameter level can be given as 0 for no compression up to 9 for maximum compression.
For details on the DEFLATE compression algorithm see the document "DEFLATE Compressed Data Format Specification version 1.3" (RFC 1951).
See also gzinflate(), gzcompress(), gzuncompress(), gzencode().
This function returns a compressed version of the input data compatible with the output of the gzip program, or FALSE if an error is encountered. The optional parameter level can be given as 0 for no compression up to 9 for maximum compression, if not given the default compression level will be the default compression level of the zlib library.
You can also give FORCE_GZIP (the default) or FORCE_DEFLATE as optional third parameter encoding_mode. If you use FORCE_DEFLATE, you get a standard zlib deflated string (inclusive zlib headers) after the gzip file header but without the trailing crc32 checksum.
Poznßmka: level was added in PHP 4.2, before PHP 4.2 gzencode() only had the data and (optional) encoding_mode parameters..
The resulting data contains the appropriate headers and data structure to make a standard .gz file, e.g.:
For more information on the GZIP file format, see the document: GZIP file format specification version 4.3 (RFC 1952).
See also gzcompress(). gzuncompress(), gzdeflate(), gzinflate().
Returns TRUE if the gz-file pointer is at EOF or an error occurs; otherwise returns FALSE.
The gz-file pointer must be valid, and must point to a file successfully opened by gzopen().
Identical to readgzfile(), except that gzfile() returns the file in an array.
You can use the optional second parameter and set it to "1", if you want to search for the file in the include_path, too.
See also readgzfile(), and gzopen().
Returns a string containing a single (uncompressed) character read from the file pointed to by zp. Returns FALSE on EOF (unlike gzeof()).
The gz-file pointer must be valid, and must point to a file successfully opened by gzopen().
Returns a (uncompressed) string of up to length - 1 bytes read from the file pointed to by fp. Reading ends when length - 1 bytes have been read, on a newline, or on EOF (whichever comes first).
If an error occurs, returns FALSE.
The file pointer must be valid, and must point to a file successfully opened by gzopen().
Identical to gzgets(), except that gzgetss() attempts to strip any HTML and PHP tags from the text it reads.
You can use the optional third parameter to specify tags which should not be stripped.
Poznßmka: Allowable_tags was added in PHP 3.0.13, PHP 4.0b3.
See also gzgets(), gzopen(), and strip_tags().
This function takes data compressed by gzdeflate() and returns the original uncompressed data or FALSE on error. The function will return an error if the uncompressed data is more than 32768 times the length of the compressed input data or more than the optional parameter length.
See also gzcompress(). gzuncompress(), gzdeflate(), gzencode().
Opens a gzip (.gz) file for reading or writing. The mode parameter is as in fopen() ("rb" or "wb") but can also include a compression level ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman only compression as in "wb1h". (See the description of deflateInit2 in zlib.h for more information about the strategy parameter.)
gzopen() can be used to read a file which is not in gzip format; in this case gzread() will directly read from the file without decompression.
gzopen() returns a file pointer to the file opened, after that, everything you read from this file descriptor will be transparently decompressed and what you write gets compressed.
If the open fails, the function returns FALSE.
You can use the optional third parameter and set it to "1", if you want to search for the file in the include_path, too.
See also gzclose().
Reads to EOF on the given gz-file pointer and writes the (uncompressed) results to standard output.
If an error occurs, returns FALSE.
The file pointer must be valid, and must point to a file successfully opened by gzopen().
gzread() reads up to length bytes from the gz-file pointer referenced by zp. Reading stops when length (uncompressed) bytes have been read or EOF is reached, whichever comes first.
See also gzwrite(), gzopen(), gzgets(), gzgetss(), gzfile(), and gzpassthru().
Sets the file position indicator for zp to the beginning of the file stream.
If an error occurs, returns 0.
The file pointer must be valid, and must point to a file successfully opened by gzopen().
Sets the file position indicator for the file referenced by zp to offset bytes into the file stream. Equivalent to calling (in C) gzseek(zp, offset, SEEK_SET).
If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek then compresses a sequence of zeroes up to the new starting position.
Upon success, returns 0; otherwise, returns -1. Note that seeking past EOF is not considered an error.
See also gztell() and gzrewind().
Returns the position of the file pointer referenced by zp; i.e., its offset into the file stream.
If an error occurs, returns FALSE.
The file pointer must be valid, and must point to a file successfully opened by gzopen().
See also gzopen(), gzseek() and gzrewind().
This function takes data compressed by gzcompress() and returns the original uncompressed data or FALSE on error. The function will return an error if the uncompressed data is more than 32768 times the length of the compressed input data or more than the optional parameter length.
See also gzdeflate(), gzinflate(), gzcompress(), gzencode().
gzwrite() writes the contents of string to the gz-file stream pointed to by zp. If the length argument is given, writing will stop after length (uncompressed) bytes have been written or the end of string is reached, whichever comes first.
gzwrite() returns the number of (uncompressed) bytes written to the gz-file stream pointed to by zp.
Note that if the length argument is given, then the magic_quotes_runtime configuration option will be ignored and no slashes will be stripped from string.
Reads a file, decompresses it and writes it to standard output.
readgzfile() can be used to read a file which is not in gzip format; in this case readgzfile() will directly read from the file without decompression.
Returns the number of (uncompressed) bytes read from the file. If an error occurs, FALSE is returned and unless the function was called as @readgzfile, an error message is printed.
The file filename will be opened from the filesystem and its contents written to standard output.
You can use the optional second parameter and set it to "1", if you want to search for the file in the include_path, too.
See also gzpassthru(), gzfile(), and gzopen().
Returns the coding type used for output compression. Possible return values are gzip, deflate, or FALSE
See also the zlib.output_compression directive.
Sometimes, PHP "as is" simply isn't enough. Although these cases are rare for the average user, professional applications will soon lead PHP to the edge of its capabilities, in terms of either speed or functionality. New functionality cannot always be implemented natively due to language restrictions and inconveniences that arise when having to carry around a huge library of default code appended to every single script, so another method needs to be found for overcoming these eventual lacks in PHP.
As soon as this point is reached, it's time to touch the heart of PHP and take a look at its core, the C code that makes PHP go.
"Extending PHP" is easier said than done. PHP has evolved to a full-fledged tool consisting of a few megabytes of source code, and to hack a system like this quite a few things have to be learned and considered. When structuring this chapter, we finally decided on the "learn by doing" approach. This is not the most scientific and professional approach, but the method that's the most fun and gives the best end results. In the following sections, you'll learn quickly how to get the most basic extensions to work almost instantly. After that, you'll learn about Zend's advanced API functionality. The alternative would have been to try to impart the functionality, design, tips, tricks, etc. as a whole, all at once, thus giving a complete look at the big picture before doing anything practical. Although this is the "better" method, as no dirty hacks have to be made, it can be very frustrating as well as energy- and time-consuming, which is why we've decided on the direct approach.
Note that even though this chapter tries to impart as much knowledge as possible about the inner workings of PHP, it's impossible to really give a complete guide to extending PHP that works 100% of the time in all cases. PHP is such a huge and complex package that its inner workings can only be understood if you make yourself familiar with it by practicing, so we encourage you to work with the source.
The name Zend refers to the language engine, PHP's core. The term PHP refers to the complete system as it appears from the outside. This might sound a bit confusing at first, but it's not that complicated (see 24-1). To implement a Web script interpreter, you need three parts:
The interpreter part analyzes the input code, translates it, and executes it.
The functionality part implements the functionality of the language (its functions, etc.).
The interface part talks to the Web server, etc.
The following sections discuss where PHP can be extended and how it's done.
As shown in 24-1 above, PHP can be extended primarily at three points: external modules, built-in modules, and the Zend engine. The following sections discuss these options.
External modules can be loaded at script runtime using the function dl(). This function loads a shared object from disk and makes its functionality available to the script to which it's being bound. After the script is terminated, the external module is discarded from memory. This method has both advantages and disadvantages, as described in the following table:
Advantages | Disadvantages |
External modules don't require recompiling of PHP. | The shared objects need to be loaded every time a script is being executed (every hit), which is very slow. |
The size of PHP remains small by "outsourcing" certain functionality. | External additional files clutter up the disk. |
Every script that wants to use an external module's functionality has to specifically include a call to dl(), or the extension tag in php.ini needs to be modified (which is not always a suitable solution). |
Third parties might consider using the extension tag in php.ini to create additional external modules to PHP. These external modules are completely detached from the main package, which is a very handy feature in commercial environments. Commercial distributors can simply ship disks or archives containing only their additional modules, without the need to create fixed and solid PHP binaries that don't allow other modules to be bound to them.
Built-in modules are compiled directly into PHP and carried around with every PHP process; their functionality is instantly available to every script that's being run. Like external modules, built-in modules have advantages and disadvantages, as described in the following table:
Built-in modules are best when you have a solid library of functions that remains relatively unchanged, requires better than poor-to-average performance, or is used frequently by many scripts on your site. The need to recompile PHP is quickly compensated by the benefit in speed and ease of use. However, built-in modules are not ideal when rapid development of small additions is required.Of course, extensions can also be implemented directly in the Zend engine. This strategy is good if you need a change in the language behavior or require special functions to be built directly into the language core. In general, however, modifications to the Zend engine should be avoided. Changes here result in incompatibilities with the rest of the world, and hardly anyone will ever adapt to specially patched Zend engines. Modifications can't be detached from the main PHP sources and are overridden with the next update using the "official" source repositories. Therefore, this method is generally considered bad practice and, due to its rarity, is not covered in this book.
Poznßmka: Prior to working through the rest of this chapter, you should retrieve clean, unmodified source trees of your favorite Web server. We're working with Apache (available at http://www.apache.org/) and, of course, with PHP (available at http://www.php.net/ - does it need to be said?).
Make sure that you can compile a working PHP environment by yourself! We won't go into this issue here, however, as you should already have this most basic ability when studying this chapter.
Before we start discussing code issues, you should familiarize yourself with the source tree to be able to quickly navigate through PHP's files. This is a must-have ability to implement and debug extensions.
The following table describes the contents of the major directories.
Directory | Contents |
php4 | Main PHP source files and main header files; here you'll find all of PHP's API definitions, macros, etc. (important). Everything else is below this directory. |
php4/ext | Repository for dynamic and built-in modules; by default, these are the "official" PHP modules that have been integrated into the main source tree. From PHP 4.0, it's possible to compile these standard extensions as dynamic loadable modules (at least, those that support it). |
php4/main | This directory contains the main php macros and definitions. (important) |
php4/pear | Directory for the PHP Extension and Application Repository. This directory contains core PEAR files. |
php4/sapi | Contains the code for the different server abstraction layers. |
php4/TSRM | Location of the "Thread Safe Resource Manager" (TSRM) for Zend and PHP. |
php4/Zend | Location of the Zend Engine files; here you'll find all of Zend's API definitions, macros, etc. (important). |
Discussing all the files included in the PHP package is beyond the scope of this chapter. However, you should take a close look at the following files:
php4/main/php.h, located in the main PHP directory. This file contains most of PHP's macro and API definitions.
php4/Zend/zend.h, located in the main Zend directory. This file contains most of Zend's macros and definitions.
php4/Zend/zend_API.h, also located in the Zend directory, which defines Zend's API.
Zend is built using certain conventions; to avoid breaking its standards, you should follow the rules described in the following sections.
For almost every important task, Zend ships predefined macros that are extremely handy. The tables and figures in the following sections describe most of the basic functions, structures, and macros. The macro definitions can be found mainly in zend.h and zend_API.h. We suggest that you take a close look at these files after having studied this chapter. (Although you can go ahead and read them now, not everything will make sense to you yet.)
Resource management is a crucial issue, especially in server software. One of the most valuable resources is memory, and memory management should be handled with extreme care. Memory management has been partially abstracted in Zend, and you should stick to this abstraction for obvious reasons: Due to the abstraction, Zend gets full control over all memory allocations. Zend is able to determine whether a block is in use, automatically freeing unused blocks and blocks with lost references, and thus prevent memory leaks. The functions to be used are described in the following table:
Function | Description |
emalloc() | Serves as replacement for malloc(). |
efree() | Serves as replacement for free(). |
estrdup() | Serves as replacement for strdup(). |
estrndup() | Serves as replacement for strndup(). Faster than estrdup() and binary-safe. This is the recommended function to use if you know the string length prior to duplicating it. |
ecalloc() | Serves as replacement for calloc(). |
erealloc() | Serves as replacement for realloc(). |
Varovßnφ |
To allocate resident memory that survives termination of the current script, you can use malloc() and free(). This should only be done with extreme care, however, and only in conjunction with demands of the Zend API; otherwise, you risk memory leaks. |
The following directory and file functions should be used in Zend modules. They behave exactly like their C counterparts, but provide virtual working directory support on the thread level.
Strings are handled a bit differently by the Zend engine than other values such as integers, Booleans, etc., which don't require additional memory allocation for storing their values. If you want to return a string from a function, introduce a new string variable to the symbol table, or do something similar, you have to make sure that the memory the string will be occupying has previously been allocated, using the aforementioned e*() functions for allocation. (This might not make much sense to you yet; just keep it somewhere in your head for now - we'll get back to it shortly.)
Complex types such as arrays and objects require different treatment. Zend features a single API for these types - they're stored using hash tables.
Poznßmka: To reduce complexity in the following source examples, we're only working with simple types such as integers at first. A discussion about creating more advanced types follows later in this chapter.
PHP 4 features an automatic build system that's very flexible. All modules reside in a subdirectory of the ext directory. In addition to its own sources, each module consists of a config.m4 file, for extension configuration. (for example, see http://www.gnu.org/manual/m4/html_mono/m4.html)
All these stub files are generated automatically, along with .cvsignore, by a little shell script named ext_skel that resides in the ext directory. As argument it takes the name of the module that you want to create. The shell script then creates a directory of the same name, along with the appropriate stub files.
Step by step, the process looks like this:
:~/cvs/php4/ext:> ./ext_skel --extname=my_module Creating directory my_module Creating basic files: config.m4 .cvsignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done]. To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/my_module/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-my_module 5. $ make 6. $ ./php -f ext/my_module/my_module.php 7. $ vi ext/my_module/my_module.c 8. $ make Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and step 6 confirms that your module is compiled into PHP. Then, start writing code and repeat the last two steps as often as necessary. |
The default config.m4 shown in 27-1 is a bit more complex:
P°φklad 27-1. The default config.m4.
|
If you're unfamiliar with M4 files (now is certainly a good time to get familiar), this might be a bit confusing at first; but it's actually quite easy.
Note: Everything prefixed with dnl is treated as a comment and is not parsed.
The config.m4 file is responsible for parsing the command-line options passed to configure at configuration time. This means that it has to check for required external files and do similar configuration and setup tasks.
The default file creates two configuration directives in the configure script: --with-my_module and --enable-my_module. Use the first option when referring external files (such as the --with-apache directive that refers to the Apache directory). Use the second option when the user simply has to decide whether to enable your extension. Regardless of which option you use, you should uncomment the other, unnecessary one; that is, if you're using --enable-my_module, you should remove support for --with-my_module, and vice versa.
By default, the config.m4 file created by ext_skel accepts both directives and automatically enables your extension. Enabling the extension is done by using the PHP_EXTENSION macro. To change the default behavior to include your module into the PHP binary when desired by the user (by explicitly specifying --enable-my_module or --with-my_module), change the test for $PHP_MY_MODULE to == "yes":
if test "$PHP_MY_MODULE" == "yes"; then dnl Action.. PHP_EXTENSION(my_module, $ext_shared) fi |
Note: Be sure to run buildconf every time you change config.m4!
We'll go into more details on the M4 macros available to your configuration scripts later in this chapter. For now, we'll simply use the default files.
We'll start with the creation of a very simple extension at first, which basically does nothing more than implement a function that returns the integer it receives as parameter. 28-1 shows the source.
P°φklad 28-1. A simple extension.
|
This code contains a complete PHP module. We'll explain the source code in detail shortly, but first we'd like to discuss the build process. (This will allow the impatient to experiment before we dive into API discussions.)
Poznßmka: The example source makes use of some features introduced with the Zend version used in PHP 4.1.0 and above, it won't compile with older PHP 4.0.x versions.
There are basically two ways to compile modules:
Use the provided "make" mechanism in the ext directory, which also allows building of dynamic loadable modules.
Compile the sources manually.
The second method is good for those who (for some reason) don't have the full PHP source tree available, don't have access to all files, or just like to juggle with their keyboard. These cases should be extremely rare, but for the sake of completeness we'll also describe this method.
Compiling Using Make. To compile the sample sources using the standard mechanism, copy all their subdirectories to the ext directory of your PHP source tree. Then run buildconf, which will create an updated configure script containing appropriate options for the new extension. By default, all the sample sources are disabled, so you don't have to fear breaking your build process.
After you run buildconf, configure --help shows the following additional modules:
--enable-array_experiments BOOK: Enables array experiments --enable-call_userland BOOK: Enables userland module --enable-cross_conversion BOOK: Enables cross-conversion module --enable-first_module BOOK: Enables first module --enable-infoprint BOOK: Enables infoprint module --enable-reference_test BOOK: Enables reference test module --enable-resource_test BOOK: Enables resource test module --enable-variable_creation BOOK: Enables variable-creation module |
The module shown earlier in 28-1 can be enabled with --enable-first_module or --enable-first_module=yes.
Compiling Manually. To compile your modules manually, you need the following commands:
The command to compile the module simply instructs the compiler to generate position-independent code (-fpic shouldn't be omitted) and additionally defines the constant COMPILE_DL to tell the module code that it's compiled as a dynamically loadable module (the test module above checks for this; we'll discuss it shortly). After these options, it specifies a number of standard include paths that should be used as the minimal set to compile the source files.Note: All include paths in the example are relative to the directory ext. If you're compiling from another directory, change the pathnames accordingly. Required items are the PHP directory, the Zend directory, and (if necessary), the directory in which your module resides.
The link command is also a plain vanilla command instructing linkage as a dynamic module.
You can include optimization options in the compilation command, although these have been omitted in this example (but some are included in the makefile template described in an earlier section).
Note: Compiling and linking manually as a static module into the PHP binary involves very long instructions and thus is not discussed here. (It's not very efficient to type all those commands.)
Depending on the build process you selected, you should either end up with a new PHP binary to be linked into your Web server (or run as CGI), or with an .so (shared object) file. If you compiled the example file first_module.c as a shared object, your result file should be first_module.so. To use it, you first have to copy it to a place from which it's accessible to PHP. For a simple test procedure, you can copy it to your htdocs directory and try it with the source in 29-1. If you compiled it into the PHP binary, omit the call to dl(), as the module's functionality is instantly available to your scripts.
Varovßnφ |
For security reasons, you should not put your dynamic modules into publicly accessible directories. Even though it can be done and it simplifies testing, you should put them into a separate directory in production environments. |
Calling this PHP file in your Web browser should give you the output shown in 29-1.
If required, the dynamic loadable module is loaded by calling the dl() function. This function looks for the specified shared object, loads it, and makes its functions available to PHP. The module exports the function first_module(), which accepts a single parameter, converts it to an integer, and returns the result of the conversion.
If you've gotten this far, congratulations! You just built your first extension to PHP.
Actually, not much troubleshooting can be done when compiling static or dynamic modules. The only problem that could arise is that the compiler will complain about missing definitions or something similar. In this case, make sure that all header files are available and that you specified their path correctly in the compilation command. To be sure that everything is located correctly, extract a clean PHP source tree and use the automatic build in the ext directory with the fresh files; this will guarantee a safe compilation environment. If this fails, try manual compilation.
PHP might also complain about missing functions in your module. (This shouldn't happen with the sample sources if you didn't modify them.) If the names of external functions you're trying to access from your module are misspelled, they'll remain as "unlinked symbols" in the symbol table. During dynamic loading and linkage by PHP, they won't resolve because of the typing errors - there are no corresponding symbols in the main binary. Look for incorrect declarations in your module file or incorrectly written external references. Note that this problem is specific to dynamic loadable modules; it doesn't occur with static modules. Errors in static modules show up at compile time.
Now that you've got a safe build environment and you're able to include the modules into PHP files, it's time to discuss how everything works.
All PHP modules follow a common structure:
Header file inclusions (to include all required macros, API definitions, etc.)
C declaration of exported functions (required to declare the Zend function block)
Declaration of the Zend function block
Declaration of the Zend module block
Implementation of get_module()
Implementation of all exported functions
The only header file you really have to include for your modules is php.h, located in the PHP directory. This file makes all macros and API definitions required to build new modules available to your code.
Tip: It's good practice to create a separate header file for your module that contains module-specific definitions. This header file should contain all the forward definitions for exported functions and include php.h. If you created your module using ext_skel you already have such a header file prepared.
To declare functions that are to be exported (i.e., made available to PHP as new native functions), Zend provides a set of macros. A sample declaration looks like this:
ZEND_FUNCTION ( my_function ); |
ZEND_FUNCTION declares a new C function that complies with Zend's internal API. This means that the function is of type void and accepts INTERNAL_FUNCTION_PARAMETERS (another macro) as parameters. Additionally, it prefixes the function name with zif. The immediately expanded version of the above definitions would look like this:
void zif_my_function ( INTERNAL_FUNCTION_PARAMETERS ); |
void zif_my_function( int ht , zval * return_value , zval * this_ptr , int return_value_used , zend_executor_globals * executor_globals ); |
Since the interpreter and executor core have been separated from the main PHP package, a second API defining macros and function sets has evolved: the Zend API. As the Zend API now handles quite a few of the responsibilities that previously belonged to PHP, a lot of PHP functions have been reduced to macros aliasing to calls into the Zend API. The recommended practice is to use the Zend API wherever possible, as the old API is only preserved for compatibility reasons. For example, the types zval and pval are identical. zval is Zend's definition; pval is PHP's definition (actually, pval is an alias for zval now). As the macro INTERNAL_FUNCTION_PARAMETERS is a Zend macro, the above declaration contains zval. When writing code, you should always use zval to conform to the new Zend API.
The parameter list of this declaration is very important; you should keep these parameters in mind (see 31-1 for descriptions).
Tabulka 31-1. Zend's Parameters to Functions Called from PHP
Parameter | Description |
ht | The number of arguments passed to the Zend function. You should not touch this directly, but instead use ZEND_NUM_ARGS() to obtain the value. |
return_value | This variable is used to pass any return values of your function back to PHP. Access to this variable is best done using the predefined macros. For a description of these see below. |
this_ptr | Using this variable, you can gain access to the object in which your function is contained, if it's used within an object. Use the function getThis() to obtain this pointer. |
return_value_used | This flag indicates whether an eventual return value from this function will actually be used by the calling script. 0 indicates that the return value is not used; 1 indicates that the caller expects a return value. Evaluation of this flag can be done to verify correct usage of the function as well as speed optimizations in case returning a value requires expensive operations (for an example, see how array.c makes use of this). |
executor_globals | This variable points to global settings of the Zend engine. You'll find this useful when creating new variables, for example (more about this later). The executor globals can also be introduced to your function by using the macro TSRMLS_FETCH(). |
Now that you have declared the functions to be exported, you also have to introduce them to Zend. Introducing the list of functions is done by using an array of zend_function_entry. This array consecutively contains all functions that are to be made available externally, with the function's name as it should appear in PHP and its name as defined in the C source. Internally, zend_function_entry is defined as shown in 31-1.
P°φklad 31-1. Internal declaration of zend_function_entry.
|
zend_function_entry firstmod_functions[] = { ZEND_FE(first_module, NULL) {NULL, NULL, NULL} }; |
Poznßmka: You cannot use the predefined macros for the end marker, as these would try to refer to a function named "NULL"!
The macro ZEND_FE (short for 'Zend Function Entry') simply expands to a structure entry in zend_function_entry. Note that these macros introduce a special naming scheme to your functions - your C functions will be prefixed with zif_, meaning that ZEND_FE(first_module) will refer to a C function zif_first_module(). If you want to mix macro usage with hand-coded entries (not a good practice), keep this in mind.
Tip: Compilation errors that refer to functions named zif_*() relate to functions defined with ZEND_FE.
31-2 shows a list of all the macros that you can use to define functions.
Tabulka 31-2. Macros for Defining Functions
Macro Name | Description |
ZEND_FE(name, arg_types) | Defines a function entry of the name name in zend_function_entry. Requires a corresponding C function. arg_types needs to be set to NULL. This function uses automatic C function name generation by prefixing the PHP function name with zif_. For example, ZEND_FE("first_module", NULL) introduces a function first_module() to PHP and links it to the C function zif_first_module(). Use in conjunction with ZEND_FUNCTION. |
ZEND_NAMED_FE(php_name, name, arg_types) | Defines a function that will be available to PHP by the name php_name and links it to the corresponding C function name. arg_types needs to be set to NULL. Use this function if you don't want the automatic name prefixing introduced by ZEND_FE. Use in conjunction with ZEND_NAMED_FUNCTION. |
ZEND_FALIAS(name, alias, arg_types) | Defines an alias named alias for name. arg_types needs to be set to NULL. Doesn't require a corresponding C function; refers to the alias target instead. |
PHP_FE(name, arg_types) | Old PHP API equivalent of ZEND_FE. |
PHP_NAMED_FE(runtime_name, name, arg_types) | Old PHP API equivalent of ZEND_NAMED_FE. |
Note: You can't use ZEND_FE in conjunction with PHP_FUNCTION, or PHP_FE in conjunction with ZEND_FUNCTION. However, it's perfectly legal to mix ZEND_FE and ZEND_FUNCTION with PHP_FE and PHP_FUNCTION when staying with the same macro set for each function to be declared. But mixing is not recommended; instead, you're advised to use the ZEND_* macros only.
This block is stored in the structure zend_module_entry and contains all necessary information to describe the contents of this module to Zend. You can see the internal definition of this module in 31-2.
P°φklad 31-2. Internal declaration of zend_module_entry.
|
In our example, this structure is implemented as follows:
zend_module_entry firstmod_module_entry = { STANDARD_MODULE_HEADER, "First Module", firstmod_functions, NULL, NULL, NULL, NULL, NULL, NO_VERSION_YET, STANDARD_MODULE_PROPERTIES, }; |
For reference purposes, you can find a list of the macros involved in declared startup and shutdown functions in 31-3. These are not used in our basic example yet, but will be demonstrated later on. You should make use of these macros to declare your startup and shutdown functions, as these require special arguments to be passed (INIT_FUNC_ARGS and SHUTDOWN_FUNC_ARGS), which are automatically included into the function declaration when using the predefined macros. If you declare your functions manually and the PHP developers decide that a change in the argument list is necessary, you'll have to change your module sources to remain compatible.
Tabulka 31-3. Macros to Declare Startup and Shutdown Functions
Macro | Description |
ZEND_MINIT(module) | Declares a function for module startup. The generated name will be zend_minit_<module> (for example, zend_minit_first_module). Use in conjunction with ZEND_MINIT_FUNCTION. |
ZEND_MSHUTDOWN(module) | Declares a function for module shutdown. The generated name will be zend_mshutdown_<module> (for example, zend_mshutdown_first_module). Use in conjunction with ZEND_MSHUTDOWN_FUNCTION. |
ZEND_RINIT(module) | Declares a function for request startup. The generated name will be zend_rinit_<module> (for example, zend_rinit_first_module). Use in conjunction with ZEND_RINIT_FUNCTION. |
ZEND_RSHUTDOWN(module) | Declares a function for request shutdown. The generated name will be zend_rshutdown_<module> (for example, zend_rshutdown_first_module). Use in conjunction with ZEND_RSHUTDOWN_FUNCTION. |
ZEND_MINFO(module) | Declares a function for printing module information, used when phpinfo() is called. The generated name will be zend_info_<module> (for example, zend_info_first_module). Use in conjunction with ZEND_MINFO_FUNCTION. |
This function is special to all dynamic loadable modules. Take a look at the creation via the ZEND_GET_MODULE macro first:
#if COMPILE_DL_FIRSTMOD ZEND_GET_MODULE(firstmod) #endif |
The function implementation is surrounded by a conditional compilation statement. This is needed since the function get_module() is only required if your module is built as a dynamic extension. By specifying a definition of COMPILE_DL_FIRSTMOD in the compiler command (see above for a discussion of the compilation instructions required to build a dynamic extension), you can instruct your module whether you intend to build it as a dynamic extension or as a built-in module. If you want a built-in module, the implementation of get_module() is simply left out.
get_module() is called by Zend at load time of the module. You can think of it as being invoked by the dl() call in your script. Its purpose is to pass the module information block back to Zend in order to inform the engine about the module contents.
If you don't implement a get_module() function in your dynamic loadable module, Zend will compliment you with an error message when trying to access it.
Implementing the exported functions is the final step. The example function in first_module looks like this:
ZEND_FUNCTION(first_module) { long parameter; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", ¶meter) == FAILURE) { return; } RETURN_LONG(parameter); } |
After the declaration, code for checking and retrieving the function's arguments, argument conversion, and return value generation follows (more on this later).
That's it, basically - there's nothing more to implementing PHP modules. Built-in modules are structured similarly to dynamic modules, so, equipped with the information presented in the previous sections, you'll be able to fight the odds when encountering PHP module source files.
Now, in the following sections, read on about how to make use of PHP's internals to build powerful extensions.
One of the most important issues for language extensions is accepting and dealing with data passed via arguments. Most extensions are built to deal with specific input data (or require parameters to perform their specific actions), and function arguments are the only real way to exchange data between the PHP level and the C level. Of course, there's also the possibility of exchanging data using predefined global values (which is also discussed later), but this should be avoided by all means, as it's extremely bad practice.
PHP doesn't make use of any formal function declarations; this is why call syntax is always completely dynamic and never checked for errors. Checking for correct call syntax is left to the user code. For example, it's possible to call a function using only one argument at one time and four arguments the next time - both invocations are syntactically absolutely correct.
Since PHP doesn't have formal function definitions with support for call syntax checking, and since PHP features variable arguments, sometimes you need to find out with how many arguments your function has been called. You can use the ZEND_NUM_ARGS macro in this case. In previous versions of PHP, this macro retrieved the number of arguments with which the function has been called based on the function's hash table entry, ht, which is passed in the INTERNAL_FUNCTION_PARAMETERS list. As ht itself now contains the number of arguments that have been passed to the function, ZEND_NUM_ARGS has been stripped down to a dummy macro (see its definition in zend_API.h). But it's still good practice to use it, to remain compatible with future changes in the call interface. Note: The old PHP equivalent of this macro is ARG_COUNT.
The following code checks for the correct number of arguments:
if(ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT; |
This macro prints a default error message and then returns to the caller. Its definition can also be found in zend_API.h and looks like this:
ZEND_API void wrong_param_count(void); #define WRONG_PARAM_COUNT { wrong_param_count(); return; } |
New parameter parsing API: This chapter documents the new Zend parameter parsing API introduced by Andrei Zmievski. It was introduced in the development stage between PHP 4.0.6 and 4.1.0 .
Parsing parameters is a very common operation and it may get a bit tedious. It would also be nice to have standardized error checking and error messages. Since PHP 4.1.0, there is a way to do just that by using the new parameter parsing API. It greatly simplifies the process of receiving parameteres, but it has a drawback in that it can't be used for functions that expect variable number of parameters. But since the vast majority of functions do not fall into those categories, this parsing API is recommended as the new standard way.
The prototype for parameter parsing function looks like this:
int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...); |
zend_parse_parameters() also performs type conversions whenever possible, so that you always receive the data in the format you asked for. Any type of scalar can be converted to another one, but conversions between complex types (arrays, objects, and resources) and scalar types are not allowed.
If the parameters could be obtained successfully and there were no errors during type conversion, the function will return SUCCESS, otherwise it will return FAILURE. The function will output informative error messages, if the number of received parameters does not match the requested number, or if type conversion could not be performed.
Here are some sample error messages:
Warning - ini_get_all() requires at most 1 parameter, 2 given Warning - wddx_deserialize() expects parameter 1 to be string, array given |
Here is the full list of type specifiers:
l - long
d - double
s - string (with possible null bytes) and its length
b - boolean
r - resource, stored in zval*
a - array, stored in zval*
o - object (of any class), stored in zval*
O - object (of class specified by class entry), stored in zval*
z - the actual zval*
| - indicates that the remaining parameters are optional. The storage variables corresponding to these parameters should be initialized to default values by the extension, since they will not be touched by the parsing function if the parameters are not passed.
/ - the parsing function will call SEPARATE_ZVAL_IF_NOT_REF() on the parameter it follows, to provide a copy of the parameter, unless it's a reference.
! - the parameter it follows can be of specified type or NULL (only applies to a, o, O, r, and z). If NULL value is passed by the user, the storage pointer will be set to NULL.
The best way to illustrate the usage of this function is through examples:
/* Gets a long, a string and its length, and a zval. */ long l; char *s; int s_len; zval *param; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lsz", &l, &s, &s_len, ¶m) == FAILURE) { return; } /* Gets an object of class specified by my_ce, and an optional double. */ zval *obj; double d = 0.5; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|d", &obj, my_ce, &d) == FAILURE) { return; } /* Gets an object or null, and an array. If null is passed for object, obj will be set to NULL. */ zval *obj; zval *arr; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O!a", &obj, &arr) == FAILURE) { return; } /* Gets a separated array. */ zval *arr; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &arr) == FAILURE) { return; } /* Get only the first three parameters (useful for varargs functions). */ zval *z; zend_bool b; zval *r; if (zend_parse_parameters(3, "zbr!", &z, &b, &r) == FAILURE) { return; } |
Note that in the last example we pass 3 for the number of received parameters, instead of ZEND_NUM_ARGS(). What this lets us do is receive the least number of parameters if our function expects a variable number of them. Of course, if you want to operate on the rest of the parameters, you will have to use zend_get_parameters_array_ex() to obtain them.
The parsing function has an extended version that allows for an additional flags argument that controls its actions.
int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...); |
The only flag you can pass currently is ZEND_PARSE_PARAMS_QUIET, which instructs the function to not output any error messages during its operation. This is useful for functions that expect several sets of completely different arguments, but you will have to output your own error messages.
For example, here is how you would get either a set of three longs or a string:
long l1, l2, l3; char *s; if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "lll", &l1, &l2, &l3) == SUCCESS) { /* manipulate longs */ } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS(), "s", &s, &s_len) == SUCCESS) { /* manipulate string */ } else { php_error(E_WARNING, "%s() takes either three long values or a string as argument", get_active_function_name(TSRMLS_C)); return; } |
With all the abovementioned ways of receiving function parameters you should have a good handle on this process. For even more example, look through the source code for extensions that are shipped with PHP - they illustrate every conceivable situation.
Deprecated parameter parsing API: This API is deprecated and superseded by the new ZEND parameter parsing API.
After having checked the number of arguments, you need to get access to the arguments themselves. This is done with the help of zend_get_parameters_ex():
zval **parameter; if(zend_get_parameters_ex(1, ¶meter) != SUCCESS) WRONG_PARAM_COUNT; |
zend_get_parameters_ex() accepts at least two arguments. The first argument is the number of arguments to retrieve (which should match the number of arguments with which the function has been called; this is why it's important to check for correct call syntax). The second argument (and all following arguments) are pointers to pointers to pointers to zvals. (Confusing, isn't it?) All these pointers are required because Zend works internally with **zval; to adjust a local **zval in our function,zend_get_parameters_ex() requires a pointer to it.
The return value of zend_get_parameters_ex() can either be SUCCESS or FAILURE, indicating (unsurprisingly) success or failure of the argument processing. A failure is most likely related to an incorrect number of arguments being specified, in which case you should exit with WRONG_PARAM_COUNT.
To retrieve more than one argument, you can use a similar snippet:
zval **param1, **param2, **param3, **param4; if(zend_get_parameters_ex(4, ¶m1, ¶m2, ¶m3, ¶m4) != SUCCESS) WRONG_PARAM_COUNT; |
zend_get_parameters_ex() only checks whether you're trying to retrieve too many parameters. If the function is called with five arguments, but you're only retrieving three of them with zend_get_parameters_ex(), you won't get an error but will get the first three parameters instead. Subsequent calls of zend_get_parameters_ex() won't retrieve the remaining arguments, but will get the same arguments again.
If your function is meant to accept a variable number of arguments, the snippets just described are sometimes suboptimal solutions. You have to create a line calling zend_get_parameters_ex() for every possible number of arguments, which is often unsatisfying.
For this case, you can use the function zend_get_parameters_array_ex(), which accepts the number of parameters to retrieve and an array in which to store them:
zval **parameter_array[4]; /* get the number of arguments */ argument_count = ZEND_NUM_ARGS(); /* see if it satisfies our minimal request (2 arguments) */ /* and our maximal acceptance (4 arguments) */ if(argument_count < 2 || argument_count > 5) WRONG_PARAM_COUNT; /* argument count is correct, now retrieve arguments */ if(zend_get_parameters_array_ex(argument_count, parameter_array) != SUCCESS) WRONG_PARAM_COUNT; |
A very clever implementation of this can be found in the code handling PHP's fsockopen() located in ext/standard/fsock.c, as shown in 32-1. Don't worry if you don't know all the functions used in this source yet; we'll get to them shortly.
P°φklad 32-1. PHP's implementation of variable arguments in fsockopen().
|
fsockopen() accepts two, three, four, or five parameters. After the obligatory variable declarations, the function checks for the correct range of arguments. Then it uses a fall-through mechanism in a switch() statement to deal with all arguments. The switch() statement starts with the maximum number of arguments being passed (five). After that, it automatically processes the case of four arguments being passed, then three, by omitting the otherwise obligatory break keyword in all stages. After having processed the last case, it exits the switch() statement and does the minimal argument processing needed if the function is invoked with only two arguments.
This multiple-stage type of processing, similar to a stairway, allows convenient processing of a variable number of arguments.
To access arguments, it's necessary for each argument to have a clearly defined type. Again, PHP's extremely dynamic nature introduces some quirks. Because PHP never does any kind of type checking, it's possible for a caller to pass any kind of data to your functions, whether you want it or not. If you expect an integer, for example, the caller might pass an array, and vice versa - PHP simply won't notice.
To work around this, you have to use a set of API functions to force a type conversion on every argument that's being passed (see 32-1).
Note: All conversion functions expect a **zval as parameter.
Tabulka 32-1. Argument Conversion Functions
Function | Description |
convert_to_boolean_ex() | Forces conversion to a Boolean type. Boolean values remain untouched. Longs, doubles, and strings containing 0 as well as NULL values will result in Boolean 0 (FALSE). Arrays and objects are converted based on the number of entries or properties, respectively, that they have. Empty arrays and objects are converted to FALSE; otherwise, to TRUE. All other values result in a Boolean 1 (TRUE). |
convert_to_long_ex() | Forces conversion to a long, the default integer type. NULL values, Booleans, resources, and of course longs remain untouched. Doubles are truncated. Strings containing an integer are converted to their corresponding numeric representation, otherwise resulting in 0. Arrays and objects are converted to 0 if empty, 1 otherwise. |
convert_to_double_ex() | Forces conversion to a double, the default floating-point type. NULL values, Booleans, resources, longs, and of course doubles remain untouched. Strings containing a number are converted to their corresponding numeric representation, otherwise resulting in 0.0. Arrays and objects are converted to 0.0 if empty, 1.0 otherwise. |
convert_to_string_ex() | Forces conversion to a string. Strings remain untouched. NULL values are converted to an empty string. Booleans containing TRUE are converted to "1", otherwise resulting in an empty string. Longs and doubles are converted to their corresponding string representation. Arrays are converted to the string "Array" and objects to the string "Object". |
convert_to_array_ex(value) | Forces conversion to an array. Arrays remain untouched. Objects are converted to an array by assigning all their properties to the array table. All property names are used as keys, property contents as values. NULL values are converted to an empty array. All other values are converted to an array that contains the specific source value in the element with the key 0. |
convert_to_object_ex(value) | Forces conversion to an object. Objects remain untouched. NULL values are converted to an empty object. Arrays are converted to objects by introducing their keys as properties into the objects and their values as corresponding property contents in the object. All other types result in an object with the property scalar , having the corresponding source value as content. |
convert_to_null_ex(value) | Forces the type to become a NULL value, meaning empty. |
Poznßmka: You can find a demonstration of the behavior in cross_conversion.php on the accompanying CD-ROM. 32-2 shows the output.
Using these functions on your arguments will ensure type safety for all data that's passed to you. If the supplied type doesn't match the required type, PHP forces dummy contents on the resulting value (empty strings, arrays, or objects, 0 for numeric values, FALSE for Booleans) to ensure a defined state.
Following is a quote from the sample module discussed previously, which makes use of the conversion functions:
zval **parameter; if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, ¶meter) != SUCCESS)) { WRONG_PARAM_COUNT; } convert_to_long_ex(parameter); RETURN_LONG(Z_LVAL_P(parameter)); |
P°φklad 32-2. PHP/Zend zval type definition.
|
Actually, pval (defined in php.h) is only an alias of zval (defined in zend.h), which in turn refers to _zval_struct. This is a most interesting structure. _zval_struct is the "master" structure, containing the value structure, type, and reference information. The substructure zvalue_value is a union that contains the variable's contents. Depending on the variable's type, you'll have to access different members of this union. For a description of both structures, see 32-2, 32-3 and 32-4.
Tabulka 32-2. Zend zval Structure
Entry | Description |
value | Union containing this variable's contents. See 32-3 for a description. |
type | Contains this variable's type. For a list of available types, see 32-4. |
is_ref | 0 means that this variable is not a reference; 1 means that this variable is a reference to another variable. |
refcount | The number of references that exist for this variable. For every new reference to the value stored in this variable, this counter is increased by 1. For every lost reference, this counter is decreased by 1. When the reference counter reaches 0, no references exist to this value anymore, which causes automatic freeing of the value. |
Tabulka 32-3. Zend zvalue_value Structure
Entry | Description |
lval | Use this property if the variable is of the type IS_LONG, IS_BOOLEAN, or IS_RESOURCE. |
dval | Use this property if the variable is of the type IS_DOUBLE. |
str | This structure can be used to access variables of the type IS_STRING. The member len contains the string length; the member val points to the string itself. Zend uses C strings; thus, the string length contains a trailing 0x00. |
ht | This entry points to the variable's hash table entry if the variable is an array. |
obj | Use this property if the variable is of the type IS_OBJECT. |
Tabulka 32-4. Zend Variable Type Constants
Constant | Description |
IS_NULL | Denotes a NULL (empty) value. |
IS_LONG | A long (integer) value. |
IS_DOUBLE | A double (floating point) value. |
IS_STRING | A string. |
IS_ARRAY | Denotes an array. |
IS_OBJECT | An object. |
IS_BOOL | A Boolean value. |
IS_RESOURCE | A resource (for a discussion of resources, see the appropriate section below). |
IS_CONSTANT | A constant (defined) value. |
To access a long you access zval.value.lval, to access a double you use zval.value.dval, and so on. Because all values are stored in a union, trying to access data with incorrect union members results in meaningless output.
Accessing arrays and objects is a bit more complicated and is discussed later.
If your function accepts arguments passed by reference that you intend to modify, you need to take some precautions.
What we didn't say yet is that under the circumstances presented so far, you don't have write access to any zval containers designating function parameters that have been passed to you. Of course, you can change any zval containers that you created within your function, but you mustn't change any zvals that refer to Zend-internal data!
We've only discussed the so-called *_ex() API so far. You may have noticed that the API functions we've used are called zend_get_parameters_ex() instead of zend_get_parameters(), convert_to_long_ex() instead of convert_to_long(), etc. The *_ex() functions form the so-called new "extended" Zend API. They give a minor speed increase over the old API, but as a tradeoff are only meant for providing read-only access.
Because Zend works internally with references, different variables may reference the same value. Write access to a zval container requires this container to contain an isolated value, meaning a value that's not referenced by any other containers. If a zval container were referenced by other containers and you changed the referenced zval, you would automatically change the contents of the other containers referencing this zval (because they'd simply point to the changed value and thus change their own value as well).
zend_get_parameters_ex() doesn't care about this situation, but simply returns a pointer to the desired zval containers, whether they consist of references or not. Its corresponding function in the traditional API, zend_get_parameters(), immediately checks for referenced values. If it finds a reference, it creates a new, isolated zval container; copies the referenced data into this newly allocated space; and then returns a pointer to the new, isolated value.
This action is called zval separation (or pval separation). Because the *_ex() API doesn't perform zval separation, it's considerably faster, while at the same time disabling write access.
To change parameters, however, write access is required. Zend deals with this situation in a special way: Whenever a parameter to a function is passed by reference, it performs automatic zval separation. This means that whenever you're calling a function like this in PHP, Zend will automatically ensure that $parameter is being passed as an isolated value, rendering it to a write-safe state:
my_function(&$parameter); |
But this is not the case with regular parameters! All other parameters that are not passed by reference are in a read-only state.
This requires you to make sure that you're really working with a reference - otherwise you might produce unwanted results. To check for a parameter being passed by reference, you can use the macro PZVAL_IS_REF. This macro accepts a zval* to check if it is a reference or not. Examples are given in in 32-3.
P°φklad 32-3. Testing for referenced parameter passing.
|
You might run into a situation in which you need write access to a parameter that's retrieved with zend_get_parameters_ex() but not passed by reference. For this case, you can use the macro SEPARATE_ZVAL, which does a zval separation on the provided container. The newly generated zval is detached from internal data and has only a local scope, meaning that it can be changed or destroyed without implying global changes in the script context:
zval **parameter; /* retrieve parameter */ zend_get_parameters_ex(1, ¶meter); /* at this stage, <parameter> still is connected */ /* to Zend's internal data buffers */ /* make <parameter> write-safe */ SEPARATE_ZVAL(parameter); /* now we can safely modify <parameter> */ /* without implying global changes */ |
Note: As you can easily work around the lack of write access in the "traditional" API (with zend_get_parameters() and so on), this API seems to be obsolete, and is not discussed further in this chapter.
When exchanging data from your own extensions with PHP scripts, one of the most important issues is the creation of variables. This section shows you how to deal with the variable types that PHP supports.
To create new variables that can be seen "from the outside" by the executing script, you need to allocate a new zval container, fill this container with meaningful values, and then introduce it to Zend's internal symbol table. This basic process is common to all variable creations:
zval *new_variable; /* allocate and initialize new container */ MAKE_STD_ZVAL(new_variable); /* set type and variable contents here, see the following sections */ /* introduce this variable by the name "new_variable_name" into the symbol table */ ZEND_SET_SYMBOL(EG(active_symbol_table), "new_variable_name", new_variable); /* the variable is now accessible to the script by using $new_variable_name */ |
The macro MAKE_STD_ZVAL allocates a new zval container using ALLOC_ZVAL and initializes it using INIT_ZVAL. As implemented in Zend at the time of this writing, initializing means setting the reference count to 1 and clearing the is_ref flag, but this process could be extended later - this is why it's a good idea to keep using MAKE_STD_ZVAL instead of only using ALLOC_ZVAL. If you want to optimize for speed (and you don't have to explicitly initialize the zval container here), you can use ALLOC_ZVAL, but this isn't recommended because it doesn't ensure data integrity.
ZEND_SET_SYMBOL takes care of introducing the new variable to Zend's symbol table. This macro checks whether the value already exists in the symbol table and converts the new symbol to a reference if so (with automatic deallocation of the old zval container). This is the preferred method if speed is not a crucial issue and you'd like to keep memory usage low.
Note that ZEND_SET_SYMBOL makes use of the Zend executor globals via the macro EG. By specifying EG(active_symbol_table), you get access to the currently active symbol table, dealing with the active, local scope. The local scope may differ depending on whether the function was invoked from within a function.
If you need to optimize for speed and don't care about optimal memory usage, you can omit the check for an existing variable with the same value and instead force insertion into the symbol table by using zend_hash_update():
zval *new_variable; /* allocate and initialize new container */ MAKE_STD_ZVAL(new_variable); /* set type and variable contents here, see the following sections */ /* introduce this variable by the name "new_variable_name" into the symbol table */ zend_hash_update( EG(active_symbol_table), "new_variable_name", strlen("new_variable_name") + 1, &new_variable, sizeof(zval *), NULL ); |
The variables generated with the snippet above will always be of local scope, so they reside in the context in which the function has been called. To create new variables in the global scope, use the same method but refer to another symbol table:
zval *new_variable; // allocate and initialize new container MAKE_STD_ZVAL(new_variable); // // set type and variable contents here // // introduce this variable by the name "new_variable_name" into the global symbol table ZEND_SET_SYMBOL(&EG(symbol_table), "new_variable_name", new_variable); |
Note: The active_symbol_table variable is a pointer, but symbol_table is not. This is why you have to use EG(active_symbol_table) and &EG(symbol_table) as parameters to ZEND_SET_SYMBOL - it requires a pointer.
Similarly, to get a more efficient version, you can hardcode the symbol table update:
zval *new_variable; // allocate and initialize new container MAKE_STD_ZVAL(new_variable); // // set type and variable contents here // // introduce this variable by the name "new_variable_name" into the global symbol table zend_hash_update( &EG(symbol_table), "new_variable_name", strlen("new_variable_name") + 1, &new_variable, sizeof(zval *), NULL ); |
Note: You can see that the global variable is actually not accessible from within the function. This is because it's not imported into the local scope using global $global_variable; in the PHP source.
P°φklad 33-1. Creating variables with different scopes.
|
Now let's get to the assignment of data to variables, starting with longs. Longs are PHP's integers and are very simple to store. Looking at the zval.value container structure discussed earlier in this chapter, you can see that the long data type is directly contained in the union, namely in the lval field. The corresponding type value for longs is IS_LONG (see 33-2).
zval *new_long; MAKE_STD_ZVAL(new_long); ZVAL_LONG(new_long, 10); |
Doubles are PHP's floats and are as easy to assign as longs, because their value is also contained directly in the union. The member in the zval.value container is dval; the corresponding type is IS_DOUBLE.
zval *new_double; MAKE_STD_ZVAL(new_double); new_double->type = IS_DOUBLE; new_double->value.dval = 3.45; |
zval *new_double; MAKE_STD_ZVAL(new_double); ZVAL_DOUBLE(new_double, 3.45); |
Strings need slightly more effort. As mentioned earlier, all strings that will be associated with Zend's internal data structures need to be allocated using Zend's own memory-management functions. Referencing of static strings or strings allocated with standard routines is not allowed. To assign strings, you have to access the structure str in the zval.value container. The corresponding type is IS_STRING:
zval *new_string; char *string_contents = "This is a new string variable"; MAKE_STD_ZVAL(new_string); new_string->type = IS_STRING; new_string->value.str.len = strlen(string_contents); new_string->value.str.val = estrdup(string_contents); |
zval *new_string; char *string_contents = "This is a new string variable"; MAKE_STD_ZVAL(new_string); ZVAL_STRING(new_string, string_contents, 1); |
If you want to truncate the string at a certain position or you already know its length, you can use ZVAL_STRINGL(zval, string, length, duplicate), which accepts an explicit string length to be set for the new string. This macro is faster than ZVAL_STRING and also binary-safe.
To create empty strings, set the string length to 0 and use empty_string as contents:
new_string->type = IS_STRING; new_string->value.str.len = 0; new_string->value.str.val = empty_string; |
MAKE_STD_ZVAL(new_string); ZVAL_EMPTY_STRING(new_string); |
Booleans are created just like longs, but have the type IS_BOOL. Allowed values in lval are 0 and 1:
zval *new_bool; MAKE_STD_ZVAL(new_bool); new_bool->type = IS_BOOL; new_bool->value.lval = 1; |
Arrays are stored using Zend's internal hash tables, which can be accessed using the zend_hash_*() API. For every array that you want to create, you need a new hash table handle, which will be stored in the ht member of the zval.value container.
There's a whole API solely for the creation of arrays, which is extremely handy. To start a new array, you call array_init().
zval *new_array; MAKE_STD_ZVAL(new_array); array_init(new_array); |
To add new elements to the array, you can use numerous functions, depending on what you want to do. 33-1, 33-2 and 33-3 describe these functions. All functions return FAILURE on failure and SUCCESS on success.
Tabulka 33-1. Zend's API for Associative Arrays
Function | Description |
add_assoc_long(zval *array, char *key, long n);() | Adds an element of type long. |
add_assoc_unset(zval *array, char *key);() | Adds an unset element. |
add_assoc_bool(zval *array, char *key, int b);() | Adds a Boolean element. |
add_assoc_resource(zval *array, char *key, int r);() | Adds a resource to the array. |
add_assoc_double(zval *array, char *key, double d);() | Adds a floating-point value. |
add_assoc_string(zval *array, char *key, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory. |
add_assoc_stringl(zval *array, char *key, char *str, uint length, int duplicate); () | Adds a string with the desired length length to the array. Otherwise, behaves like add_assoc_string(). |
add_assoc_zval(zval *array, char *key, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc... |
Tabulka 33-2. Zend's API for Indexed Arrays, Part 1
Function | Description |
add_index_long(zval *array, uint idx, long n);() | Adds an element of type long. |
add_index_unset(zval *array, uint idx);() | Adds an unset element. |
add_index_bool(zval *array, uint idx, int b);() | Adds a Boolean element. |
add_index_resource(zval *array, uint idx, int r);() | Adds a resource to the array. |
add_index_double(zval *array, uint idx, double d);() | Adds a floating-point value. |
add_index_string(zval *array, uint idx, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory. |
add_index_stringl(zval *array, uint idx, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string()(). |
add_index_zval(zval *array, uint idx, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc... |
Tabulka 33-3. Zend's API for Indexed Arrays, Part 2
Function | Description |
add_next_index_long(zval *array, long n);() | Adds an element of type long. |
add_next_index_unset(zval *array);() | Adds an unset element. |
add_next_index_bool(zval *array, int b);() | Adds a Boolean element. |
add_next_index_resource(zval *array, int r);() | Adds a resource to the array. |
add_next_index_double(zval *array, double d);() | Adds a floating-point value. |
add_next_index_string(zval *array, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory. |
add_next_index_stringl(zval *array, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string()(). |
add_next_index_zval(zval *array, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc... |
All these functions provide a handy abstraction to Zend's internal hash API. Of course, you can also use the hash functions directly - for example, if you already have a zval container allocated that you want to insert into an array. This is done using zend_hash_update()() for associative arrays (see 33-3) and zend_hash_index_update() for indexed arrays (see 33-4):
P°φklad 33-3. Adding an element to an associative array.
|
P°φklad 33-4. Adding an element to an indexed array.
|
To emulate the functionality of add_next_index_*(), you can use this:
zend_hash_next_index_insert(ht, zval **new_element, sizeof(zval *), NULL) |
Note: To return arrays from a function, use array_init() and all following actions on the predefined variable return_value (given as argument to your exported function; see the earlier discussion of the call interface). You do not have to use MAKE_STD_ZVAL on this.
Tip: To avoid having to write new_array->value.ht every time, you can use HASH_OF(new_array), which is also recommended for compatibility and style reasons.
Since objects can be converted to arrays (and vice versa), you might have already guessed that they have a lot of similarities to arrays in PHP. Objects are maintained with the same hash functions, but there's a different API for creating them.
To initialize an object, you use the function object_init():
zval *new_object; MAKE_STD_ZVAL(new_object); if(object_init(new_object) != SUCCESS) { // do error handling here } |
Tabulka 33-4. Zend's API for Object Creation
Function | Description |
add_property_long(zval *object, char *key, long l);() | Adds a long to the object. |
add_property_unset(zval *object, char *key);() | Adds an unset property to the object. |
add_property_bool(zval *object, char *key, int b);() | Adds a Boolean to the object. |
add_property_resource(zval *object, char *key, long r);() | Adds a resource to the object. |
add_property_double(zval *object, char *key, double d);() | Adds a double to the object. |
add_property_string(zval *object, char *key, char *str, int duplicate);() | Adds a string to the object. |
add_property_stringl(zval *object, char *key, char *str, uint length, int duplicate);() | Adds a string of the specified length to the object. This function is faster than add_property_string() and also binary-safe. |
add_property_zval(zval *obect, char *key, zval *container):() | Adds a zval container to the object. This is useful if you have to add properties which aren't simple types like integers or strings but arrays or other objects. |
Resources are a special kind of data type in PHP. The term resources doesn't really refer to any special kind of data, but to an abstraction method for maintaining any kind of information. Resources are kept in a special resource list within Zend. Each entry in the list has a correspondending type definition that denotes the kind of resource to which it refers. Zend then internally manages all references to this resource. Access to a resource is never possible directly - only via a provided API. As soon as all references to a specific resource are lost, a corresponding shutdown function is called.
For example, resources are used to store database links and file descriptors. The de facto standard implementation can be found in the MySQL module, but other modules such as the Oracle module also make use of resources.
Poznßmka: In fact, a resource can be a pointer to anything you need to handle in your functions (e.g. pointer to a structure) and the user only has to pass a single resource variable to your function.
To create a new resource you need to register a resource destruction handler for it. Since you can store any kind of data as a resource, Zend needs to know how to free this resource if its not longer needed. This works by registering your own resource destruction handler to Zend which in turn gets called by Zend whenever your resource can be freed (whether manually or automatically). Registering your resource handler within Zend returns you the resource type handle for that resource. This handle is needed whenever you want to access a resource of this type later and is most of time stored in a global static variable within your extension. There is no need to worry about thread safety here because you only register your resource handler once during module initialization.
The Zend function to register your resource handler is defined as:
ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, char *type_name, int module_number); |
There are two different kinds of resource destruction handlers you can pass to this function: a handler for normal resources and a handler for persistent resources. Persistent resources are for example used for database connection. When registering a resource, either of these handlers must be given. For the other handler just pass NULL.
zend_register_list_destructors_ex() accepts the following parameters:
ld | Normal resource destruction handler callback |
pld | Pesistent resource destruction handler callback |
type_name | A string specifying the name of your resource. It's always a good thing to specify an unique name within PHP for the resource type so when the user for example calls var_dump($resource); he also gets the name of the resource. |
module_number | The module_number is automatically available in your PHP_MINIT_FUNCTION function and therefore you just pass it over. |
The resource destruction handler (either normal or persistent resources) has the following prototype:
void resource_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC); |
typedef struct _zend_rsrc_list_entry { void *ptr; int type; int refcount; } zend_rsrc_list_entry; |
Now we know how to start things, we define our own resource we want register within Zend. It is only a simple structure with two integer members:
typedef struct { int resource_link; int resource_type; } my_resource; |
void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) { // You most likely cast the void pointer to your structure type my_resource *my_rsrc = (my_resource *) rsrc->ptr; // Now do whatever needs to be done with you resource. Closing // Files, Sockets, freeing additional memory, etc. // Also, don't forget to actually free the memory for your resource too! do_whatever_needs_to_be_done_with_the_resource(my_rsrc); } |
Poznßmka: One important thing to mention: If your resource is a rather complex structure which also contains pointers to memory you allocated during runtime you have to free them before freeing the resource itself!
Now that we have defined
what our resource is and
our resource destruction handler
create a global variable within the extension holding the resource ID so it can be accessed from every function which needs it
define the resource name
write the resource destruction handler
and finally register the handler
// Somewhere in your extension, define the variable for your registered resources. // If you wondered what 'le' stands for: it simply means 'list entry'. static int le_myresource; // It's nice to define your resource name somewhere #define le_myresource_name "My type of resource" [...] // Now actually define our resource destruction handler void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) { my_resource *my_rsrc = (my_resource *) rsrc->ptr; do_whatever_needs_to_be_done_with_the_resource(my_rsrc); } [...] PHP_MINIT_FUNCTION(my_extension) { // Note that 'module_number' is already provided through the // PHP_MINIT_FUNCTION() function definition. le_myresource = zend_register_resource_destructors_ex(my_destruction_handler, NULL, le_myresource_name, module_number); // You can register additional resources, initialize // your global vars, constants, whatever. } |
To actually register a new resource you use can either use the zend_register_resource() function or the ZEND_REGISTER_RESOURE() macro, both defined in zend_list.h . Although the arguments for both map 1:1 it's a good idea to always use macros to be upwards compatible:
int ZEND_REGISTER_RESOURCE(zval *rsrc_result, void *rsrc_pointer, int rsrc_type); |
rsrc_result | This is an already initialized zval * container. |
rsrc_pointer | Your resource pointer you want to store. |
rsrc_type | The type which you received when you registered the resource destruction handler. If you followed the naming scheme this would be le_myresource. |
What is really going on when you register a new resource is it gets inserted in an internal list in Zend and the result is just stored in the given zval * container:
rsrc_id = zend_list_insert(rsrc_pointer, rsrc_type); if (rsrc_result) { rsrc_result->value.lval = rsrc_id; rsrc_result->type = IS_RESOURCE; } return rsrc_id; |
RETURN_RESOURCE(rsrc_id) |
Poznßmka: It is common practice that if you want to return the resource immidiately to the user you specify the return_value as the zval * container.
Zend now keeps track of all references to this resource. As soon as all references to the resource are lost, the destructor that you previously registered for this resource is called. The nice thing about this setup is that you don't have to worry about memory leakages introduced by allocations in your module - just register all memory allocations that your calling script will refer to as resources. As soon as the script decides it doesn't need them anymore, Zend will find out and tell you.
Now that the user got his resource, at some point he is passing it back to one of your functions. The value.lval inside the zval * container contains the key to your resource and thus can be used to fetch the resource with the following macro: ZEND_FETCH_RESOURCE:
ZEND_FETCH_RESOURCE(rsrc, rsrc_type, rsrc_id, default_rsrc_id, resource_type_name, resource_type) |
rsrc | This is your pointer which will point to your previously registered resource. |
rsrc_type | This is the typecast argument for your pointer, e.g. myresource *. |
rsrc_id | This is the address of the zval *container the user passed to your function, e.g. &z_resource if zval *z_resource is given. |
default_rsrc_id | This integer specifies the default resource ID if no resource could be fetched or -1. |
resource_type_name | This is the name of the requested resource. It's a string and is used when the resource can't be found or is invalid to form a meaningful error message. |
resource_type | The resource_type you got back when registering the resource destruction handler. In our example this was le_myresource. |
To force removal of a resource from the list, use the function zend_list_delete(). You can also force the reference count to increase if you know that you're creating another reference for a previously allocated value (for example, if you're automatically reusing a default database link). For this case, use the function zend_list_addref(). To search for previously allocated resource entries, use zend_list_find(). The complete API can be found in zend_list.h.
In addition to the macros discussed earlier, a few macros allow easy creation of simple global variables. These are nice to know in case you want to introduce global flags, for example. This is somewhat bad practice, but Table 33-5 describes macros that do exactly this task. They don't need any zval allocation; you simply have to supply a variable name and value.
Tabulka 33-5. Macros for Global Variable Creation
Macro | Description |
SET_VAR_STRING(name, value) | Creates a new string. |
SET_VAR_STRINGL(name, value, length) | Creates a new string of the specified length. This macro is faster than SET_VAR_STRING and also binary-safe. |
SET_VAR_LONG(name, value) | Creates a new long. |
SET_VAR_DOUBLE(name, value) | Creates a new double. |
Zend supports the creation of true constants (as opposed to regular variables). Constants are accessed without the typical dollar sign ($) prefix and are available in all scopes. Examples include TRUE and FALSE, to name just two.
To create your own constants, you can use the macros in 33-6. All the macros create a constant with the specified name and value.
You can also specify flags for each constant:
CONST_CS - This constant's name is to be treated as case sensitive.
CONST_PERSISTENT - This constant is persistent and won't be "forgotten" when the current process carrying this constant shuts down.
// register a new constant of type "long" REGISTER_LONG_CONSTANT("NEW_MEANINGFUL_CONSTANT", 324, CONST_CS | CONST_PERSISTENT); |
Tabulka 33-6. Macros for Creating Constants
Macro | Description |
REGISTER_LONG_CONSTANT(name, value, flags) REGISTER_MAIN_LONG_CONSTANT(name, value, flags) | Registers a new constant of type long. |
REGISTER_DOUBLE_CONSTANT(name, value, flags) REGISTER_MAIN_DOUBLE_CONSTANT(name, value, flags) | Registers a new constant of type double. |
REGISTER_STRING_CONSTANT(name, value, flags) REGISTER_MAIN_STRING_CONSTANT(name, value, flags) | Registers a new constant of type string. The specified string must reside in Zend's internal memory. |
REGISTER_STRINGL_CONSTANT(name, value, length, flags) REGISTER_MAIN_STRINGL_CONSTANT(name, value, length, flags) | Registers a new constant of type string. The string length is explicitly set to length. The specified string must reside in Zend's internal memory. |
Sooner or later, you may need to assign the contents of one zval container to another. This is easier said than done, since the zval container doesn't contain only type information, but also references to places in Zend's internal data. For example, depending on their size, arrays and objects may be nested with lots of hash table entries. By assigning one zval to another, you avoid duplicating the hash table entries, using only a reference to them (at most).
To copy this complex kind of data, use the copy constructor. Copy constructors are typically defined in languages that support operator overloading, with the express purpose of copying complex types. If you define an object in such a language, you have the possibility of overloading the "=" operator, which is usually responsible for assigning the contents of the lvalue (result of the evaluation of the left side of the operator) to the rvalue (same for the right side).
Overloading means assigning a different meaning to this operator, and is usually used to assign a function call to an operator. Whenever this operator would be used on such an object in a program, this function would be called with the lvalue and rvalue as parameters. Equipped with that information, it can perform the operation it intends the "=" operator to have (usually an extended form of copying).
This same form of "extended copying" is also necessary for PHP's zval containers. Again, in the case of an array, this extended copying would imply re-creation of all hash table entries relating to this array. For strings, proper memory allocation would have to be assured, and so on.
Zend ships with such a function, called zend_copy_ctor() (the previous PHP equivalent was pval_copy_constructor()).
A most useful demonstration is a function that accepts a complex type as argument, modifies it, and then returns the argument:
zval *parameter; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", ¶meter) == FAILURE) return; } // do modifications to the parameter here // now we want to return the modified container: *return_value == *parameter; zval_copy_ctor(return_value); |
The first part of the function is plain-vanilla argument retrieval. After the (left out) modifications, however, it gets interesting: The container of parameter is assigned to the (predefined) return_value container. Now, in order to effectively duplicate its contents, the copy constructor is called. The copy constructor works directly with the supplied argument, and the standard return values are FAILURE on failure and SUCCESS on success.
If you omit the call to the copy constructor in this example, both parameter and return_value would point to the same internal data, meaning that return_value would be an illegal additional reference to the same data structures. Whenever changes occurred in the data that parameter points to, return_value might be affected. Thus, in order to create separate copies, the copy constructor must be used.
The copy constructor's counterpart in the Zend API, the destructor zval_dtor(), does the opposite of the constructor.
Returning values from your functions to PHP was described briefly in an earlier section; this section gives the details. Return values are passed via the return_value variable, which is passed to your functions as argument. The return_value argument consists of a zval container (see the earlier discussion of the call interface) that you can freely modify. The container itself is already allocated, so you don't have to run MAKE_STD_ZVAL on it. Instead, you can access its members directly.
To make returning values from functions easier and to prevent hassles with accessing the internal structures of the zval container, a set of predefined macros is available (as usual). These macros automatically set the correspondent type and value, as described in 35-1 and 35-2.
Poznßmka: The macros in 35-1 automatically return from your function, those in 35-2 only set the return value; they don't return from your function.
Tabulka 35-1. Predefined Macros for Returning Values from a Function
Macro | Description |
RETURN_RESOURCE(resource) | Returns a resource. |
RETURN_BOOL(bool) | Returns a Boolean. |
RETURN_NULL() | Returns nothing (a NULL value). |
RETURN_LONG(long) | Returns a long. |
RETURN_DOUBLE(double) | Returns a double. |
RETURN_STRING(string, duplicate) | Returns a string. The duplicate flag indicates whether the string should be duplicated using estrdup(). |
RETURN_STRINGL(string, length, duplicate) | Returns a string of the specified length; otherwise, behaves like RETURN_STRING. This macro is faster and binary-safe, however. |
RETURN_EMPTY_STRING() | Returns an empty string. |
RETURN_FALSE | Returns Boolean false. |
RETURN_TRUE | Returns Boolean true. |
Tabulka 35-2. Predefined Macros for Setting the Return Value of a Function
Macro | Description |
RETVAL_RESOURCE(resource) | Sets the return value to the specified resource. |
RETVAL_BOOL(bool) | Sets the return value to the specified Boolean value. |
RETVAL_NULL | Sets the return value to NULL. |
RETVAL_LONG(long) | Sets the return value to the specified long. |
RETVAL_DOUBLE(double) | Sets the return value to the specified double. |
RETVAL_STRING(string, duplicate) | Sets the return value to the specified string and duplicates it to Zend internal memory if desired (see also RETURN_STRING). |
RETVAL_STRINGL(string, length, duplicate) | Sets the return value to the specified string and forces the length to become length (see also RETVAL_STRING). This macro is faster and binary-safe, and should be used whenever the string length is known. |
RETVAL_EMPTY_STRING | Sets the return value to an empty string. |
RETVAL_FALSE | Sets the return value to Boolean false. |
RETVAL_TRUE | Sets the return value to Boolean true. |
Complex types such as arrays and objects can be returned by using array_init() and object_init(), as well as the corresponding hash functions on return_value. Since these types cannot be constructed of trivial information, there are no predefined macros for them.
Often it's necessary to print messages to the output stream from your module, just as print() would be used within a script. PHP offers functions for most generic tasks, such as printing warning messages, generating output for phpinfo(), and so on. The following sections provide more details. Examples of these functions can be found on the CD-ROM.
zend_printf() works like the standard printf(), except that it prints to Zend's output stream.
zend_error() can be used to generate error messages. This function accepts two arguments; the first is the error type (see zend_errors.h), and the second is the error message.
zend_error(E_WARNING, "This function has been called with empty arguments"); |
Tabulka 36-1. Zend's Predefined Error Messages.
Error | Description |
E_ERROR | Signals an error and terminates execution of the script immediately . |
E_WARNING | Signals a generic warning. Execution continues. |
E_PARSE | Signals a parser error. Execution continues. |
E_NOTICE | Signals a notice. Execution continues. Note that by default the display of this type of error messages is turned off in php.ini. |
E_CORE_ERROR | Internal error by the core; shouldn't be used by user-written modules. |
E_COMPILE_ERROR | Internal error by the compiler; shouldn't be used by user-written modules. |
E_COMPILE_WARNING | Internal warning by the compiler; shouldn't be used by user-written modules. |
After creating a real module, you'll want to show information about the module in phpinfo() (in addition to the module name, which appears in the module list by default). PHP allows you to create your own section in the phpinfo() output with the ZEND_MINFO() function. This function should be placed in the module descriptor block (discussed earlier) and is always called whenever a script calls phpinfo().
PHP automatically prints a section in phpinfo() for you if you specify the ZEND_MINFO function, including the module name in the heading. Everything else must be formatted and printed by you.
Typically, you can print an HTML table header using php_info_print_table_start() and then use the standard functions php_info_print_table_header() and php_info_print_table_row(). As arguments, both take the number of columns (as integers) and the column contents (as strings). 36-1 shows a source example and its output. To print the table footer, use php_info_print_table_end().
P°φklad 36-1. Source code and screenshot for output in phpinfo().
|
You can also print execution information, such as the current file being executed. The name of the function currently being executed can be retrieved using the function get_active_function_name(). This function returns a pointer to the function name and doesn't accept any arguments. To retrieve the name of the file currently being executed, use zend_get_executed_filename(). This function accesses the executor globals, which are passed to it using the TSRMLS_C macro. The executor globals are automatically available to every function that's called directly by Zend (they're part of the INTERNAL_FUNCTION_PARAMETERS described earlier in this chapter). If you want to access the executor globals in another function that doesn't have them available automatically, call the macro TSRMLS_FETCH() once in that function; this will introduce them to your local scope.
Finally, the line number currently being executed can be retrieved using the function zend_get_executed_lineno(). This function also requires the executor globals as arguments. For examples of these functions, see 36-2.
P°φklad 36-2. Printing execution information.
|
Startup and shutdown functions can be used for one-time initialization and deinitialization of your modules. As discussed earlier in this chapter (see the description of the Zend module descriptor block), there are module, and request startup and shutdown events.
The module startup and shutdown functions are called whenever a module is loaded and needs initialization; the request startup and shutdown functions are called every time a request is processed (meaning that a file is being executed).
For dynamic extensions, module and request startup/shutdown events happen at the same time.
Declaration and implementation of these functions can be done with macros; see the earlier section "Declaration of the Zend Module Block" for details.
You can call user functions from your own modules, which is very handy when implementing callbacks; for example, for array walking, searching, or simply for event-based programs.
User functions can be called with the function call_user_function_ex(). It requires a hash value for the function table you want to access, a pointer to an object (if you want to call a method), the function name, return value, number of arguments, argument array, and a flag indicating whether you want to perform zval separation.
ZEND_API int call_user_function_ex(HashTable *function_table, zval *object, zval *function_name, zval **retval_ptr_ptr, int param_count, zval **params[], int no_separation); |
Note that you don't have to specify both function_table and object; either will do. If you want to call a method, you have to supply the object that contains this method, in which case call_user_function()automatically sets the function table to this object's function table. Otherwise, you only need to specify function_table and can set object to NULL.
Usually, the default function table is the "root" function table containing all function entries. This function table is part of the compiler globals and can be accessed using the macro CG. To introduce the compiler globals to your function, call the macro TSRMLS_FETCH once.
The function name is specified in a zval container. This might be a bit surprising at first, but is quite a logical step, since most of the time you'll accept function names as parameters from calling functions within your script, which in turn are contained in zval containers again. Thus, you only have to pass your arguments through to this function. This zval must be of type IS_STRING.
The next argument consists of a pointer to the return value. You don't have to allocate memory for this container; the function will do so by itself. However, you have to destroy this container (using zval_dtor()) afterward!
Next is the parameter count as integer and an array containing all necessary parameters. The last argument specifies whether the function should perform zval separation - this should always be set to 0. If set to 1, the function consumes less memory but fails if any of the parameters need separation.
38-1 shows a small demonstration of calling a user function. The code calls a function that's supplied to it as argument and directly passes this function's return value through as its own return value. Note the use of the constructor and destructor calls at the end - it might not be necessary to do it this way here (since they should be separate values, the assignment might be safe), but this is bulletproof.
P°φklad 38-1. Calling user functions.
|
<?php dl("call_userland.so"); function test_function() { print("We are in the test function!<br>"); return("hello"); } $return_value = call_userland("test_function"); print("Return value: \"$return_value\"<br>"); ?> |
PHP 4 features a redesigned initialization file support. It's now possible to specify default initialization entries directly in your code, read and change these values at runtime, and create message handlers for change notifications.
To create an .ini section in your own module, use the macros PHP_INI_BEGIN() to mark the beginning of such a section and PHP_INI_END() to mark its end. In between you can use PHP_INI_ENTRY() to create entries.
PHP_INI_BEGIN() PHP_INI_ENTRY("first_ini_entry", "has_string_value", PHP_INI_ALL, NULL) PHP_INI_ENTRY("second_ini_entry", "2", PHP_INI_SYSTEM, OnChangeSecond) PHP_INI_ENTRY("third_ini_entry", "xyz", PHP_INI_USER, NULL) PHP_INI_END() |
The permissions are grouped into three sections:PHP_INI_SYSTEM allows a change only directly in the php.ini file; PHP_INI_USER allows a change to be overridden by a user at runtime using additional configuration files, such as .htaccess; and PHP_INI_ALL allows changes to be made without restrictions. There's also a fourth level, PHP_INI_PERDIR, for which we couldn't verify its behavior yet.
The fourth parameter consists of a pointer to a change-notification handler. Whenever one of these initialization entries is changed, this handler is called. Such a handler can be declared using the PHP_INI_MH macro:
PHP_INI_MH(OnChangeSecond); // handler for ini-entry "second_ini_entry" // specify ini-entries here PHP_INI_MH(OnChangeSecond) { zend_printf("Message caught, our ini entry has been changed to %s<br>", new_value); return(SUCCESS); } |
#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value, uint new_value_length, void *mh_arg1, void *mh_arg2, void *mh_arg3) |
The change-notification handlers should be used to cache initialization entries locally for faster access or to perform certain tasks that are required if a value changes. For example, if a constant connection to a certain host is required by a module and someone changes the hostname, automatically terminate the old connection and attempt a new one.
Access to initialization entries can also be handled with the macros shown in 39-1.
Tabulka 39-1. Macros to Access Initialization Entries in PHP
Macro | Description |
INI_INT(name) | Returns the current value of entry name as integer (long). |
INI_FLT(name) | Returns the current value of entry name as float (double). |
INI_STR(name) | Returns the current value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory. |
INI_BOOL(name) | Returns the current value of entry name as Boolean (defined as zend_bool, which currently means unsigned char). |
INI_ORIG_INT(name) | Returns the original value of entry name as integer (long). |
INI_ORIG_FLT(name) | Returns the original value of entry name as float (double). |
INI_ORIG_STR(name) | Returns the original value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory. |
INI_ORIG_BOOL(name) | Returns the original value of entry name as Boolean (defined as zend_bool, which currently means unsigned char). |
Finally, you have to introduce your initialization entries to PHP. This can be done in the module startup and shutdown functions, using the macros REGISTER_INI_ENTRIES() and UNREGISTER_INI_ENTRIES():
ZEND_MINIT_FUNCTION(mymodule) { REGISTER_INI_ENTRIES(); } ZEND_MSHUTDOWN_FUNCTION(mymodule) { UNREGISTER_INI_ENTRIES(); } |
You've learned a lot about PHP. You now know how to create dynamic loadable modules and statically linked extensions. You've learned how PHP and Zend deal with internal storage of variables and how you can create and access these variables. You know quite a set of tool functions that do a lot of routine tasks such as printing informational texts, automatically introducing variables to the symbol table, and so on.
Even though this chapter often had a mostly "referential" character, we hope that it gave you insight on how to start writing your own extensions. For the sake of space, we had to leave out a lot; we suggest that you take the time to study the header files and some modules (especially the ones in the ext/standard directory and the MySQL module, as these implement commonly known functionality). This will give you an idea of how other people have used the API functions - particularly those that didn't make it into this chapter.
The file config.m4 is processed by buildconf and must contain all the instructions to be executed during configuration. For example, these can include tests for required external files, such as header files, libraries, and so on. PHP defines a set of macros that can be used in this process, the most useful of which are described in 41-1.
Tabulka 41-1. M4 Macros for config.m4
Macro | Description |
AC_MSG_CHECKING(message) | Prints a "checking <message>" text during configure. |
AC_MSG_RESULT(value) | Gives the result to AC_MSG_CHECKING; should specify either yes or no as value. |
AC_MSG_ERROR(message) | Prints message as error message during configure and aborts the script. |
AC_DEFINE(name,value,description) | Adds #define to php_config.h with the value of value and a comment that says description (this is useful for conditional compilation of your module). |
AC_ADD_INCLUDE(path) | Adds a compiler include path; for example, used if the module needs to add search paths for header files. |
AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath) | Specifies an additional library to link. |
AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest) | Quite a powerful macro, adding the module with description to the configure --help output. PHP checks whether the option --with-<modulename> is given to the configure script. If so, it runs the script unconditionaltest (for example, --with-myext=yes), in which case the value of the option is contained in the variable $withval. Otherwise, it executes conditionaltest. |
PHP_EXTENSION(modulename, [shared]) | This macro is a must to call for PHP to configure your extension. You can supply a second argument in addition to your module name, indicating whether you intend compilation as a shared module. This will result in a definition at compile time for your source as COMPILE_DL_<modulename>. |
A set of macros was introduced into Zend's API that simplify access to zval containers (see 42-1).
Tabulka 42-1. API Macros for Accessing zval Containers
Macro | Refers to |
Z_LVAL(zval) | (zval).value.lval |
Z_DVAL(zval) | (zval).value.dval |
Z_STRVAL(zval) | (zval).value.str.val |
Z_STRLEN(zval) | (zval).value.str.len |
Z_ARRVAL(zval) | (zval).value.ht |
Z_LVAL_P(zval) | (*zval).value.lval |
Z_DVAL_P(zval) | (*zval).value.dval |
Z_STRVAL_P(zval_p) | (*zval).value.str.val |
Z_STRLEN_P(zval_p) | (*zval).value.str.len |
Z_ARRVAL_P(zval_p) | (*zval).value.ht |
Z_LVAL_PP(zval_pp) | (**zval).value.lval |
Z_DVAL_PP(zval_pp) | (**zval).value.dval |
Z_STRVAL_PP(zval_pp) | (**zval).value.str.val |
Z_STRLEN_PP(zval_pp) | (**zval).value.str.len |
Z_ARRVAL_PP(zval_pp) | (**zval).value.ht |
The PHP Streams API introduces a unified approach to the handling of files and sockets in PHP extension. Using a single API with standard functions for common operations, the streams API allows your extension to access files, sockets, URLs, memory and script-defined objects. Streams is a run-time extensible API that allows dynamically loaded modules (and scripts!) to register new streams.
The aim of the Streams API is to make it comfortable for developers to open files, URLs and other streamable data sources with a unified API that is easy to understand. The API is more or less based on the ANSI C stdio family of functions (with identical semantics for most of the main functions), so C programmers will have a feeling of familiarity with streams.
The streams API operates on a couple of different levels: at the base level, the API defines php_stream objects to represent streamable data sources. On a slightly higher level, the API defines php_stream_wrapper objects which "wrap" around the lower level API to provide support for retrieving data and meta-data from URLs. An additional context parameter, accepted by most stream creation functions, is passed to the wrapper's stream_opener method to fine-tune the behavior of the wrapper.
Any stream, once opened, can also have any number of filters applied to it, which process data as it is read from/written to the stream.
Streams can be cast (converted) into other types of file-handles, so that they can be used with third-party libraries without a great deal of trouble. This allows those libraries to access data directly from URL sources. If your system has the fopencookie() or funopen() function, you can even pass any PHP stream to any library that uses ANSI stdio!
Poznßmka: The functions in this chapter are for use in the PHP source code and are not PHP functions. Userland stream functions can be found in the Stream Reference.
Using streams is very much like using ANSI stdio functions. The main difference is in how you obtain the stream handle to begin with. In most cases, you will use php_stream_open_wrapper() to obtain the stream handle. This function works very much like fopen, as can be seen from the example below:
P°φklad 43-1. simple stream example that displays the PHP home page
|
The table below shows the Streams equivalents of the more common ANSI stdio functions. Unless noted otherwise, the semantics of the functions are identical.
Tabulka 43-1. ANSI stdio equivalent functions in the Streams API
ANSI Stdio Function | PHP Streams Function | Notes |
---|---|---|
fopen | php_stream_open_wrapper | Streams includes additional parameters |
fclose | php_stream_close | |
fgets | php_stream_gets | |
fread | php_stream_read | The nmemb parameter is assumed to have a value of 1, so the prototype looks more like read(2) |
fwrite | php_stream_write | The nmemb parameter is assumed to have a value of 1, so the prototype looks more like write(2) |
fseek | php_stream_seek | |
ftell | php_stream_tell | |
rewind | php_stream_rewind | |
feof | php_stream_eof | |
fgetc | php_stream_getc | |
fputc | php_stream_putc | |
fflush | php_stream_flush | |
puts | php_stream_puts | Same semantics as puts, NOT fputs |
fstat | php_stream_stat | Streams has a richer stat structure |
All streams are registered as resources when they are created. This ensures that they will be properly cleaned up even if there is some fatal error. All of the filesystem functions in PHP operate on streams resources - that means that your extensions can accept regular PHP file pointers as parameters to, and return streams from their functions. The streams API makes this process as painless as possible:
P°φklad 43-2. How to accept a stream as a parameter
|
P°φklad 43-3. How to return a stream from a function
|
Since streams are automatically cleaned up, it's tempting to think that we can get away with being sloppy programmers and not bother to close the streams when we are done with them. Although such an approach might work, it is not a good idea for a number of reasons: streams hold locks on system resources while they are open, so leaving a file open after you have finished with it could prevent other processes from accessing it. If a script deals with a large number of files, the accumulation of the resources used, both in terms of memory and the sheer number of open files, can cause web server requests to fail. Sounds bad, doesn't it? The streams API includes some magic that helps you to keep your code clean - if a stream is not closed by your code when it should be, you will find some helpful debugging information in you web server error log.
Poznßmka: Always use a debug build of PHP when developing an extension (--enable-debug when running configure), as a lot of effort has been made to warn you about memory and stream leaks.
In some cases, it is useful to keep a stream open for the duration of a request, to act as a log or trace file for example. Writing the code to safely clean up such a stream is not difficult, but it's several lines of code that are not strictly needed. To save yourself the trouble of writing the code, you can mark a stream as being OK for auto cleanup. What this means is that the streams API will not emit a warning when it is time to auto-cleanup a stream. To do this, you can use php_stream_auto_cleanup().
(no version information, might be only in CVS)
php_stream_stat_path -- Gets the status for a file or URLphp_stream_stat_path() examines the file or URL specified by path and returns information such as file size, access and creation times and so on. The return value is 0 on success, -1 on error. For more information about the information returned, see php_stream_statbuf.
(no version information, might be only in CVS)
php_stream_stat -- Gets the status for the underlying storage associated with a streamphp_stream_stat() examines the storage to which stream is bound, and returns information such as file size, access and creation times and so on. The return value is 0 on success, -1 on error. For more information about the information returned, see php_stream_statbuf.
(no version information, might be only in CVS)
php_stream_open_wrapper -- Opens a stream on a file or URLphp_stream_open_wrapper() opens a stream on the file, URL or other wrapped resource specified by path. Depending on the value of mode, the stream may be opened for reading, writing, appending or combinations of those. See the table below for the different modes that can be used; in addition to the characters listed below, you may include the character 'b' either as the second or last character in the mode string. The presence of the 'b' character informs the relevant stream implementation to open the stream in a binary safe mode.
The 'b' character is ignored on all POSIX conforming systems which treat binary and text files in the same way. It is a good idea to specify the 'b' character whenever your stream is accessing data where the full 8 bits are important, so that your code will work when compiled on a system where the 'b' flag is important.
Any local files created by the streams API will have their initial permissions set according to the operating system defaults - under Unix based systems this means that the umask of the process will be used. Under Windows, the file will be owned by the creating process. Any remote files will be created according to the URL wrapper that was used to open the file, and the credentials supplied to the remote server.
Open text file for reading. The stream is positioned at the beginning of the file.
Open text file for reading and writing. The stream is positioned at the beginning of the file.
Truncate the file to zero length or create text file for writing. The stream is positioned at the beginning of the file.
Open text file for reading and writing. The file is created if it does not exist, otherwise it is truncated. The stream is positioned at the beginning of the file.
Open for writing. The file is created if it does not exist. The stream is positioned at the end of the file.
Open text file for reading and writing. The file is created if it does not exist. The stream is positioned at the end of the file.
options affects how the path/URL of the stream is interpreted, safe mode checks and actions taken if there is an error during opening of the stream. See Stream open options for more information about options.
If opened is not NULL, it will be set to a string containing the name of the actual file/resource that was opened. This is important when the options include USE_PATH, which causes the include_path to be searched for the file. You, the caller, are responsible for calling efree() on the filename returned in this parameter.
Poznßmka: If you specified STREAM_MUST_SEEK in options, the path returned in opened may not be the name of the actual stream that was returned to you. It will, however, be the name of the original resource from which the seekable stream was manufactured.
(no version information, might be only in CVS)
php_stream_read -- Read a number of bytes from a stream into a bufferphp_stream_read() reads up to count bytes of data from stream and copies them into the buffer buf.
php_stream_read() returns the number of bytes that were read successfully. There is no distinction between a failed read or an end-of-file condition - use php_stream_eof() to test for an EOF.
The internal position of the stream is advanced by the number of bytes that were read, so that subsequent reads will continue reading from that point.
If less than count bytes are available to be read, this call will block (or wait) until the required number are available, depending on the blocking status of the stream. By default, a stream is opened in blocking mode. When reading from regular files, the blocking mode will not usually make any difference: when the stream reaches the EOF php_stream_read() will return a value less than count, and 0 on subsequent reads.
(no version information, might be only in CVS)
php_stream_write -- Write a number of bytes from a buffer to a streamphp_stream_write() writes count bytes of data from buf into stream.
php_stream_write() returns the number of bytes that were written successfully. If there was an error, the number of bytes written will be less than count.
The internal position of the stream is advanced by the number of bytes that were written, so that subsequent writes will continue writing from that point.
(no version information, might be only in CVS)
php_stream_eof -- Check for an end-of-file condition on a streamphp_stream_eof() checks for an end-of-file condition on stream.
php_stream_eof() returns the 1 to indicate EOF, 0 if there is no EOF and -1 to indicate an error.
php_stream_getc() reads a single character from stream and returns it as an unsigned char cast as an int, or EOF if the end-of-file is reached, or an error occurred.
php_stream_getc() may block in the same way as php_stream_read() blocks.
The internal position of the stream is advanced by 1 if successful.
(no version information, might be only in CVS)
php_stream_gets -- Read a line of data from a stream into a bufferphp_stream_gets() reads up to count-1 bytes of data from stream and copies them into the buffer buf. Reading stops after an EOF or a newline. If a newline is read, it is stored in buf as part of the returned data. A NUL terminating character is stored as the last character in the buffer.
php_stream_read() returns buf when successful or NULL otherwise.
The internal position of the stream is advanced by the number of bytes that were read, so that subsequent reads will continue reading from that point.
This function may block in the same way as php_stream_read().
php_stream_close() safely closes stream and releases the resources associated with it. After stream has been closed, it's value is undefined and should not be used.
php_stream_close() returns 0 if the stream was closed or EOF to indicate an error. Regardless of the success of the call, stream is undefined and should not be used after a call to this function.
php_stream_flush() causes any data held in write buffers in stream to be committed to the underlying storage.
php_stream_flush() returns 0 if the buffers were flushed, or if the buffers did not need to be flushed, but returns EOF to indicate an error.
php_stream_seek() repositions the internal position of stream. The new position is determined by adding the offset to the position indicated by whence. If whence is set to SEEK_SET, SEEK_CUR or SEEK_END the offset is relative to the start of the stream, the current position or the end of the stream, respectively.
php_stream_seek() returns 0 on success, but -1 if there was an error.
Poznßmka: Not all streams support seeking, although the streams API will emulate a seek if whence is set to SEEK_CUR and offset is positive, by calling php_stream_read() to read (and discard) offset bytes.
The emulation is only applied when the underlying stream implementation does not support seeking. If the stream is (for example) a file based stream that is wrapping a non-seekable pipe, the streams api will not apply emulation because the file based stream implements a seek operation; the seek will fail and an error result will be returned to the caller.
php_stream_tell() returns the internal position of stream, relative to the start of the stream. If there is an error, -1 is returned.
(no version information, might be only in CVS)
php_stream_copy_to_stream -- Copy data from one stream to anotherphp_stream_copy_to_stream() attempts to read up to maxlen bytes of data from src and write them to dest, and returns the number of bytes that were successfully copied.
If you want to copy all remaining data from the src stream, pass the constant PHP_STREAM_COPY_ALL as the value of maxlen.
Poznßmka: This function will attempt to copy the data in the most efficient manner, using memory mapped files when possible.
(no version information, might be only in CVS)
php_stream_copy_to_mem -- Copy data from stream and into an allocated bufferphp_stream_copy_to_mem() allocates a buffer maxlen+1 bytes in length using pemalloc() (passing persistent). It then reads maxlen bytes from src and stores them in the allocated buffer.
The allocated buffer is returned in buf, and the number of bytes successfully read. You, the caller, are responsible for freeing the buffer by passing it and persistent to pefree().
If you want to copy all remaining data from the src stream, pass the constant PHP_STREAM_COPY_ALL as the value of maxlen.
Poznßmka: This function will attempt to copy the data in the most efficient manner, using memory mapped files when possible.
(no version information, might be only in CVS)
php_stream_make_seekable -- Convert a stream into a stream is seekablephp_stream_make_seekable() checks if origstream is seekable. If it is not, it will copy the data into a new temporary stream. If successful, newstream is always set to the stream that is valid to use, even if the original stream was seekable.
flags allows you to specify your preference for the seekable stream that is returned: use PHP_STREAM_NO_PREFERENCE to use the default seekable stream (which uses a dynamically expanding memory buffer, but switches to temporary file backed storage when the stream size becomes large), or use PHP_STREAM_PREFER_STDIO to use "regular" temporary file backed storage.
Tabulka 43-1. php_stream_make_seekable() return values
Value | Meaning |
---|---|
PHP_STREAM_UNCHANGED | Original stream was seekable anyway. newstream is set to the value of origstream. |
PHP_STREAM_RELEASED | Original stream was not seekable and has been released. newstream is set to the new seekable stream. You should not access origstream anymore. |
PHP_STREAM_FAILED | An error occurred while attempting conversion. newstream is set to NULL; origstream is still valid. |
PHP_STREAM_CRITICAL | An error occurred while attempting conversion that has left origstream in an indeterminate state. newstream is set to NULL and it is highly recommended that you close origstream. |
Poznßmka: If you need to seek and write to the stream, it does not make sense to use this function, because the stream it returns is not guaranteed to be bound to the same resource as the original stream.
Poznßmka: If you only need to seek forwards, there is no need to call this function, as the streams API will emulate forward seeks when the whence parameter is SEEK_CUR.
Poznßmka: If origstream is network based, this function will block until the whole contents have been downloaded.
Poznßmka: NEVER call this function with an origstream that is reference by a file pointer in a PHP script! This function may cause the underlying stream to be closed which could cause a crash when the script next accesses the file pointer!
Poznßmka: In many cases, this function can only succeed when origstream is a newly opened stream with no data buffered in the stream layer. For that reason, and because this function is complicated to use correctly, it is recommended that you use php_stream_open_wrapper() and pass in PHP_STREAM_MUST_SEEK in your options instead of calling this function directly.
(no version information, might be only in CVS)
php_stream_cast -- Convert a stream into another form, such as a FILE* or socketphp_stream_cast() attempts to convert stream into a resource indicated by castas. If ret is NULL, the stream is queried to find out if such a conversion is possible, without actually performing the conversion (however, some internal stream state *might* be changed in this case). If flags is set to REPORT_ERRORS, an error message will be displayed is there is an error during conversion.
Poznßmka: This function returns SUCCESS for success or FAILURE for failure. Be warned that you must explicitly compare the return value with SUCCESS or FAILURE because of the underlying values of those constants. A simple boolean expression will not be interpreted as you intended.
Tabulka 43-1. Resource types for castas
Value | Meaning |
---|---|
PHP_STREAM_AS_STDIO | Requests an ANSI FILE* that represents the stream |
PHP_STREAM_AS_FD | Requests a POSIX file descriptor that represents the stream |
PHP_STREAM_AS_SOCKETD | Requests a network socket descriptor that represents the stream |
In addition to the basic resource types above, the conversion process can be altered by using the following flags by using the OR operator to combine the resource type with one or more of the following values:
Tabulka 43-2. Resource types for castas
Value | Meaning |
---|---|
PHP_STREAM_CAST_TRY_HARD | Tries as hard as possible, at the expense of additional resources, to ensure that the conversion succeeds |
PHP_STREAM_CAST_RELEASE | Informs the streams API that some other code (possibly a third party library) will be responsible for closing the underlying handle/resource. This causes the stream to be closed in such a way the underlying handle is preserved and returned in ret. If this function succeeds, stream should be considered closed and should no longer be used. |
Poznßmka: If your system supports fopencookie() (systems using glibc 2 or later), the streams API will always be able to synthesize an ANSI FILE* pointer over any stream. While this is tremendously useful for passing any PHP stream to any third-party libraries, such behaviour is not portable. You are requested to consider the portability implications before distributing you extension. If the fopencookie synthesis is not desirable, you should query the stream to see if it naturally supports FILE* by using php_stream_is()
Poznßmka: If you ask a socket based stream for a FILE*, the streams API will use fdopen() to create it for you. Be warned that doing so may cause data that was buffered in the streams layer to be lost if you intermix streams API calls with ANSI stdio calls.
See also php_stream_is() and php_stream_can_cast().
(no version information, might be only in CVS)
php_stream_can_cast -- Determines if a stream can be converted into another form, such as a FILE* or socketThis function is equivalent to calling php_stream_cast() with ret set to NULL and flags set to 0. It returns SUCCESS if the stream can be converted into the form requested, or FAILURE if the conversion cannot be performed.
Poznßmka: Although this function will not perform the conversion, some internal stream state *might* be changed by this call.
Poznßmka: You must explicitly compare the return value of this function with one of the constants, as described in php_stream_cast().
See also php_stream_cast() and php_stream_is().
(no version information, might be only in CVS)
php_stream_is_persistent -- Determines if a stream is a persistent streamphp_stream_is_persistent() returns 1 if the stream is a persistent stream, 0 otherwise.
(no version information, might be only in CVS)
php_stream_is -- Determines if a stream is of a particular typephp_stream_is() returns 1 if stream is of the type specified by istype, or 0 otherwise.
Tabulka 43-1. Values for istype
Value | Meaning |
---|---|
PHP_STREAM_IS_STDIO | The stream is implemented using the stdio implementation |
PHP_STREAM_IS_SOCKET | The stream is implemented using the network socket implementation |
PHP_STREAM_IS_USERSPACE | The stream is implemented using the userspace object implementation |
PHP_STREAM_IS_MEMORY | The stream is implemented using the grow-on-demand memory stream implementation |
Poznßmka: The PHP_STREAM_IS_XXX "constants" are actually defined as pointers to the underlying stream operations structure. If your extension (or some other extension) defines additional streams, it should also declare a PHP_STREAM_IS_XXX constant in it's header file that you can use as the basis of this comparison.
Poznßmka: This function is implemented as a simple (and fast) pointer comparison, and does not change the stream state in any way.
See also php_stream_cast() and php_stream_can_cast().
(no version information, might be only in CVS)
php_stream_passthru -- Outputs all remaining data from a streamphp_stream_passthru() outputs all remaining data from stream to the active output buffer and returns the number of bytes output. If buffering is disabled, the data is written straight to the output, which is the browser making the request in the case of PHP on a web server, or stdout for CLI based PHP. This function will use memory mapped files if possible to help improve performance.
(no version information, might be only in CVS)
php_register_url_stream_wrapper -- Registers a wrapper with the Streams APIphp_register_url_stream_wrapper() registers wrapper as the handler for the protocol specified by protocol.
Poznßmka: If you call this function from a loadable module, you *MUST* call php_unregister_url_stream_wrapper() in your module shutdown function, otherwise PHP will crash.
(no version information, might be only in CVS)
php_unregister_url_stream_wrapper -- Unregisters a wrapper from the Streams APIphp_unregister_url_stream_wrapper() unregisters the wrapper associated with protocol.
(no version information, might be only in CVS)
php_stream_open_wrapper_ex -- Opens a stream on a file or URL, specifying contextphp_stream_open_wrapper_ex() is exactly like php_stream_open_wrapper(), but allows you to specify a php_stream_context object using context. To find out more about stream contexts, see XXX
(no version information, might be only in CVS)
php_stream_open_wrapper_as_file -- Opens a stream on a file or URL, and converts to a FILE*php_stream_open_wrapper_as_file() is exactly like php_stream_open_wrapper(), but converts the stream into an ANSI stdio FILE* and returns that instead of the stream. This is a convenient shortcut for extensions that pass FILE* to third-party libraries.
(no version information, might be only in CVS)
php_stream_filter_register_factory -- Registers a filter factory with the Streams APIUse this function to register a filter factory with the name given by filterpattern. filterpattern can be either a normal string name (i.e. myfilter) or a global pattern (i.e. myfilterclass.*) to allow a single filter to perform different operations depending on the exact name of the filter invoked (i.e. myfilterclass.foo, myfilterclass.bar, etc...)
Poznßmka: Filters registered by a loadable extension must be certain to call php_stream_filter_unregister_factory() during MSHUTDOWN.
(no version information, might be only in CVS)
php_stream_filter_unregister_factory -- Deregisters a filter factory with the Streams APIDeregisters the filterfactory specified by the filterpattern making it no longer available for use.
Poznßmka: Filters registered by a loadable extension must be certain to call php_stream_filter_unregister_factory() during MSHUTDOWN.
The functions listed in this section work on local files, as well as remote files (provided that the wrapper supports this functionality!).
(no version information, might be only in CVS)
php_stream_opendir -- Open a directory for file enumerationphp_stream_opendir() returns a stream that can be used to list the files that are contained in the directory specified by path. This function is functionally equivalent to POSIX opendir(). Although this function returns a php_stream object, it is not recommended to try to use the functions from the common API on these streams.
(no version information, might be only in CVS)
php_stream_readdir -- Fetch the next directory entry from an opened dirphp_stream_readdir() reads the next directory entry from dirstream and stores it into ent. If the function succeeds, the return value is ent. If the function fails, the return value is NULL. See php_stream_dirent for more details about the information returned for each directory entry.
(no version information, might be only in CVS)
php_stream_rewinddir -- Rewind a directory stream to the first entryphp_stream_rewinddir() rewinds a directory stream to the first entry. Returns 0 on success, but -1 on failure.
(no version information, might be only in CVS)
php_stream_fopen_from_file -- Convert an ANSI FILE* into a streamphp_stream_fopen_from_file() returns a stream based on the file. mode must be the same as the mode used to open file, otherwise strange errors may occur when trying to write when the mode of the stream is different from the mode on the file.
(no version information, might be only in CVS)
php_stream_fopen_tmpfile -- Open a FILE* with tmpfile() and convert into a streamphp_stream_fopen_from_file() returns a stream based on a temporary file opened with a mode of "w+b". The temporary file will be deleted automatically when the stream is closed or the process terminates.
(no version information, might be only in CVS)
php_stream_fopen_temporary_file -- Generate a temporary file name and open a stream on itphp_stream_fopen_temporary_file() generates a temporary file name in the directory specified by dir and with a prefix of pfx. The generated file name is returns in the opened parameter, which you are responsible for cleaning up using efree(). A stream is opened on that generated filename in "w+b" mode. The file is NOT automatically deleted; you are responsible for unlinking or moving the file when you have finished with it.
(no version information, might be only in CVS)
php_stream_sock_open_from_socket -- Convert a socket descriptor into a streamphp_stream_sock_open_from_socket() returns a stream based on the socket. persistent is a flag that controls whether the stream is opened as a persistent stream. Generally speaking, this parameter will usually be 0.
(no version information, might be only in CVS)
php_stream_sock_open_host -- Open a connection to a host and return a streamphp_stream_sock_open_host() establishes a connect to the specified host and port. socktype specifies the connection semantics that should apply to the connection. Values for socktype are system dependent, but will usually include (at a minimum) SOCK_STREAM for sequenced, reliable, two-way connection based streams (TCP), or SOCK_DGRAM for connectionless, unreliable messages of a fixed maximum length (UDP).
persistent is a flag the controls whether the stream is opened as a persistent stream. Generally speaking, this parameter will usually be 0.
If not NULL, timeout specifies a maximum time to allow for the connection to be made. If the connection attempt takes longer than the timeout value, the connection attempt is aborted and NULL is returned to indicate that the stream could not be opened.
Poznßmka: The timeout value does not include the time taken to perform a DNS lookup. The reason for this is because there is no portable way to implement a non-blocking DNS lookup.
The timeout only applies to the connection phase; if you need to set timeouts for subsequent read or write operations, you should use php_stream_sock_set_timeout() to configure the timeout duration for your stream once it has been opened.
The streams API places no restrictions on the values you use for socktype, but encourages you to consider the portability of values you choose before you release your extension.
(no version information, might be only in CVS)
php_stream_sock_open_unix -- Open a Unix domain socket and convert into a streamphp_stream_sock_open_unix() attempts to open the Unix domain socket specified by path. pathlen specifies the length of path. If timeout is not NULL, it specifies a timeout period for the connection attempt. persistent indicates if the stream should be opened as a persistent stream. Generally speaking, this parameter will usually be 0.
Poznßmka: This function will not work under Windows, which does not implement Unix domain sockets. A possible exception to this rule is if your PHP binary was built using cygwin. You are encouraged to consider this aspect of the portability of your extension before it's release.
Poznßmka: This function treats path in a binary safe manner, suitable for use on systems with an abstract namespace (such as Linux), where the first character of path is a NUL character.
php_stream_dirent
char d_name[MAXPATHLEN] |
d_name holds the name of the file, relative to the directory being scanned.
typedef struct _php_stream_ops { /* all streams MUST implement these operations */ size_t (*write)(php_stream *stream, const char *buf, size_t count TSRMLS_DC); size_t (*read)(php_stream *stream, char *buf, size_t count TSRMLS_DC); int (*close)(php_stream *stream, int close_handle TSRMLS_DC); int (*flush)(php_stream *stream TSRMLS_DC); const char *label; /* name describing this class of stream */ /* these operations are optional, and may be set to NULL if the stream does not * support a particular operation */ int (*seek)(php_stream *stream, off_t offset, int whence TSRMLS_DC); char *(*gets)(php_stream *stream, char *buf, size_t size TSRMLS_DC); int (*cast)(php_stream *stream, int castas, void **ret TSRMLS_DC); int (*stat)(php_stream *stream, php_stream_statbuf *ssb TSRMLS_DC); } php_stream_ops; |
struct _php_stream_wrapper { php_stream_wrapper_ops *wops; /* operations the wrapper can perform */ void *abstract; /* context for the wrapper */ int is_url; /* so that PG(allow_url_fopen) can be respected */ /* support for wrappers to return (multiple) error messages to the stream opener */ int err_count; char **err_stack; } php_stream_wrapper; |
typedef struct _php_stream_wrapper_ops { /* open/create a wrapped stream */ php_stream *(*stream_opener)(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC); /* close/destroy a wrapped stream */ int (*stream_closer)(php_stream_wrapper *wrapper, php_stream *stream TSRMLS_DC); /* stat a wrapped stream */ int (*stream_stat)(php_stream_wrapper *wrapper, php_stream *stream, php_stream_statbuf *ssb TSR$ /* stat a URL */ int (*url_stat)(php_stream_wrapper *wrapper, char *url, php_stream_statbuf *ssb TSRMLS_DC); /* open a "directory" stream */ php_stream *(*dir_opener)(php_stream_wrapper *wrapper, char *filename, char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC TSRMLS_DC); const char *label; /* Delete/Unlink a file */ int (*unlink)(php_stream_wrapper *wrapper, char *url, int options, php_stream_context *context TSRMLS_DC); } php_stream_wrapper_ops; |
struct _php_stream_filter { php_stream_filter_ops *fops; void *abstract; /* for use by filter implementation */ php_stream_filter *next; php_stream_filter *prev; int is_persistent; /* link into stream and chain */ php_stream_filter_chain *chain; /* buffered buckets */ php_stream_bucket_brigade buffer; } php_stream_filter; |
typedef struct _php_stream_filter_ops { php_stream_filter_status_t (*filter)( php_stream *stream, php_stream_filter *thisfilter, php_stream_bucket_brigade *buckets_in, php_stream_bucket_brigade *buckets_out, size_t *bytes_consumed, int flags TSRMLS_DC); void (*dtor)(php_stream_filter *thisfilter TSRMLS_DC); const char *label; } php_stream_filter_ops; |
One or more of these values can be combined using the OR operator.
This is the default option for streams; it requests that the include_path is not to be searched for the requested file.
Requests that the include_path is to be searched for the requested file.
Requests that registered URL wrappers are to be ignored when opening the stream. Other non-URL wrappers will be taken into consideration when decoding the path. There is no opposite form for this flag; the streams API will use all registered wrappers by default.
On Windows systems, this is equivalent to IGNORE_URL. On all other systems, this flag has no effect.
Requests that the underlying stream implementation perform safe_mode checks on the file before opening the file. Omitting this flag will skip safe_mode checks and allow opening of any file that the PHP process has rights to access.
If this flag is set, and there was an error during the opening of the file or URL, the streams API will call the php_error function for you. This is useful because the path may contain username/password information that should not be displayed in the browser output (it would be a security risk to do so). When the streams API raises the error, it first strips username/password information from the path, making the error message safe to display in the browser.
This flag is useful when your extension really must be able to randomly seek around in a stream. Some streams may not be seekable in their native form, so this flag asks the streams API to check to see if the stream does support seeking. If it does not, it will copy the stream into temporary storage (which may be a temporary file or a memory stream) which does support seeking. Please note that this flag is not useful when you want to seek the stream and write to it, because the stream you are accessing might not be bound to the actual resource you requested.
Poznßmka: If the requested resource is network based, this flag will cause the opener to block until the whole contents have been downloaded.
If your extension is using a third-party library that expects a FILE* or file descriptor, you can use this flag to request the streams API to open the resource but avoid buffering. You can then use php_stream_cast() to retrieve the FILE* or file descriptor that the library requires.
The is particularly useful when accessing HTTP URLs where the start of the actual stream data is found after an indeterminate offset into the stream.
Since this option disables buffering at the streams API level, you may experience lower performance when using streams functions on the stream; this is deemed acceptable because you have told streams that you will be using the functions to match the underlying stream implementation. Only use this option when you are sure you need it.
Tato sekce se zab²vß obecn²mi otßzkami okolo PHP: co to je a co to d∞lß.
PHP je skriptovacφ jazyk vklßdan² do HTML. Mnoho jeho syntaxe je vyp∙jΦeno z C, Javy a Perlu s n∞kolika p°idan²mi prost°edky specifick²mi pro PHP. Cφlem jazyka je umo╛nit v²vojß°∙m web∙ rychleji psßt dynamicky generovanΘ strßnky.
Mil² ·vod do PHP od Stiga Sæther Bakkena najdete tady na strßnkßch Zendu. Voln∞ k dispozici je takΘ mnoho materißl∙ PHP konference.
PHP je zkratka pro PHP: Hypertext Preprocessor. Mnoho lidφ m∙╛e mßst, ╛e prvnφ slovo akronymu je takΘ akronym. Tomuto typu zkratek se °φkß rekurzφvnφ akronym. Zv∞davci mohou nav╣tφvit Free On-Line Dictionary of Computing, kde najdou vφce informacφ o rekurzφvnφch akronymech.
PHP/FI 2.0 je Φasnß a ji╛ nepodporovanß verze PHP. PHP 3 je nßslednφk PHP/FI 2.0 a je mnohem lep╣φ. PHP 4 je zatφm poslednφ generacφ PHP a mß pod kapotou Zend engine.
Ano. Podφvejte se do souboru INSTALL, kter² je p°ilo╛en k distribuci zdrojov²ch soubor∙ PHP 4. P°eΦt∞te si i p°φslu╣n² dodatek.
Existuje n∞kolik Φlßnk∙, kterΘ o tom napsali auto°i PHP 4. Tady je seznam n∞kter²ch d∙le╛it∞j╣φch nov²ch prvk∙:
Roz╣φ°en² API modul
Zobecn∞n² sestavovacφ (kompilaΦnφ) proces pod UNIXem
GenerickΘ rozhranφ pro WWW servery, kterΘ podporuje takΘ multithreadovΘ servery
Vylep╣en² zv²raz≥ovaΦ syntaxe
Nativnφ podpora HTTP sessions
Podpora v²stupnφho bufferingu
Siln∞j╣φ konfiguraΦnφ systΘm
Reference counting
M∞li byste nav╣tφvit databßzi chyb (PHP Bug Database) a ujistit se, zda nalezenß chyba ji╛ nenφ v seznamu znßm²ch chyb. Pokud ji tam nenajdete, pou╛ijte formulß° pro ohla╣ovßnφ chyb. Je d∙le╛itΘ pou╛φt databßzi chyb namφsto posφlßnφ zprßvy do distribuΦnφho seznamu, proto╛e chyba bude mφt p°i°azeno svΘ Φφslo a bude potom mo╛nΘ, abyste se sem pozd∞ji vrßtili a zkontrolovali stav chyby. Chybovou databßzi najdete na http://bugs.php.net/.
Tato Φßst se zab²vß zßle╛itostmi o tom, jak m∙╛ete navßzat kontakt s PHP komunitou. Nejlep╣φm zp∙sobem jsou e-mailovΘ konference.
Pozn. p°ekladatele: ╚e╣tina nemß adekvßtnφ termφn pro "mailing list". Proto╛e se b∞╛n∞ pou╛φvß termφn∙ "e-mailovß konference" nebo "konference", budu je pou╛φvat i zde, i kdy╛ to nenφ ·pln∞ nejlep╣φ °e╣enφ.
Samoz°ejm∞! Je mnoho konferencφ pro r∙znΘ zßle╛itosti. Kompletnφ seznam t∞chto konferencφ m∙╛ete najφt na na╣φ strßnce Podpora.
V∞t╣ina konferencφ pat°φ do t°φdy php-general, tedy obecnΘ zßle╛itosti PHP. K p°ihlß╣enφ po╣lete zprßvu na php-general-subscribe@lists.php.net. Do p°edm∞tu zprßvy ani jejφho t∞la nemusφte vklßdat nic specißlnφho. Odhlßsφte se poslßnφm zprßvy na php-general-unsubscribe@lists.php.net.
P°ihlßsit nebo odhlßsit se m∙╛ete takΘ pomocφ rozhranφ na webu na strßnce Podpora.
Je jich nespoΦetn∞ po celΘm sv∞t∞. Mßme nap°. odkazy na n∞kterΘ IRC servery a konference v cizφch jazycφch - na strßnce Podpora.
Pokud mßte problΘmy s p°ihla╣ovßnφm nebo odhla╣ovßnφm konference php-general, m∙╛e to b²t proto, ╛e jejφ software nem∙╛e vyhodnotit sprßvnou e-mailovou adresu k pou╛itφ. Pokud by va╣e adresa byla joeblow@example.com, m∙╛ete poslat p°ihla╣ovacφ po╛adavek na php-general-subscribe-joeblow=example.com@lists.php.net, resp. odhla╣ovacφ na php-general-unsubscribe-joeblow=example.com@lists.php.net. Pro ostatnφ konference pou╛ijte obdobnΘ adresy.
Ano, seznam archiv∙ najdete na strßnce Podpora. P°φsp∞vky do konferencφ se archivujφ takΘ jako zprßvy slu╛by news (protokol NNTP). Server tΘto slu╛by je k dispozici na news://news.php.net/. Existuje takΘ experimentßlnφ webovskΘ rozhranφ pro news server na http://news.php.net/
Jak je PHP den ze dne stßle populßrn∞j╣φ, provoz v konferenci php-general nar∙stal a nynφ p°ichßzφ 150-200 p°φsp∞vk∙ denn∞. Kv∙li tomu je v zßjmu ka╛dΘho, aby pou╛φval tuto konferenci a╛ jako poslednφ mo╛nost potΘ, co hledal v╣ude jinde.
Ne╛ n∞co po╣lete do konference, podφvejte se prosφm do FAQ a do manußlu, zda nem∙╛ete najφt odpov∞d tam. Pokud ji nenajdete, prohlΘdn∞te si archivy konferencφ (viz v²╣e). Kdy╛ mßte problΘmy s instalacφ nebo konfiguracφ PHP, p°eΦt∞te si prosφm v╣echnu p°ilo╛enou dokumentaci a soubory README. Pokud stßle nem∙╛ete najφt nic, co by vßm pomohlo, jste vφce ne╛ vφtßni v konferenci.
P°φsp∞vky jako "PHP mi nechce fungovat! Pomozte mi! Co mßm ╣patn∞?" jsou absolutn∞ k niΦemu. Pokud mßte problΘmy se spou╣t∞nφm a b∞hem PHP, musφte napsat, na jakΘm operaΦnφm systΘmu ho spou╣tφte, o kterou verzi PHP se jednß, jak jste ji zφskali (p°edkompilovan² balφk, CVS, RPM apod.), co jste s nφm ud∞lali, kde to uvßzlo, a p°esnou chybovou zprßvu.
To platφ ·pln∞ stejn∞ i pro jinΘ problΘmy. M∞li byste p°ilo╛it informace o tom, co jste d∞lali, kde to uvßzlo, co jste s tφm zkou╣eli d∞lat a, pokud to lze, p°esnou chybovou zprßvu. Mßte-li problΘmy se zdrojov²m k≤dem, je t°eba p°ilo╛it ten kus k≤du, kter² nepracuje. Nep°iklßdejte vφce k≤du, ne╛ je t°eba! P°φsp∞vek by byl h∙°e Φiteln² a mnoho lidφ by ho kv∙li tomu p°eskoΦilo. Pokud si nejste jisti, kolik informacφ mßte p°ilo╛it do zprßvy, je lΘpe p°idat vφce ne╛ mΘn∞.
Jinou d∙le╛itou v∞cφ, kterou je t°eba mφt na pam∞ti, je sumarizace problΘmu v p°edm∞tu zprßvy. P°edm∞t typu "POMOZTEEE! nebo "Co je to za problΘm?" bude v∞t╣ina Φtenß°∙ ignorovat.
Tato Φßst obsahuje detaily o umφst∞nφ PHP downloadu a zßle╛itostech operaΦnφch systΘm∙.
PHP m∙╛ete stßhnout z kterΘhokoli bodu, kter² je souΦßstφ sφt∞ PHP server∙. Najdete je na http://www.php.net/. M∙╛ete takΘ pou╛φt anonymnφ CVS p°φstup, Φφm╛ zφskßte absolutn∞ nejnov∞j╣φ verzi zdrojov²ch soubor∙. Vφce informacφ najdete na http://cvs.php.net/.
P°edkompilovanΘ verze distribuujeme pouze pro systΘmy Windows, proto╛e nejsme schopni zkompilovat PHP pro v╣echny hlavnφ platformy Linux/UNIX se v╣emi kombinacemφ roz╣φ°enφ. TakΘ si uv∞domte, ╛e mnoho distribucφ Linuxu dnes p°φmo obsahuje PHP. Binßrnφ soubory pro Windows si m∙╛ete stßhnout z na╣φ strßnky Download, pro binßrnφ soubory pro Linux nav╣tivte strßnky distribucφ Linuxu.
Poznßmka: Knihovny oznaΦenΘ * (hv∞zdiΦkou) nejsou vlßknov∞ bezpeΦnΘ a nem∞ly by se pou╛φvat s PHP jako modulem do multithreadov²ch server∙ pod Windows (IIS, Netscape). V UNIXu na tom nezßle╛φ.
LDAP (unix/win) : Netscape Directory (LDAP) SDK 1.1.
Berkeley DB2 (Unix/Win) : http://www.sleepycat.com/.
mSQL* (Win).
Sybase-CT* (Linux, libc5) : Available locally.
Musφte se °φdit instrukcemi dodan²mi s p°φslu╣nou knihovnou. N∞kterΘ knihovny se automaticky detekujφ p°i spu╣t∞nφ skriptu 'configure' pro PHP (nap°. knihovna GD), jinΘ musφte aktivovat pomocφ parametru '--with-EXTENSION' pro 'configure'. Seznam t∞chto parametr∙ zφskßte spu╣t∞nφm 'configure --help'.
5. Zφskal jsem poslednφ verzi zdrojovΘho k≤du PHP z CVS repozitß°e, co pot°ebuji ke kompilaci na Windows?
V prvnφ °ad∞ musφte mφt Microsoft Visual C++ verze 6 (MSVC++ 5 takΘ postaΦφ, ale my pou╛φvßme verzi 6) a budete pot°ebovat n∞jakΘ podp∙rnΘ soubory. Podφvejte se do sekce manußlu o kompilaci PHP pod Windows.
Je to soubor browscap.ini na http://www.garykeith.com/browsers/downloads.asp.
Tato sekce se zab²vß Φast²mi otßzkami okolo vztahu PHP a databßzφ. Ano, PHP dnes m∙╛e virtußln∞ p°istupovat ke kterΘkoli dostupnΘ databßzi.
Na strojφch s Windows m∙╛ete jednodu╣e pou╛φt zabudovanou podporu ODBC a sprßvn² ovladaΦ ODBC.
Na Unixov²ch strojφch m∙╛ete k p°φstupu na Microsoft SQL Servery pou╛φt ovladaΦ Sybase-CT, proto╛e tyto protokoly jsou (alespo≥ z v∞t╣iny) kompatibilnφ. V Sybase p°ipravili volnou verzi pot°ebn²ch knihoven pro Linux. Pro jinΘ UnixovΘ systΘmy musφte kontaktovat Sybase k zφskßnφ sprßvn²ch knihoven. Podφvejte se takΘ na odpov∞∩ na p°φ╣tφ otßzku.
Ano. Pokud pracujete pod Windows 9x/Me nebo NT/2000, v╣echny pot°ebnΘ nßstroje ji╛ mßte k dispozici - m∙╛ete pou╛φt ODBC a ovladaΦe pro ODBC k databßzφm Microsoft Access.
Pokud pou╛φvßte PHP na Unixu a chcete komunikovat s databßzemi MS Access b∞╛φcφch na Windows, budete pot°ebovat ODBC ovladaΦe pro Unix. OpenLink Software mß unixovΘ ovladaΦe pro ODBC, kterΘ zde vyhovφ. Existuje pilotnφ program, kdy si m∙╛ete stßhnout zku╣ebnφ kopii, kterß mß neomezenou zku╣ebnφ dobu; ceny komerΦnφ verze s podporou zaΦφnajφ na 675 USD.
Jinou alternativou je pou╛φt SQL server, kter² mß ODBC ovladaΦe pro Windows a pou╛φt ho k ulo╛enφ dat, ke kter²m pak m∙╛ete p°istupovat z aplikace Microsoft Access (pomocφ ODBC) a z PHP (pomocφ vestav∞n²ch ovladaΦ∙), nebo pou╛φt souborov² meziformßt, kterΘmu rozumφ Access i PHP (nap°. obyΦejnΘ soubory nebo databßze dBase). K tomuto bodu Tim Hayes z OpenLink soiftware pφ╣e:
Pou╛itφ jinΘ databßze jako meziformßtu nenφ dobr² nßpad, pokud m∙╛ete pou╛φt ODBC z PHP p°φmo na va╣φ databßzi - nap°. pomocφ ovladaΦ∙ od OpenLink software. Kdy╛ meziformßt pou╛φt musφte, OpenLink nynφ uvolnil Virtuoso (virtußlnφ databßzov² stroj) pro WinNT, Linux a jinΘ unixovΘ platformy. Nav╣tivte prosφm na╣i website a zdarma si ho stßhn∞te. |
Jednou z prov∞°en²ch mo╛nostφ je pou╛φt MySQL a jeho ODBC ovladaΦe pro Windows a synchronizace databßzφ. Steve Lawrence pφ╣e:
Nainstalujte si na svou platformu MySQL podle p°ilo╛en²ch instrukcφ. Nejnov∞j╣φ verzi zφskßte na www.mysql.com (stahujte z nejbli╛╣φho zrcadla!). Nenφ t°eba ╛ßdnß zvlß╣tnφ konfigurace krom∞ toho, ╛e kdy╛ instalujete databßzi a konfigurujete u╛ivatelsk² ·Φet, m∞li byste do pole "host" p°idat % nebo nßzev poΦφtaΦe s Windows, na kterΘm chcete MySQL spou╣t∞t. Poznamenejte si nßzev serveru, u╛ivatelskΘ jmΘno a heslo.
Stßhn∞te si ovladaΦ MyODBC pro Windows ze strßnek MySQL. Nejnov∞j╣φ verze je myodbc-2_50_19-win95.zip (k dispozici takΘ verze pro NT, stejn∞ tak i zdrojov² k≤d). Nainstalujte ho na poΦφtaΦ s Windows. Funkci m∙╛ete otestovat pomocφ p°ilo╛en²ch utilit.
Vytvo°te u╛ivatelsk² nebo systΘmov² dsn v administrßtoru ODBC, umφst∞nΘm v ovlßdacφch panelech. Zvolte nßzev dsn, vlo╛te nßzev poΦφtaΦe, heslo, port apod. pro databßzi MySQL nakonfigurovanou v kroku 1.
Nainstalujte plnou instalaci Accessu, co╛ zajistφ, ╛e budou k dispozici v╣echny dopl≥ky; budete pot°ebovat alespo≥ podporu ODBC a sprßvu propojen²ch tabulek.
A te∩ to nejzßbavn∞j╣φ! Vytvo°te novou databßzi v Accessu. Klikn∞te prav²m tlaΦφtkem v okn∞ tabulek a vyberte "Propojit tabulky", nebo pod nabφdkou "Soubor" vyberte "NaΦφst externφ data" a potom "Propojit tabulky". A╛ se otev°e dialog, vyberte soubory typu ODBC. Zvolte systΘmov² dsn a nßzev dsn vytvo°enΘho v kroku 3. Vyberte tabulku k propojenφ, stiskn∞te "OK" a je to"! Nynφ m∙╛ete otev°φt tabulku a p°idat/smazat/upravovat data na va╣em MySQL serveru! M∙╛ete takΘ vytvß°et dotazy, importovat/exportovat tabulky do MySQL, vytvß°et formulß°e a sestavy atd.
Tipy a triky:
M∙╛ete vytvo°it tabulky v Accessu, exportovat je do MySQL a potom propojit zp∞t. To urychluje nßvrh tabulek.
Kdy╛ vytvß°φte tabulky v Accessu, musφte mφt definovßn primßrnφ klφΦ kv∙li zßpisu do tabulky. Ujist∞te se, ╛e jste primßrnφ klφΦ v MySQL vytvo°ili p°ed propojenφm do Accessu.
Pokud zm∞nφte tabulku v MySQL, musφte ji znovu p°ipojit do Accessu. Go to tools>add-ins>linked table manager, cruise to your ODBC DSN, and select the table to re-link from there. you can also move your dsn source around there, just hit the always prompt for new location checkbox before pressing ok.
3. Upgradoval jsem na PHP 4 a MySQL mi te∩ hlßsφ "Warning: MySQL: Unable to save result set in ...". Co se d∞je?
Nejspφ╣e se stalo to, ╛e bylo PHP 4 zkompilovßno s volbout '--with-mysql' bez specifikace cesty k MySQL. To znamenß, ╛e PHP pou╛φvß svoji vestav∞nou klientskou knihovnu. Pokud na va╣em systΘmu b∞╛φ aplikace jako PHP 3 (jako paraleln∞ b∞╛φcφ modul Apache) nebo auth-mysql, pou╛φvß jinΘ verze klient∙ MySQL, a je zde tedy konflikt dvou r∙zn²ch verzφ t∞chto klient∙.
P°ekompilovßnφ PHP 4 s p°idßnφm cesty k MySQL do parametru, '--with-mysql=/your/path/to/mysql', obvykle tento problΘm vy°e╣φ.
4. Po instalaci podpory sdφlenΘho MySQL havaruje Apache v moment∞, kdy naΦφtß libphp4.so. Lze to vy°e╣it?
To se stßvß, kdy╛ jsou knihovny MySQL p°ipojovßny s pou╛itφm pthreads. Ov∞°te to pou╛itφm "ldd". Pokud tomu tak je, stßhn∞te si balφk MySQL a zkompilujte zdrojovΘ soubory, nebo p°ekompilujte soubory z RPM balφku a odstra≥te p°epφnaΦ, kter² zapφnß threadov² k≤d klienta. Jeden z t∞chto zp∙sob∙ by m∞l problΘm vy°e╣it. Potom p°ekompilujte PHP s nov²mi knihovnami MySQL.
5. ProΦ dostßvßm chybu, kterß vypadß n∞jak takto: "Warning: 0 is not a MySQL result index in <file> on line <x>" nebo "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>?
Pokou╣φte se pou╛φt indentifikßtor v²sledku, kter² je 0. Nula indikuje, ╛e vß╣ dotaz z n∞jakΘho d∙vodu selhal. Po odeslßnφ dotazu musφte provΘst kontrolu na chyby, d°φv ne╛ se pokusφte pou╛φt vrßcen² indentifikßtor v²sledku. Sprßvn² zp∙sob, jak to ud∞lat, je popsßn nßsledujφcφm k≤dem:
$result = mysql_query("SELECT * FROM tables_priv"); if (!$result) { echo mysql_error(); exit; } |
$result = mysql_query("SELECT * FROM tables_priv") or die("Bad query: ".mysql_error()); |
Tato Φßst se zab²vß Φast²mi otßzkamni ohledn∞ zp∙sobu instalace PHP. PHP je dostupnΘ pro v∞t╣inu OS (v podstat∞ krom∞ MacOS p°e OSX) a v∞t╣inu webovsk²ch server∙.
P°i instalaci PHP postupujte podle instrukcφ v souboru INSTALL v p°φslu╣nΘ distribuci. U╛ivatelΘ Windows by si takΘ m∞li p°eΦφst soubor install.txt. Existuje takΘ soubor s r∙zn²mi fintami pro Windows - najdete ho tady.
[mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress |
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: |
V UNIXu mß b²t implicitn∞ v adresß°i /usr/local/lib. Mnoho lidφ to bude chtφt p°i kompilaci zm∞nit pomocφ parametru --with-config-file-path. Mohli byste ho, nap°φklad, nastavit zhruba takto:
--with-config-file-path=/etc |
Pod Windows je soubor php.ini implicint∞ umφst∞n v adresß°i systΘmu Windows.
2. UNIX: Nainstaloval jsem PHP, ale v╛dy, kdy╛ naΦφtßm dokument, dostanu zprßvu 'Document Contains No Data'! O co jde?
Pravd∞pobn∞ to znamenß, ╛e PHP mß n∞jak² problΘm a padß. Podφvejte se do protokolu chyb, zda se jednß o tento p°φpad a pak zkuste problΘm reprodukovat mal²m testem. Pokud vφte, jak pou╛φvat 'gdb', velmi pom∙╛e, kdy╛ m∙╛ete s va╣φm hlß╣enφm chyby poskytnout v²pis (backtrace). V²vojß°i tak mohou snadn∞ji lokalizovat problΘm. Pou╛φvßte-li PHP jako modul do serveru Apache, zkuste n∞co jako:
Zastavte httpd procesy
gdb httpd
Zastavte httpd procesy
> run -X -f /path/to/httpd.conf
Potom naΦt∞te do prohlφ╛eΦe URL, kde se vyskytl problΘm
> run -X -f /path/to/httpd.conf
Dostanete-li core dump (PHP spadne), gdb by vßs o tom m∞l informovat
napi╣te: bt
Zφskan² v²pis (backtrace) byste m∞li p°ilo╛it k hlß╣enφ chyby. To by se m∞lo poslat na http://bugs.php.net/
Pokud vß╣ skript pou╛φvß funkce pro regulßrnφ v²razy (ereg() a dal╣φ), m∞li byste se ujistit, ╛e jste zkompilovali PHP a Apache se stejn²m balφΦkem pro regulßrnφ v²razy. S PHP a Apachem 1.3.x by se to m∞lo dφt automaticky.
Za p°edpokladu, ╛e se obojφ, jak Apache, tak PHP, instalovalo z balφΦk∙ RPM, bude t°eba "odkomentovat" nebo p°idat do souboru http.conf n∞kterΘ z nßsledujφcφch °ßdk∙ (nebo v╣echny):
# Extra Modules AddModule mod_php.c AddModule mod_php3.c AddModule mod_perl.c # Extra Modules LoadModule php_module modules/mod_php.so LoadModule php3_module modules/libphp3.so /* pro PHP 3 */ LoadModule php4_module modules/libphp4.so /* pro PHP 4 */ LoadModule perl_module modules/libperl.so |
AddType application/x-httpd-php3 .php3 /* pro PHP 3 */ AddType application/x-httpd-php .php /* pro PHP 4 */ |
4. UNIX: Instaloval jsem PHP 3 z balφΦk∙ RPM, ale nekompiluje se s podporou databßze, kterou pot°ebuji! O co tu jde?
Kv∙li tomu, jak se PHP 3 budovalo, nenφ snadnΘ sestavit kompletnφ flexibilnφ RPM balφΦek s PHP. ProblΘm je vy°e╣en v PHP 4. Pro PHP 3 nynφ doporuΦujeme pou╛φvat mechanismus popsan² v souboru INSTALL.REDHAT v distribuci PHP. Pokud trvßte na pou╛itφ RPM verze PHP 3, Φt∞te dßl...
RPM pakovaΦe jsou nastaveny na tvorbu RPM balφΦk∙ k instalaci bez podpory databßzφ kv∙li zjednodu╣enφ instalacφ a proto, ╛e RPM pou╛φvß adresß° /usr/ namφsto standardnφho /usr/local/. Musφt sd∞lit RPM souboru spec, kterΘ databßze podporovat a umφst∞nφ adresß°e nejvy╣╣φ ·rovn∞ databßzovΘho serveru.
Tento p°φklad vysv∞tluje proces p°idßnφ podpory populßrnφho databßzovΘho serveru MySQL, pro instalaci PHP jako modulu do Apache.
V╣echny tyto informace smaoz°ejm∞ mohou b²t upraveny pro libovoln² databßzov² server, kter² PHP podporuje. Pro tento p°φklad budeme p°edpoklßdat, ╛e jste instalovali MySQL a Apache pln∞ z balφΦk∙ RPM.
Nejd°φve odstra≥te mod_php3 :
rpm -e mod_php3 |
Potom vezm∞te zdrojov² balφΦek RPM a spus╗te na n∞m, NE --rebuild
rpm -Uvh mod_php3-3.0.5-2.src.rpm |
Upravte soubor /usr/src/redhat/SPECS/mod_php3.spec
V sekci %build p°idejte databßzovou podporu, kterou chcete, a nastavte cestu.
Pro MySQL byste p°idali
--with-mysql=/usr \ |
./configure --prefix=/usr \ --with-apxs=/usr/sbin/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex |
PotΘ, co jsou provedeny tyto zm∞ny, zkompilujte balφΦek takto:
rpm -bb /usr/src/redhat/SPECS/mod_php3.spec |
Potom balφΦek nainstalujte:
rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm |
5. UNIX: P°idal jsem do Apache patch pro FrontPage Extension a PHP nßhle p°estalo pracovat. Je PHP nekompatibilnφ s FrontPage Extension pro Apache?
Ne, PHP pracuje dob°e i s FrontPage Extension. ProblΘm je v tom, ╛e FrontPage patch modifikuje n∞kterΘ struktury Apache, na kterΘ PHP spolΘhß. P°ekompilovßnφ PHP (pou╛itφm 'make clean ; make') po instalaci FP patche by m∞lo problΘm vy°e╣it.
6. UNIX/Windows: Nainstaloval jsem PHP, ale p°i pokusu naΦφst soubor PHP skriptu do prohlφ╛eΦe se zobrazφ pouze prßzdnß obrazovka.
V prohlφ╛eΦi vyberte funkci 'zobrazit zdrojov² k≤d', nejspφ╣ uvidφte zdrojov² k≤d va╣eho PHP skriptu. To znamenß, ╛e server neposφlß skript k interpretaci. Chyba je n∞kde v konfiguraci serveru - rad∞ji dvakrßt zkontrolujte konfiguraci podle instrukcφ k instalaci PHP.
7. UNIX/Windows: Nainstaloval jsem PHP a kdy╛ chci naΦφst PHP soubor do prohlφ╛eΦe, objevφ se "500 Internal Server Error".
P°i pokusu spustit PHP do╣lo k n∞jakΘ chyb∞. Abyste vid∞li detailn∞j╣φ chybovou zprßvu, z p°φkazovΘ °ßdky, p°ejd∞te do adresß°e se souborem PHP (pod Windows php.exe) a spus╗te php -i. Pokud p°i b∞hu PHP dojde k chyb∞, bude zobrazena odpovφdajφcφ chybovou zprßva, kterß vßm °ekne, co se mß dßl ud∞lat. Pokud zφskßte obrazovku plnou HTML k≤du (v²stup funkce phpinfo()), pak PHP funguje a vß╣ problΘm m∙╛e souviset s konfiguracφ serveru, kterou je pak t°eba dob°e zkontrolovat.
8. N∞kterΘ operaΦnφ systΘmy: Nainstaloval jsem PHP bez chyb, ale nynφ, kdy╛ zkusφm spustit Apache, ohlßsφ se chyby o nedefinovan²ch symbolech:
[mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress |
To aktußln∞ nemß nic spoleΦnΘho s PHP, ale s knihovnami klienta MySQL. N∞kterΘ pot°ebujφ --with-zlib, jinΘ nikoli. Tφmto se zab²vß takΘ MySQL FAQ.
9. Windows: Nainstaloval jsem PHP, ale p°i naΦtenφ strßnky do prohlφ╛eΦe se zobrazφ chyba:
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: |
Tato chybovß zprßva znamenß, ╛e z PHP nemohou vychßzet ╛ßdnß data. Abyste vid∞li detailn∞j╣φ chybovou zprßvu, z p°φkazovΘ °ßdky, p°ejd∞te do adresß°e se souborem PHP (pod Windows php.exe) a spus╗te php -i. Pokud p°i b∞hu PHP dojde k chyb∞, bude zobrazena odpovφdajφcφ chybovou zprßva, kterß vßm °ekne, co se mß dßl ud∞lat. Pokud zφskßte obrazovku plnou HTML k≤du (v²stup funkce phpinfo()), PHP funguje.
Jestli╛e PHP pracuje v p°φkazovΘ °ßdce, zkuste to znovu z prohlφ╛eΦe. Pokud to stßle nefunguje, m∙╛e to b²t jednφm z t∞chto d∙vod∙:
Nastavenφ p°φstupov²ch prßv k souboru se skriptem, k php.exe, php4ts.dll, php.ini nebo n∞jakΘmu roz╣φ°enφ PHP, kterΘ se pokou╣φte naΦφst, je takovΘ, ╛e k nim anonymnφ internetov² u╛ivatel ISUR_<machinename> nemß p°φstup.
Soubor se skriptem neexistuje (nebo p°φpadn∞ nenφ tam, kde si myslφte, ╛e je, relativn∞ ke ko°enovΘmu adresß°i webu). Uv∞domte si, ╛e na IIS m∙╛ete tuto chybu zachytit za╣krtnutφm volby 'check file exists' p°i nastavovßnφ skriptov²ch slu╛eb v Internet Services Manageru. Pokud skript neexistuje, server vrßtφ chybu 404. Dal╣φ v²hodou je to, ╛e IIS provede na souboru se skriptem v╣echny pot°ebnΘ autentikace zalo╛enΘ NTLanMan.
Ujist∞te se, ╛e ka╛d² u╛ivatel, kter² pot°ebuje spou╣t∞t PHP skripty mß prßva pro spou╣t∞nφ php.exe! IIS pou╛φvß anonymnφho u╛ivatele, kter² se p°idß p°i instalaci IIS. Tento u╛ivatel pot°ebuje prßva k php.exe. TakΘ ka╛d² autentikovan² u╛ivatel bude pot°ebovat prßva na spou╣t∞nφ php.exe. A IIS4 musφte sd∞lit, ╛e PHP je skriptovacφ engine.
Tato sekce shrnuje nejΦast∞j╣φ chyby, kterΘ se vyskytujφ p°i sestavovßnφ PHP.
1. Pomocφ anonymnφho p°φstupu do CVS jsem zφskal poslednφ verzi PHP, ale chybφ v nφ skript "configure"!
Musφte mφt nainstalovan² balφk "GNU autoconf", tak╛e m∙╛ete vygenerovat skript "configure" z "configure.in". Po sta╛enφ zdrojov²ch soubor∙ z CVS serveru spus╗te ./buildconf z nejvy╣╣φ adresß°ovΘ ·rovn∞ (pokud nespustφte "configure" s parametrem --enable-maintainer-mode, skript "configure" nebude automaticky aktualizovßn p°i zm∞n∞ souboru "configure.in", tak╛e se musφte ujistit, zda jste to ud∞lali ruΦn∞ potΘ, co byl "configure.in" zm∞n∞n. Jednφm z p°φznak∙ tohoto je nalezenφ element∙ jako @VARIABLE@ v souboru "Makefile" potom, co byl spu╣t∞n "configure" nebo "config.status").
2. Mßm problΘm nakonfigurovat PHP tak, aby fungovalo se serverem Apache. Hlßsφ, ╛e nem∙╛e najφt httpd.h, ale ten je p°esn∞ tam, kde jsem uvedl, ╛e je!
Pot°ebujete sd∞lit konfiguraΦnφmu/instalaΦnφmu skriptu umφst∞nφ nejvy╣╣φ ·rovn∞ zdrojov²ch soubor∙ Apache. To znamenß, ╛e specifikujete '--with-apache=/path/to/apache' a ne '--with-apache=/path/to/apache/src'.
3. Kdy╛ spustφm "configure", hlßsφ to, ╛e nem∙╛e najφt "include" soubory nebo knihovny pro GD, gdbm a n∞jakΘ dal╣φ balφky!
M∙╛ete urΦit, aby skript "configure" hledal hlaviΦkovΘ soubory a knihovny na nestandardnφch mφstech specifikacφ pomocn²ch p°φznak∙ pro C preprocesor a linker, nap°φklad:
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure |
4. Kdy╛ se kompiluje soubor language-parser.tab.c, hlßsφ to chyby, kterΘ °φkajφ 'yytname undeclared'.
Musφte updatovat va╣i verzi programu Bison. Nejnov∞j╣φ verzi najdete na http://www.gnu.org/software/bison/bison.html.
5. Kdy╛ spustφm "make", zdß se, ╛e b∞╛φ dob°e, ale havaruje, kdy╛ se pokou╣φ sestavit koneΦnou aplikaci s hlß╣enφm, ╛e nem∙╛e najφt n∞jakΘ soubory.
N∞kterΘ star╣φ verze programu "make" neuklßdajφ korektn∞ zkompilovanΘ verze soubor∙ umφst∞n²ch v adresß°i funkcφ do tΘho╛ adresß°e. Zkuste spustit "cp *.o functions" a potom znovu 'make', abyste vid∞li, zda to pomohlo. Pokud ano, m∞li byste opravdu nainstalovat nejnov∞j╣φ verzi "GNU make".
Podφvejte se do °ßdku, kde je popsßno sestavovßnφ a ujist∞te se, ╛e byly p°idßny na konec v╣echny pot°ebnΘ knihovny. ╚asto se stßvß, ╛e chybφ '-ldl' a n∞kterΘ knihovny pot°ebnΘ pro podporu databßze, kterou jste urΦili.
Pokud sestavujete pro Apache 1.2.x, nezapomn∞li jste p°idat odpovφdajφcφ informace na °ßdek EXTRA_LIBS v souboru "configure" a spustit skript pro konfiguraci Apache? Pro vφce informacφ se podφvejte do souboru INSTALL, kter² zφskßte s distribuΦnφm balφkem.
N∞kte°φ lidΘ takΘ hlßsili, ╛e pokud sestavovali pro Apache, museli p°idat '-ldl' t∞sn∞ za 'libphp4.a'.
Toto je nynφ velmi snadnΘ. Nßsledujte peΦliv∞ tyto kroky:
Stßhn∞te nejnov∞j╣φ distribuci Apache 1.3 z http://www.apache.org/.
Rozbalte ji n∞kam, nap°φklad do /usr/local/src/apache-1.3.
Zkompilujte PHP nejd°φve spu╣t∞nφm ./configure --with-apache=/<path>/apache-1.3 (nahra∩te <path> aktußlnφ cestou k adresß°i apache-1.3).
Napi╣te 'make' a potom 'make install' k sestavenφ PHP a zkopφrovßnφ pot°ebn²ch soubor∙ do distribuΦnφho stromu Apache.
Zm∞≥te adresß° na /<path>/apache-1.3/src a upravte soubor Configuration. Do souboru p°idejte: AddModule modules/php4/libphp4.a.
Spus╗te './Configure' a potom 'make'.
Nynφ byste m∞li mφst hotovΘ soubory httpd pro prßci s PHP.
Poznßmka: : M∙╛ete pou╛φt takΘ nov² skript ./configure pro Apache. P°eΦt∞te si instrukce v README.configure, kter² je v distribuci Apache. NahlΘdn∞te takΘ do souboru INSTALL z distribuce PHP.
8. Postupoval jsem p°esn∞ podle instrukcφ k instalaci PHP ve verzi jako modul pro Apache na UNIXu, a moje PHP skripty se zobrazujφ v prohlφ╛eΦi nebo se je prohlφ╛eΦ sna╛φ ulo╛it jako soubory.
To znamenß, ╛e PHP modul nenφ z n∞jak²ch d∙vod∙ vyvolßvßn. D°φve, ne╛ budete shßn∞t dal╣φ pomoc, zkontrolujte t°i v∞ci:
Ujist∞te se, ╛e se spou╣tφ prßv∞ ten httpd, kter² jste zkompilovali. Zkuste spustit /path/to/binary/httpd -l
Pokud v seznamu neuvidφte mod_php4.c, potom nespou╣tφte sprßvnou verzi httpd. Najd∞te s instalujte sprßvnou verzi.
Ujist∞te se, ╛e jste p°idali sprßvnou specifikaci Mime Type do soubor∙ .confpro Apache. M∞lo by tam b²t: AddType application/x-httpd-php3 .php3 (pro PHP 3)
nebo AddType application/x-httpd-php .php (pro PHP 4)
TakΘ se ujist∞te, ╛e tento °ßdek AddType nenφ ukryt uvnit° bloku <Virtualhost> nebo <Directory>, co╛ m∙╛e zabrßnit aplikaci pravidla na oblast, kde je umφst∞n testovacφ skript.
KoneΦn∞, implicitnφ umφst∞nφ konfiguraΦnφch soubor∙ Apache se mezi verzemi Apache 1.2 a 1.3 zm∞nilo. M∞li byste ov∞°it, ╛e soubor, do kterΘho jste p°idali °ßdek AddType je ten, kter² je skuteΦn∞ naΦφtßn. M∙╛ete zkusit vlo╛it n∞jakou p°φ╣ernou syntaktickou chybu do souboru httpd.conf nebo ud∞lat n∞jakou jinou zm∞nu tohoto rßzu - uvidφte, zda je soubor sprßvn∞ naΦφtßn.
9. Hlßsφ to pou╛itφ --activate-module=src/modules/php4/libphp4.a, ale tento soubor neexistuje; proto jsem to zm∞nil na --activate-module=src/modules/php4/libmodphp4.a a ono to nefunguje? O co jde?
Uv∞domte si, ╛e soubor libphp4.a nemß existovat. Vytvß°φ ho proces serveru Apache!
10. Kdy╛ zkusφm sestavit Apache s PHP jako╛to statick²m modulem pomocφ --activate-module=src/modules/php4/libphp4.a, hlßsφ to, ╛e m∙j kompilßtor nevyhovuje ANSI.
Toto je zavßd∞jφcφ chybovΘ hlß╣enφ, kterΘ bylo odstran∞no v pozd∞j╣φch verzφch.
Je t°eba zkontrolovat t°i v∞ci. Nejd°φve, z d∙vodu, ╛e kdy╛ Apache vytvß°φ apxs skript v Perlu, n∞kdy ukonΦφ kompilaci bez odpovφdajφcφch prom∞nn²ch. Najd∞te skript apxs (zkuste p°φkaz 'which apxs', n∞kdy b²vß v /usr/local/apache/bin/apxs nebo /usr/sbin/apxs). Otev°te ho a zkontrolujte °ßdky podobnΘ t∞mto:
my $CFG_CFLAGS_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl my $CFG_LD_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl my $CFG_LDFLAGS_SHLIB = 'á'; # nahrazeno pomocφ Makefile.tmpl |
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl my $CFG_LD_SHLIB = 'gcc'; # nahrazeno pomocφ Makefile.tmpl my $CFG_LDFLAGS_SHLIB = q(-shared); # nahrazeno pomocφ Makefile.tmpl |
my $CFG_LIBEXECDIR = 'modules'; # nahrazeno pomocφ APACI install |
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # nahrazeno pomocφ APACI install |
During the 'make' portion of installation, if you encounter problems that look similar to this:
microtime.c: In function `php_if_getrusage': microtime.c:94: storage size of `usg' isn't known microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function) microtime.c:97: (Each undeclared identifier is reported only once microtime.c:97: for each function it appears in.) microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function) make[3]: *** [microtime.lo] Error 1 make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/master/php-4.0.1/ext' make: *** [all-recursive] Error 1 |
Vß╣ systΘm je po╣kozen. Musφte opravit soubory v /usr/include instalacφ balφku glibc-devel, kter² pat°φ k va╣emu glibc. Nemß to absolutn∞ nic spoleΦnΘho s PHP. D∙kaz zφskßte tφmto jednoduch²m testem:
$ cat >test.c <<X #include <sys/resource.h> X $ gcc -E test.c >/dev/null |
13. Chci upgradovat svΘ PHP. Kde najdu tvar °ßdku ./configure, kter² byl pou╛it pro sestavenφ stßvajφcφ instalace PHP?
Kdy╛ se podφvßte do souboru config.nice ve zdrojovΘm stromu souΦasnΘ instalace PHP. Nenφ-li k dispozici, jednodu╣e spus╗te skript
Tato Φßst shrnuje nejΦast∞j╣φ chyby, se kter²mi se m∙╛ete setkat p°i psanφ PHP skript∙.
function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); |
<pre> <?php echo "Tohle by m∞l b²t prvnφ °ßdek."; ?> <?php echo "Tohle by se m∞lo ukßzat na novΘm °ßdku."; ?> </pre> |
1. Cht∞l bych napsat generick² PHP skript, kter² by um∞l zpracovat data z jakΘhokoli formulß°e. Jak se dozvφm, kterΘ prom∞nnΘ metody POST jsou k dispozici?
Ujist∞te se, ╛e mßte v souboru php.ini zapnuto track_vars Od PHP 4.0.3 je tato mo╛nost v╛dy zapnuta. Pokud tomu tak je, vytvo°φ se n∞jakß asociativnφ pole, z nich╛ nejd∙le╛it∞j╣φ je $HTTP_POST_VARS. Tak╛e pro psanφ generickΘho skriptu pro obsluhu prom∞nn²ch metody POST budete pot°ebovat p°ibli╛n∞ toto:
foreach ($HTTP_POST_VARS as $var => $value) { echo "$var = $value<br>\n"; } |
2. Pot°ebuji p°evΘst v╣echny apostrofy (') na zp∞tnß lomφtka nßsledovanß apostrofy. Jak se to dß ud∞lat pomocφ regulßrnφho v²razu?
Nejd°φve se podφvejte na funkci addslashes(). D∞lß p°esn∞ to, co pot°ebujete. M∞li byste se takΘ podφvat na direktivu magic_quotes_gpc v souboru php.ini.
3. Kdy╛ napφ╣u nßsledujφcφ k≤d, v²stup se tiskne v nesprßvnΘm po°adφ:
function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); |
Pro pou╛itφ v²sledk∙ va╣φ funkce ve v²razu (jako je spojenφ s jin²m °et∞zcem v p°φkladu v²╣e), musφte hodnotu vracet (pomocφ vracet), ne tisknout() (pomocφ echo()).
4. Hej, co se stalo s m²mi konci °ßdk∙?
<pre> <?php echo "Tohle by m∞l b²t prvnφ °ßdek."; ?> <?php echo "Tohle by se m∞lo ukßzat na novΘm °ßdku."; ?> </pre> |
V PHP se blok k≤du zakonΦuje bu∩ "?>", nebo "?>\n" (kde \n znamenß nov² °ßdek). Tak╛e ve v²╣e uvedenΘm p°φkladu budou vypsanΘ v∞ty na jedinΘm °ßdku, proto╛e PHP vynechßvß konce °ßdk∙ za koncem bloku. To znamenß, ╛e musφte p°idßvat zvlß╣tnφ konce °ßdk∙ za ka╛d² blok PHP k≤du, aby se vytisklo od°ßdkovßnφ jedinΘ.
ProΦ to PHP d∞lß? P°i formßtovßnφ normßlnφho HTML to obvykle zjednodu╣uje ╛ivot, proto╛e nechcete konce °ßdk∙, n²br╛ chcete vytvo°it extrΘmn∞ dlouhΘ °ßdky nebo jinak zneΦitelnit zdrojov² k≤d.
5. Zobrazila se mi zprßva 'Warning: Cannot send session cookie - headers already sent...' nebo 'Cannot add header information - headers already sent...'.
Funkce header(), set_cookie() a funkce session musφ do v²stupu p°idat hlaviΦky. HlaviΦky je mo╛no posφlat pouze p°ed vlastnφm obsahem. Funkce to ud∞lajφ, pokud PHP b∞╛φ jako modul Apache. Nßsledujφcφ kus k≤du zobrazφ v╣echny hlaviΦky v po╛adavku:
$headers = getallheaders(); foreach ($headers as $name => $content) { echo "headers[$name] = $content<br>\n"; } |
Funkce getallheaders() to ud∞lß, pokud PHP b∞╛φ jako modul do Apache. Nßsledujφcφ kus k≤du zobrazφ v╣echny hlaviΦky v po╛adavku:
$headers = getallheaders(); foreach ($headers as $name => $content) { echo "headers[$name] = $content<br>\n"; } |
BezpeΦnostnφ model IIS je s tφm na ╣tφru. Je to problΘm spoleΦn² v╣em CGI program∙m b∞╛φcφm pod IIS. ╪e╣enφm je vytvo°it obyΦejn² HTML soubor (neparsovan² PHP) jako vstupnφ strßnku do autentikovanΘho adresß°e. Potom se pou╛ije META tag k p°esm∞rovßnφ na PHP strßnku nebo odkaz k ruΦnφmu p°echodu. PHP pak autentikaci zpracuje sprßvn∞. S modulem ISAPI toto nenφ problΘmem. Jin²ch NT webovsk²ch server∙ se problΘm net²kß. Vφce informacφ - viz http://support.microsoft.com/support/kb/articles/q160/4/22.asp.
8. M∙j PHP skript pracuje na IE a Lynxu, ale v Netscapu Φßst v²stupu mizφ. Kdy╛ si zapnu "Zobrazit zdrojov² k≤d", v IE vidφm obsah, v Netscapu nikoliv.
Netscape je striktn∞j╣φ ohledn∞ HTML tag∙ (nap°. tabulek) n∞╛ IE. Kontrola HTML v²stupu pomocφ HTML validßtoru, jako je validator.w3.org, m∙╛e b²t nßpomocna. Nap°φklad chyb∞jφcφ </table> zp∙sobuje v²╣e uveden² problΘm.
IE i Lynx takΘ ignorujφ jakΘkoliv nulovΘ (\0) znaky v HTML proudu, Netscape nikoli. Nejlep╣φ cestou k ov∞°enφ je zkompilovat verzi PHP pro p°φkazovou °ßdku (znßmou jako CGI verze) a spustit skript z p°φkazovΘ °ßdky. Na *NIXech to p°esm∞rujte do od -c a hledejte znaky \0. Pod Windows musφte najφt editor nebo jin² program, kter² umo╛≥uje prohlφ╛enφ binßrnφch soubor∙. Kdy╛ Netscape uvidφ v souboru nulov² znak, typicky nic dal╣φho nezobrazφ, aΦkoli IE i Lynx ano.
Musφte vypnout krßtkΘ tagy v souboru php.ini nastavenφm short_tags na 0 nebo pou╛itφm odpovφdajφcφ direktivy Apache. M∙╛ete takΘ pou╛φt sekci <File> k selektivnφmu nastavenφ.
Jednφm z nejjednodu╣╣φch zp∙sob∙ je povolit pou╛itφ ASP tag∙ v PHP k≤du. To umo╛nφ pou╛φvat odd∞lovaΦe v ASP stylu (<% a %>). N∞kterΘ populßrnφ HTML editory s pracujφ (v tuto chvφli) inteligentn∞ji. K zapnutφ ASP tag∙ musφte v souboru php.ini nastavit prom∞nnou asp_tags nebo pou╛φt p°φslu╣nou direktivu Apache.
11. Kde najdi ·pln² seznam dostupn²ch p°ednastaven²ch prom∞nn²ch, a proΦ to nenφ zdokumentovßno v dokumentaci PHP?
Nejlep╣φ metodou je vlo╛it do strßnky <?php phpinfo(); ?> a naΦφst to do prohlφ╛eΦe. Zobrazφ se informace v╣eho druhu o nainstalovanΘm PHP, vΦetn∞ seznamu prom∞nn²ch prost°edφ i specißlnφch prom∞nn²ch nastavovan²ch HTTP serverem. Tento seznam opravdu nem∙╛e b²t zdokumentovßn v dokumentaci k PHP, prot╛e se li╣φ server od serveru.
12. Zkou╣φm p°istupovat k jednΘ ze standardnφch CGI prom∞nn²ch (jako je $DOCUMENT_ROOT nebo $HTTP_REFERER) v u╛ivatelsky definovanΘ funkci, a nem∙╛e ji to najφt. Co je ╣patn∞?
Prom∞nnΘ prost°edφ jsou normßlnφ globßlnφ prom∞nnΘ, tak╛e je musφte bu∩ deklarovat ve funkci jako globßlnφ prom∞nnΘ (nap°φklad pou╛itφm "global $DOCUMENT_ROOT;") nebo pou╛φt pole globßlnφch prom∞nn²ch (nap°. "$GLOBALS["DOCUMENT_ROOT"]").
PHP a HTML majφ hodn∞ spoleΦnΘho: PHP generuje HTML, a HTML mß informace, kterΘ budou poslßny PHP.
Je vφce situacφ, pro kterΘ je zak≤dovßnφ d∙le╛itΘ. Za p°edpokladu, ╛e mßte string $data, kter² obsahuje °et∞zec, jen╛ mßte nezak≤dovan² a chcete ho poslat, je t°eba se zab²vat t∞mito relevantnφmi problΘmy:
HTML interpretace. Pokud specifikujete nßhodn² (obecn²) °et∞zec, musφte ho dßt do uvozovek a cel² ho zpracovat funkcφ htmlspecialchars() (aby se odstranily/p°evedly specißlnφ znaky jazyka HTML).
URL: sestßvß z n∞kolika Φßstφ. Pokud chcete, aby va╣e data byla interpretovßna jako jedna polo╛ka, musφte je zak≤dovat pomocφ urlencode().
Poznßmka: Je chybou pou╛φt urlencode() pro $data, proto╛e prohlφ╛eΦe samy zaji╣╗ujφ zpracovßnφ dat shodnΘ s funkcφ urlencode(). V╣echny oblφbenΘ prohlφ╛eΦe to d∞lajφ korektn∞. Uv∞domte si, ╛e toto nenφ zßvislΘ na pou╛itΘ metod∞ (nap°. GET nebo POST). V╣imnete si toho v╣ak pouze v p°φpad∞ GET, proto╛e po╛adavky POST jsou obvykle skrytΘ.
Poznßmka: Data jsou v prohlφ╛eΦi zobrazena tak, jak bylo zam²╣leno, proto╛e prohlφ╛eΦ bude sprßvn∞ interpretovat specißlnφ symboly.
Po odeslßnφ, a╗ ji╛ pomocφ GET nebo POST, data budou zak≤dovßna zp∙sobem urlencode pro p°enos a nßsledn∞ p°φmo dek≤dovßna v PHP. Tak╛e v∙bec nepot°ebujete provßd∞t ╛ßdnΘ zak≤dovßnφ/dek≤dovßnφ ruΦn∞, v╣e je provßd∞no automaticky.
Poznßmka: V tomto p°φpad∞ ji╛ opravdu vytvß°φte GET po╛adavek, proto je nutnΘ data k≤dovat ruΦn∞ pomocφ urlencode().
Poznßmka: Musφte takΘ pou╛φt htmlspecialchars() na cel² URL, proto╛e URL je zde hodnotou HTML atributu. V tomto p°φpad∞ prohlφ╛eΦ nejd°φve odstranφ specißlnφ znaky a pak zpracuje URL. PHP sprßvn∞ pochopφ posφlan² URL, proto╛e jste data zak≤dovali pomocφ urlencoded().
M∙╛ete se v╣imnout, ╛e symbol & v URL je nahrazen &. P°esto╛e to v∞t╣ina prohlφ╛eΦ∙ opravφ. pokud na to zapomenete, nenφ to v╛dy mo╛nΘ. Tak╛e pokud vß╣ URL nenφ dynamick², musφte pou╛φt htmlspecialchars().
Kdy╛ odesφlßte formulß°, lze namφsto standardnφho tlaΦφtka pou╛φt obrßzek pomocφ tagu jako
<input type="image" src="image.gif" name="foo"> |
Proto╛e $foo.x a $foo.y jsou v PHP neplatnΘ nßzvy prom∞nn²ch, jsou automaticky p°evedeny na $foo_x a $foo_y. Tzn. teΦky jsou nahrazeny podtr╛φtky.
Aby v²sledky odeslßnφ va╣eho formulß°e byly umφst∞ny v poli (array), nazv∞te elementy <input>, <select> nebo <textarea> tφmto zp∙sobem:
<input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> <input name="MyArray[]"> |
<input name="MyArray[]"> <input name="MyArray[]"> <input name="MyOtherArray[]"> <input name="MyOtherArray[]"> |
<input name="AnotherArray[]"> <input name="AnotherArray[]"> <input name="AnotherArray[email]"> <input name="AnotherArray[phone]"> |
Poznßmka: Specifikace klφc∙ polφ je v HTML nepovinnΘ. Pokud klφΦe nespecifikujete, pole bude vypln∞no podle po°adφ element∙ ve formulß°i. Nß╣ prvnφ p°φklad obsahuje klφΦe 0, 1, 2 a 3.
Viz takΘ Funkce pro prßci s poli a Prom∞nnΘ z vn∞j╣ku PHP.
Tag pro vφcenßsobn² v²b∞r v HTML konstruktu umo╛≥uje u╛ivatel∙m vybrat vφce polo╛ej ze seznamu. Tyto polo╛ky se posφlajφ do handleru pro formulß°. ProblΘm je v tom, ╛e se zpracovßvajφ pod stejn²m jmΘnem. Nap°φklad:
<select name="var" multiple> |
var=option1 var=option2 var=option3 |
<select name="var[]" multiple> |
Uv∞domte si, ╛e pokud pou╛φvßte JavaScript, m∙╛e p°idßnφ [] do nßzvu elementu zp∙sobit problΘmy p°i pokusu odkazovat element jeho jmΘnem. Tehdy pou╛ijte Φφselnou identifikaci elementu, nebo nßzev prom∞nnΘ uzav°ete do apostrof∙ a pou╛ijte ho jako indexaci do pole element∙, nap°φklad:
variable = documents.forms[0].elements['var[]']; |
PHP lze na platformßch Win32 pou╛φt k p°φstupu k objekt∙m COM a DCOM.
1. Zkompiloval jsem knihovnu DLL k n∞jak²m v²poΦt∙m. Existuje zp∙sob, jak tuto knihovnu spustit pod PHP?
Pokud je to jednoduchß DLL knihovna, zatφm ji nenφ mo╛nΘ spustit z PHP. Pokud v╣ak tato knihovna obsahuje COM server, m∙╛ete k nφ p°istupovat, pokud implementuje interface IDispatch.
Existujφ tucty typ∙ VARIANT a jejich kombinacφ. V∞t╣ina z nich je ji╛ podporovßna, ale n∞kolik z nich teprve musφ b²t implementovßno. Pole nejsou podporovßna pln∞. Mezi PHP a COM lze vym∞≥ovat pouze jednorozm∞rnß indexovanß pole. Pokud najdete jinΘ typy, kterΘ nejsou podporovßny, ohla╣te je prosφm jako chybu - bug (pokud ji╛ nebyly ohlß╣eny) a poskytn∞te o nich tolik informacφ, kolik m∙╛ete.
Obecn∞ je, ale proto╛e PHP se nejΦast∞ji pou╛φvß jako webovsk² skriptovacφ jazyk, b∞╛φ v prost°edφ WWW serveru, a proto se vizußlnφ objekty nezobrazujφ na plo╣e displeje serveru. Pokud pou╛φvßte PHP pro aplikaΦnφ skriptovßnφ, nap°. spoleΦn∞ s PHP-GTK, neexistuje omezenφ p°φstupu a manipulace s vizußlnφmi objekty pomocφ COM.
Nem∙╛ete. S instancemi COM se naklßdß jako s prost°edky a proto jsou k dispozici pouze v kontextu jedinΘho skriptu.
Momentßln∞ nenφ mo╛nΘ zachycovat chyby COM krom∞ zp∙sob∙ poskytovan²ch samotn²m PHP (@, track_errors, ...), nicmΘn∞ p°em²╣lφme o zp∙sobu, jak to implementovat.
Ne, v PHP bohu╛el nenφ takov² nßstroj k dispozici.
7. Co znamenß 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'?
Tato chyba m∙╛e mφt vφce p°φΦin:
hodnota CLSID je chybnß
chybφ po╛adovanß DLL knihovna
po╛adovanß komponenta neimplementuje interface IDispatch
P°esn∞ tak, jak spou╣tφte mφstnφ objekty. Musφte pouze pou╛φt IP adresu vzdßlenΘho stroje jako druh² parametr konstruktoru COM.
Ujist∞te se, ╛e je nastaveno com.allow_dcom=true v souboru php.ini.
Upravte soubor php.ini - nastavte tam com.allow_dcom=true.
To nemß s PHP nic spoleΦnΘho. Objekty ActiveX se naΦφtajφ na stran∞ klienta, pokud jsou vy╛ßdßny HTML dokumentem. Nemß to ╛ßdnou souvislost s PHP skriptem a proto nenφ mo╛nß ╛ßdnß p°φmß interakce na stran∞ serveru.
Je to mo╛nΘ pomocφ "moniker∙". Pokud chcete zφskat vφce referencφ na tutΘ╛ instanci, m∙╛ete vytvo°it tuto instanci tφmto zp∙sobem:
$word = new COM("C:\docs\word.doc"); |
Toto vytvo°φ novou instanci, pokud nenφ k dispozici ╛ßdnß b∞╛φcφ instance, resp. vrßtφ handle na b∞╛φcφ instanci.
13. Mßm problΘmy, kdy╛ se pokou╣φm vyvolat metodu objektu COM, kterß vystavuje vφce ne╛ jeden interface. Co mßm d∞lat?
Odpov∞∩ je stejn∞ tak jednoduchß, jako neuspokojivß. Nelze to °φci p°esn∞, ale asi nem∙╛ete d∞lat nic. Pokud mß n∞kdo specifickΘ informace o tomto problΘmu, a╗ laskav∞ napφ╣e sem.
COM+ roz╣i°uje COM rßmec pro sprßvu komponent p°es MTS a MSMQ, ale nenφ to nic zvlß╣tnφho na to, aby PHP muselo takovΘ komponenty podporovat.
15. Jestli╛e m∙╛e PHP manipulovat s objekty COM, lze si p°edstavit pou╛itφ MTS ke sprßv∞ prost°edk∙ komponent spoleΦn∞ s PHP?
PHP samotnΘ nem∙╛e zatφm obsluhovat transakce. Proto kdy╛ nastane chyba, nenφ iniciovßn ╛ßdn² rollback. Pokud pou╛φvßte komponenty, kterΘ podporujφ transakce, budete muset implementovat vlastnφ mechanismus sprßvy transakcφ.
PHP je nejlep╣φ jazyk pro webovΘ programovßnφ, ale co jinΘ jazyky?
ASP ve skuteΦnosti nenφ jazyk jako takov², je to zkratka pro Active Server Pages, jazyky nynφ pou╛φvan²mi k programovßnφ ASP jsou Visual Basic Script a JScript. Nejv∞t╣φ nev²hodou ASP je to, ╛e se jednß o proprietßrnφ systΘm, kter² je nativn∞ pou╛φvßn pouze na serveru Microsoft Internet Information Server (IIS). To omezuje jeho dostupnost na servery zalo╛enΘ na Win32. Existuje n∞kolik projekt∙, kterΘ umo╛≥ujφ b∞h ASP v jin²ch prost°edφch a serverech: InstantASP od Halcyon (komerΦnφ), Chili!Soft ASP od Chili!Soft (komerΦnφ) a OpenASP od ActiveScripting.org (free). O ASP se tvrdφ, ╛e je pomalej╣φ a t∞╛kopßdn∞j╣φ, a stejn∞ tak i mΘn∞ stabilnφ. Z v²hod ASP lze uvΘst to, ╛e primßrn∞ pou╛φvß VBScript, kter² je pom∞rn∞ snadno uchopiteln², pokud ji╛ vφte, jak programovat ve Visual Basicu. Podpora ASP je takΘ standardn∞ zapnuta na IIS, tak╛e se snadno spustφ a b∞╛φ. Komponenty zabudovanΘ v ASP jsou opravdu omezenΘ, tak╛e pokud pot°ebujete pou╛φt "pokroΦilΘ" prvky, jako interakce s FTP servery, musφte si koupit dopl≥ujφcφ komponenty.
Ano, jednφm z nejΦast∞ji zmi≥ovan²ch je asp2php.
O PHP se Φasto tvrdφ, ╛e je rychlej╣φ a efektivn∞j╣φ pro slo╛itΘ programovΘ ·lohy a zkou╣enφ nov²ch my╣lenek. PHP je obecn∞ zmi≥ovßno jako stabiln∞j╣φ a mΘn∞ nßroΦnΘ na systΘmovΘ prost°edky. Cold Fusion mß lep╣φ zpracovßnφ chyb, databßzovou abstrakci a parsovßnφ dat, aΦkoliv databßzovß abstrakce je addressed in PHP 4. Jinou v∞cφ, kterß je uvßd∞na jako siln² nßstroj Cold Fusion, je jeho v²born² vyhledßvacφ engine, av╣ak s tφm, ╛e vyhledßvacφ engine nenφ n∞co, co by m∞lo b²t souΦßstφ skriptovacφho jazyka pro web. PHP b∞╛φ na v∞t╣in∞ existujφcφch platforem; Cold Fusion je k dispozici pouze na Win32, Solarisu, Linuxu a HP/UX. Cold Fusion mß dobrΘ IDE a je obecn∞ jednodu╣╣φ pro zaΦßtky, zatφmco PHP vy╛aduje vφce programßtorsk²ch znalostφ. Produkt Cold Fusion je navr╛en s ohledem na neprogramßtory, PHP je naopak zam∞°eno na programßtory.
Velk² souhrn na toto tΘma od Michaela J. Sheldona bylo poslßno do mailovΘ konfernce PHP. Kopii najdete ¿zde.
Nejv∞t╣φ v²hodou PHP oproti Perlu je, ╛e PHP bylo navr╛eno pro skriptovßnφ pro web, kde╛to cφlem Perlu bylo d∞lat mnohem vφc v∞cφ, a m∙╛e proto b²t velmi komplikovan². Flexibilita/slo╛itost Perlu usnad≥uje napsßnφ k≤du, kter² bude pro jinΘho autora t∞╛ko Φiteln². PHP mß mΘn∞ zmateΦn² a striktn∞j╣φ formßt beze ztrßty flexibility. PHP je oproti Perlu jednodu╣╣φ integrovat do existujφcφho HTML k≤du. PHP obsahuje mnoho z "dobrΘ" funkcionality Perlu: konstrukty, syntaxi apod., bez komplikovanosti, kterou m∙╛e Perl p°inΘst. Perl je dob°e vyzkou╣en² a "opravdov² jazyk", byl k dispozici ji╛ na konci 80. let, ale PHP rychle dospφvß.
PHP mß ji╛ za sebou dlouhou historii: Legendßrnφ PHP 1.0, PHP/FI, PHP 3.0 a PHP 4.0.
PHP/FI 2.0 ji╛ nenφ podporovßno. Podφvejte se prosφm do odpovφdajφcφ Φßsti manußlu, kde najdete informace o p°echodu z PHP/FI 2.0.
Pokud stßle pou╛φvßte PHP 2, v°ele vßm doporuΦujeme upgradovat p°φmo na PHP 4.
PHP mß ji╛ za sebou dlouhou historii: Legendßrnφ PHP 1.0, PHP/FI, PHP 3.0 a PHP 4.0.
PHP 4 bylo navr╛eno tak, aby bylo tak kompatibilnφ se star╣φmi verzemi, jak je to jen mo╛nΘ, a p°itom se ztratila tro╣ka funkΦnosti. Pokud jste opravdu nejistφ ohledn∞ kompatibility, m∞li byste nainstalovat PHP 4 do testovacφho prost°edφ a spou╣t∞t skripty tam.
Viz takΘ p°φslu╣n² dodatek tohoto manußlu.
Mohou existovat otßzky, kterΘ nem∙╛eme umφstit do ╛ßdnΘ jinΘ kategorie. Najdete je zde.
Pokud nemßte archivaΦnφ nßstroj pro prßci se soubory bz2, stßhn∞te si nßstroj pro p°φkazovou °ßdku od RedHatu (viz nφ╛e).
Pokud byste necht∞li pou╛φvat nßstroj pro p°φkazovou °ßdku, m∙╛ete zkusit free software Stuffit Expander, UltimateZip, 7-Zip nebo Quick Zip. Mßte-li WinRAR nebo Power Archiver, m∙╛ete s nφm takΘ snadno dekomprimovat bz2 soubory. Pokud pou╛φvßte Windows Commander, plugin pro bz2 je k dispozici zdarma p°φmo na strßnce programu Windows Commander.
Nßstroj p°φkazovΘ °ßdky bzip2 od firmy Redhat:
U╛ivatelΘ Win2k SP2 a╗ si stßhnou nejnov∞j╣φ verzi 1.0.2, u╛ivatelΘ ostatnφch systΘm∙ Windows by si m∞li stßhnout verzi 1.00. Po sta╛enφ p°ejmenujte spustiteln² soubor na bzip2.exe. Je v²hodnΘ p°esunout ho do adresß°e v nastavenφ cest, nap°. C:\Windows (kde C p°edstavuje disk, kde jsou nainstalovßny Windows).
Pozn.: "lang" p°edstavuje vß╣ jazyk a "x" zvolen² formßt, nap°. pdf. K rozbalenφ souboru php_manual_lang.x.bz2 postupujte podle t∞chto krok∙:
otev°te okno p°φkazovΘ °ßdky
p°ejd∞te do slo╛ky, kde je ulo╛en sta╛en² soubor php_manual_lang.x.bz2
spus╗te bzip2 -d php_manual_lang.x.bz2, rozbalφ php_manual_lang.x do tΘ╛e slo╛ky
V p°φpad∞, ╛e jste stßhli php_manual_lang.tar.bz2 obsahujφcφ v sob∞ vφce HTML soubor∙, je procedura stejnß. Jedin² rozdφl je ten, ╛e obdr╛φte soubor php_manual_lang.tar. O formßtu tar je znßmo, ╛e ho lze zpracovat b∞╛n²mi archivaΦnφmi programy na Windows, jako je WinZip.
PHP urazilo v poslednφch n∞kolika mßlo letech dlouhou cestu. R∙st v jeden z nejprominentn∞j╣φch jazyk∙ ovlßdajφch Web nebyl snadn². Ti z vßs, kdo mßte zßjem dozv∞d∞t se ve zkratce, jak PHP vyrostlo do dne╣nφ podoby, Φt∞te dßle.
PHP je nßstupcem star╣φho produktu, nazvanΘho PHP/FI. PHP/FI vytvo°il Rasmus Lerdorf v roce 1995, na poΦßtku jako jednoduchou sadu skript∙ v jazyce Perl pro zpracovßnφ zßznam∙ o p°φstupech k jeho webu. Tuto sadu nazval 'Personal Home Page Tools'. Proto╛e byla t°eba v∞t╣φ funkΦnost, napsal Rasmus mnohem rozsßhlej╣φ implementaci v C, kterß byla schopna komunikovat s databßzemi aumo╛≥ovala u╛ivatel∙m vyvφjet jednoduchΘ dynamickΘ aplikace pro Web. Rasmus se rozhodl uvolnit zdrojov² k≤d PHP/FI pro v╣echny, tak╛e kdokoli ho m∙╛e pou╛φvat, stejn∞ jako opravovat chyby a vylep╣ovat k≤d.
PHP/FI, co╛ znamenß Personal Home Page / Forms Interpreter, obsahovalo n∞co ze zßkladnφ funkcionality PHP, jak ho znßme dnes. M∞lo prom∞nnΘ perlovskΘho typu, automatickou interpretaci formulß°ov²ch prom∞nn²ch a syntaxi vlo╛enou do HTML. Syntaxe samotnß byla podobnß jazyku Perl, p°esto╛e mnohem omezen∞j╣φ, jednodu╣╣φ a v n∞Φem nekonzistentnφ.
V roce 1997 se PHP/FI 2.0, druhß implementace psanß v C, stala kultovnφ zßle╛itostφ pro (odhadem) tisφce u╛ivatel∙ po celΘm sv∞t∞, a s p°ibli╛n∞ 50.000 domΘnami oznamujφcφmi nainstalovanΘ PHP/FI, co╛ Φφtalo zhruba 1 % v╣ech domΘn na Internetu. I kdy╛ do projektu zaΦalo sv²mi kusy k≤du p°ispφvat vφce lidφ, stßle to byl velk² projekt jednoho mu╛e.
PHP/FI 2.0 bylo oficißln∞ uvoln∞no a╛ v listopadu 1997, potΘ co strßvilo v∞t╣inu svΘho ╛ivota v betaverzφch. Krßtce nato bylo nßsledovßno prvnφ alfaverzφ PHP 3.0.
PHP 3.0 byla prvnφ verze, kterß se velmi blφ╛ila takovΘmu PHP, jak ho znßme dnes. Vytvo°ili ho Andi Gutmans a Zeev Suraski v roce 1997 jako kompletn∞ p°epsan² celek, potΘ co shledali PHP/FI 2.0 v²razn∞ "poddimenzovanΘ" pro v²voj sv²ch aplikacφ pro e-komerci. Ve snaze spolupracovat a zahßjit budovßnφ nad existujφcφ u╛ivatelskou zßkladnou PHP/FI, rozhodli se Andi, Rasmus a Zeev pracovat spoleΦn∞ a prohlßsit PHP 3.0 za oficißlnφho nßstupce PHP/FI 2.0, a v²voj PHP/FI 2.0 byl v podstat∞ zastaven.
Jednou z nejsiln∞j╣φch zbranφ PHP 3.0 byly jeho obrovskΘ mo╛nosti roz╣φ°enφ. K poskytnutφ pevnΘ infrastruktury pro mnoho r∙zn²ch databßzφ, protokol∙ a API koncov²m u╛ivatel∙m, p°ilßkaly mo╛nosti roz╣φ°enφ PHP 3.0 takΘ tucty v²vojß°∙, kte°φ se p°ipojili a vytvo°ili novΘ roz╣i°ujφcφ moduly. Toto byl nesporn∞ klφΦ k obrovskΘmu ·sp∞chu PHP 3.0. Jin²m klφΦov²m prvkem v PHP 3.0 byla podpora objektov∞ orientovanΘ syntaxe a mnohem siln∞j╣φ a konzistentn∞j╣φ syntaxe jazyka.
Nov² jazyk byl uvoln∞n pod nov²m nßzvem, kter² odstranil implikaci omezenΘho osobnφho pou╛itφ, kterou neslo oznaΦenφ PHP/FI 2.0. Byl nazvßn pouze 'PHP', co╛ je rekurzφvnφ akronym - PHP: Hypertext Preprocessor.
Na konci roku 1998 vyrostlo PHP do rozsahu instalacφ v °ßdu (odhadem) desφtek tisφc u╛ivatel∙ a stovek tisφc Web∙. V dob∞ svΘho vrcholu bylo PHP 3.0 instalovßno na p°ibli╛n∞ 10 % v╣ech WWW server∙ na Internetu.
PHP 3.0 bylo oficißln∞ uvoln∞no v Φervnu 1998, potΘ co strßvilo cca 9 m∞sφc∙ ve ve°ejnΘm testovßnφ.
V zim∞ 1998, krßtce po oficißlnφm uvoln∞nφ PHP 3.0, zaΦali Andi Gutmans a Zeev Suraski pracovat na p°espßnφ jßdra PHP. Cφlem nßvrhu bylo zv²╣it v²kon pro slo╛itΘ aplikace a zlep╣it modularitu k≤dovΘ bßze PHP. TakovΘ aplikace byly schopny pracovat s PHP 3.0 (dφky nov²m mo╛nostem a podpo°e ╣irokΘ ╣kßly databßzφ a API od jin²ch tv∙rc∙), ale PHP 3.0 nebylo navr╛eno pro efektivnφ prßci tak nßroΦn²ch aplikacφ.
Nov² engine, nazvan² 'Zend Engine' (sestaven z jejich k°estnφch jmen, Zeev a Andi), ·sp∞╣n∞ splnil cφle nßvrhu a byl uveden v polovin∞ roku 1999. PHP 4.0, zalo╛enΘ na tomto enginu a dopln∞nΘ ╣irokou ╣kßlou nov²ch prvk∙, bylo oficißln∞ uvoln∞no v kv∞tnu 2000, necelΘ dva roky po svΘm p°edch∙dci, PHP 3.0. K podstatn∞ zv²╣enΘmu v²konu tΘto verze, p°idßvß PHP 4.0 dal╣φ klφΦovΘ prvky, jako je podpora pro mnoho WWW server∙, HTTP sessions, buffering v²stupu, bezpeΦn∞j╣φ zp∙soby zpracovßnφ vstup∙ u╛ivatele a mnoho nov²ch jazykov²ch konstrukt∙.
PHP 4 je momentßln∞ poslednφ uvoln∞nou verzφ PHP. Ji╛ byla zapoΦata prßce na modifikaci a vylep╣enφ jßdra Zend Engine k integraci prvk∙, kterΘ byly navr╛eny pro PHP 5.0.
Dnes pou╛φvajφ PHP (odhadem) stovky tisφc v²vojß°∙ a nainstalovanΘ PHP hlßsφ n∞kolik milion∙ server∙ - tj. p°es 20 % domΘn na Internetu.
V²vojov² t²m PHP zahrnuje tucty v²vojß°∙, stejn∞ tak jako tucty dal╣φch lidφ, kte°φ pracujφ na projektech spojen²ch s PHP, jako je PEAR a dokumentaΦnφ projekt.
PEAR, PHP Extension and Application Repository (Φesky repozitß° roz╣φ°enφ a aplokacφ PHP) - p∙vodn∞ PHP Extension and Add-on Repository (repozitß° roz╣φ°enφ a dopl≥k∙) - je PHP verze "foundation classes", a m∙╛e v budoucnu vyr∙st v jeden z klφΦov²ch zp∙sob∙ distribuce jak PHP roz╣φ°enφ, tak roz╣φ°enφ PHP psan²ch v C, mezi v²vojß°e.
PEAR se zrodil v diskusi na mφtinku PHP Developers' Meeting (PDM) v lednu 2000 v Tel Avivu. Byl vytvo°en Stigem S. Bakkenem a delegovßn na jeho prvorozenou dceru Malin Bakken.
Od zaΦßtku roku 2000 PEAR vyrostl ve velk², v²znamn² projekt s velk²m poΦtem v²vojß°∙ pracujφcφch na spoleΦnΘ, ╣iroce pou╛itelnΘ funkcionalit∞ ve prosp∞ch celΘ PHP komunity. PEAR dnes zahrnuje ╣irokou paletu infrastrukturnφch "foundation classes" pro p°φstup k databßzφm, cachovßnφ obsahu e-komerci a mnoho dal╣φho.
PHP Quality Assurance Initiative (iniciativa zaji╣t∞nφ kvality PHP) byla ustavena v lΘt∞ 2000 v rakci na kritiku, ╛e uvoln∞nΘ verze PHP nebyly dostateΦn∞ testovßny pro produkΦnφ prost°edφ. T²m nynφ sestßvß z pevnΘ skupiny v²vojß°∙, kte°φ dob°e rozum∞jφ k≤dovΘ bßzi PHP. Tito v²vojß°i trßvφ mnoho Φasu lokalizacφ a odstra≥ovßnφm chyb v PHP. Navφc je zde mnoho Φlen∙ t²mu, kte°φ to pak testujφ a poskytujφ zp∞tnou vazbu na tyto opravy na ╣irokΘ ╣kßle platforem.
PHP-GTK je PHP °e╣enφ pro psanφ GUI aplikacφ pro stranu klienta. Andrei Zmievski p°ipomφnß plßnovßnφ a proces tvorby PHP-GTK:
Programovßnφ GUI v╛dy pat°ilo mezi mΘ zßjmy a shledal jsem Gtk+ velmi p°φjemn²m toolkitem, krom∞ toho, ╛e programovat s jeho pou╛itφm v C je n∞kdy nudnΘ. Po zku╣enostech s PyGtk a GTK-Perl implemetacemi jsem se rozhodl podφvat se, zda by se dalo v PHP vytvo°it, alespo≥ trochu, rozhranφ ke Gtk+. PoΦφnaje srpnem 2000 jsem m∞l o n∞co vφce volnΘho Φasu, tak╛e jsem zaΦal experimentovat. M²m hlavnφm vodφtkem byla implementace PyGtk, co╛ bylo skuteΦn∞ funkΦn∞ kompletnφ a p°φjemnΘ objektov∞ orientovanΘ rozhranφ. James Henstridge, autor PyGtk, mi poskytl velmi u╛iteΦnΘ rady b∞hem poΦateΦnφho stßdia v²voje.
RuΦnφ psanφ rozhranφ ke v╣em funkcφm Gtk+ bylo zcela mimo hru, tak╛e jsem se zab²val ideou generßtoru k≤du, podobnΘho jako v p°φpad∞ PyGtk. Generßtor k≤du je program v PHP, kter² Φte sadu .defs soubor∙ obsahujφcφch informace o t°φdßch, konstantßch a metodßch Gtk+ a generuje k≤d v C, kter² pro n∞ poskytuje rozhranφ. Co nelze vygenerovat automaticky, m∙╛e b²t napsßno ruΦn∞ v souboru .overrides.
Prßce na generßtoru k≤du a na infrastruktu°e trvala n∞jakou dobu, proto╛e jsem na podzim 2000 mohl prßci na PHP-GTK v∞novat jen mßlo Φasu. Kdy╛ jsem to pak ukßzal Franku Kromannovi, byl zaujat a zaΦal mi pomßhat s pracφ na generßtoru k≤du a implementaci pro Win32. Kdy╛ jsme napsali prvnφ program "Ahoj sv∞te!" a spustili ho, bylo to extrΘmn∞ vzru╣ujφcφ. Trvalo to n∞kolik m∞sφc∙, ne╛ se projekt dostal do prezentovatelnΘho stavu a ·vodnφ verze byla uvoln∞na 1 .b°ezna 2001. P°φb∞h okam╛it∞ zasßhl SlashDot.
S ohledem na to, jak m∙╛e b²t projekt PHP-GTK rozsßhl², zalo╛il jsem pro n∞j samostatnΘ diskusnφ skupiny a CVS repozitß°e, stejn∞ jako (s pomocφ Colina Viebrocka) webovskou strßnku gtk.php.net. TakΘ by bylo t°eba ud∞lat dokumentaci a James Moore p°isp∞chal pomoci s nφ.
Uvoln∞nß verze PHP-GTK si ji╛ zφskala popularitu. Mßme vlastnφ dokumentaΦnφ t²m, manußl se stßle zlep╣uje, lidΘ zaΦφnajφ psßt roz╣φ°enφ pro PHP-GTK, a vφc a vφc vzru╣ujφcφch aplikacφ.
Jak PHP rostlo, zaΦalo b²t pova╛ovßno za celosv∞tov∞ populßrnφ v²vojovou platformu. Jednφm z nejzajφmav∞j╣φch zp∙sob∙ pozorovßnφ tohoto trendu je sledovßnφ knih o PHP vydßvan²ch b∞hem poslednφch let.
Pokud si dob°e pamatujeme, prvnφ kniha zam∞°enß na PHP 'PHP - Dynamische Webauftritte professionell realisieren' - n∞meckß kniha publikovanß v roce 1999, autory byli Egon Schmid, Christian Cartus and Richard Blume. Prvnφ kniha v angliΦtin∞ byla vydßna krßtce nato: 'Core PHP Programming' od Leona Atkinsona. Ob∞ tyto knihy se zab²valy PHP 3.0.
Tyto dv∞ knihy byly prvnφ svΘho druhu - a byly nßsledovßny velk²m mno╛stvφm knih r∙zn²ch autor∙ a vydavatel∙. Existuje p°es 40 knih v angliΦtin∞, 50 knih v n∞mΦin∞ a p°es 20 knih ve francouz╣tin∞. Navφc m∙╛ete najφt knihy o PHP v mnoha dal╣φch jazycφch vΦetn∞ ╣pan∞l╣tiny, korej╣tiny, japon╣tiny a hebrej╣tiny.
Samoz°ejm∞, tento velk² poΦet knih, psan²ch r∙zn²mi autory, vydßvan²ch mnoha vydavateli a jejich dostupnost v tolika jazycφch - je potvrzenφm celosv∞tovΘho ·sp∞chu PHP.
Podle na╣ich nejlep╣φch informacφ byl prvnφ Φlßnek o PHP v ti╣t∞nΘm Φasopisu publikovßn ve French Informatiques Magazine na konci roku 1998 a zab²val se PHP 3.0. Stejn∞ jako v p°φpad∞ knih byl prvnφ v dlouhΘ °ad∞ Φlßnk∙ publikovan²ch v r∙zn²ch uznßvan²ch Φasopisech.
╚lßnky o PHP se objevily v Φasopisech Dr. Dobbs, Linux Enterprise, Linux Magazine a mnoha dal╣φch. ╚lßnky o p°echod z aplikacφ zalo╛en²ch na ASP na platformu PHP pod Windows se objevily dokonce na ryze Microsoftφm MSDN!
PHP 4 a integrovan² Zend engine se vyznaΦuje podstatn∞ vy╣╣φm v²konem a schopnostmi, p°esto v╣ak byla v∞novßna zvlß╣tnφ pΘΦe tomu, dopady na stßvajφcφ k≤d byly co nejmen╣φ. Tak╛e ·pravy va╣eho k≤du z PHP 3 na PHP 4 by m∞ly b²t podstatn∞ snadn∞j╣φ ne╛ p°i p°echodu z PHP/FI 2.0 na PHP 3. Mnoho existujφcφho k≤du pro PHP 3 by m∞lo b²t p°ipraveno b∞╛et bez jak²chkoli zm∞n, m∞li byste v╣ak v∞d∞t o n∞kolika podstatn²ch odli╣nostech a v∞novat dobrou pΘΦi otestovßnφ k≤du p°ed zm∞nou verze produkΦnφho prost°edφ. Nßsledujφcφ text by vßm m∞l poradit, na co se zam∞°it.
Nejnov∞j╣φ operaΦnφ systΘmy poskytujφ mo╛nost versioningu a scopingu. Tyto prost°edky umo╛≥ujφ nechat b∞╛et PHP 3 a PHP 4 souΦasn∞ na jedinΘm serveru Apache.
Funkce je ov∞°ena na t∞chto platformßch:
Linux + nejnov∞j╣φ binutils (testovßna verze binutils 2.9.1.0.25)
Solaris 2.5 a nov∞j╣φ
FreeBSD (testovßny verze 3.2 a 4.0)
K aktivaci tΘto mo╛nosti je t°eba nakonfigurovat PHP 3 a PHP 4 k pou╛itφ APXS (--with-apxs) a nezbytn²ch roz╣φ°enφ vazeb (--enable-versioning). Jinak postupujte zcela standardnφm zp∙sobem (pro konfiguraci, kompilaci a instalaci). Nap°φklad:
Nßzev globßlnφho konfiguraΦnφho souboru, php3.ini, se zm∞nil na php.ini.
V konfiguraΦnφm souboru serveru Apache je pon∞kud vφce zm∞n. Zm∞nily se p°edev╣φm MIME datovΘ typy rozpoznßvanΘ modulem PHP.
application/x-httpd-php3 --> application/x-httpd-php application/x-httpd-php3-source --> application/x-httpd-php-source |
M∙╛ete upravit va╣e konfiguraΦnφ soubory tak, aby pracovaly s ob∞ma verzemi PHP (v zßvislosti na tom, kterß je v p°φslu╣nΘm okam╛iku zkompilovßna pro server) pou╛itφm nßsledujφcφ syntaxe:
AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3-source .php3s AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps |
Zm∞nily se takΘ nßzvy direktiv pro server Apache.
Od verze PHP 4.0 existujφ pouze Φty°i direktivy pro Apache, kterΘ majφ spojitost s PHP:
php_value [PHP directive name] [value] php_flag [PHP directive name] [On|Off] php_admin_value [PHP directive name] [value] php_admin_flag [PHP directive name] [On|Off] |
Jsou dva rozdφly mezi hodnotami "admin" a ostatnφmi:
Hodnoty (nebo p°φznaky) "admin" se mohou objevit pouze v konfiguraΦnφch souborech pro cel² server (nap°. httpd.conf).
Standardnφ hodnoty (nebo p°φznaky) nemohou ovlßdat jistΘ PHP direktivy, nap°φklad bezpeΦn² re╛im (pokud byste mohli zm∞nit nastavenφ bezpeΦnΘho re╛imu v souborech .htaccess, bezpeΦn² re╛im ztrßcφ smysl). Naopak, "admin" hodnoty mohou zasahovat do jak²chkoli PHP direktiv.
Aby byl p°echod na novou verzi snaz╣φ, balφk PHP 4 obsahuje skripty, kterΘ automaticky p°evedou vß╣ konfiguraΦnφ soubor pro Apache a soubory .htaccess tak, aby pracovaly jak s PHP 3, tak s PHP 4. Tyto skripty NEP╪EV┴D╠J═ °ßdky s popisy MIME typ∙! Musφte je upravit ruΦn∞.
K p°evedenφ konfiguraΦnφch soubor∙ pro Apache, spus╗te skript apconf-conv.sh (umφst∞n² v adresß°i scripts/apache/). Nap°φklad:
Vß╣ originßlnφ konfiguraΦnφ soubor bude ulo╛en jako httpd.conf.orig.
K p°evedenφ soubor∙ .htaccess, spus╗te skript aphtaccess-conv.sh (dostupn² rovn∞╛ v adresß°i scripts/apache/):
I v tomto p°φpad∞ budou originßlnφ soubory .htaccess ulo╛eny s koncovkou .orig.
Konverznφ skripty vy╛adujφ nainstalovan² nßstroj awk.
Parsing a provßd∞nφ k≤du jsou nynφ dva naprosto odd∞lenΘ kroky, nic z k≤du v souboru se neprovßdφ d°φve, ne╛ je ·sp∞╣n∞ provedena ·plnß syntaktickß anal²za celΘho souboru a v╣eho, co je t°eba.
Jeden z nov²ch po╛adavk∙, kterΘ vyvstaly tφmto rozd∞lenφm, je, ╛e v╣echny soubory p°ipojenΘ prost°ednictvφm "require" a "include" nynφ musφ b²t syntakticky ·plnΘ. Ji╛ nelze rozlo╛it r∙znΘ Φßsti °φdicφch konstrukcφ p°es hranice soubor∙. Tj. nelze zaΦφt cyklus for nebo while, v∞tvenφ if nebo switch v jednom souboru a ukoΦit je (resp. pokraΦovat pomocφ else, endif, case nebo break) v souboru jinΘm.
Z∙stßvß zcela legßlnφ vlo╛it dal╣φ k≤d do cykl∙ nebo jin²ch °φdicφch struktur, pouze °φdicφ klφΦovß slova a odpovφdajφcφ slo╛enΘ zßvorky {...} musφ b²t ve stejnΘ kompilaΦnφ jednotce (souboru nebo °et∞zci zpracovanΘm pomocφ eval()).
Toto ne╣kodφ tolik jako v²╣e uvedenΘ rozklßdßnφ k≤du, p°esto to m∙╛e b²t pova╛ovßno za velmi ╣patn² styl.
Jinou v∞cφ, kterß ji╛ nenφ mo╛nß, je vzßcn∞ vφdanΘ vracenφ hodnot ze soubor∙ p°ipojen²ch pomocφ "require". Vracenφ hodnot ze soubor∙ p°ipojen²ch "include" je mo╛nΘ i nadßle.
Hlß╣enφ chyb v PHP 3 bylo zalo╛eno na ·rovnφch, p°edstavovan²ch jednoduchou Φφselnou hodnotou. Hodnoty se sΦφtaly pro r∙znΘ ·rovn∞ chyb. ObvyklΘ hodnoty byly 15 pro hlß╣enφ v╣ech chyb a varovßnφ, 7 pro hlß╣enφ v╣eho krom∞ informativnφch zprßv, ohla╣ujφcφch ╣patn² styl a podobnΘ v∞ci.
PHP 4 mß v∞t╣φ mno╛inu ·rovnφ chyb a varovßnφ a p°ichßzφ s konfiguraΦnφm parserem, kter² nynφ umo╛≥uje k nastavenφ pot°ebnΘho chovßnφ pou╛φvat symbolickΘ konstanty.
┌rove≥ hlß╣enφ chyb by m∞la b²t nynφ nastavovßna explicitnφm odebφrßnφm t∞ch ·rovnφ, u kter²ch kterΘ nechceme, aby byly hlß╣eny (pomocφ logickΘ operace XOR se symbolickou konstantou). E_ALL. Znφ to komplikovan∞? No, tak °ekn∞me, ╛e chcete hlßsit v╣echny chyby s v²jimkou jednoduch²ch "stylov²ch" varovßnφ, kterß jsou za°azena do kategorie popsanΘ symbolickou konstantou E_NOTICE. Potom do souboru php.ini vlo╛φte: error_reporting = E_ALL & ~ ( E_NOTICE ). Pokud chcete potlaΦit takΘ v╣echna varovßnφ, p°idßte odpovφdajφcφ konstantu do zßvorek s pou╛itφm binßrnφho operßtoru '|': error_reporting= E_ALL & ~ ( E_NOTICE | E_WARNING ).
Varovßnφ |
Pou╛φvßnφ star²ch hodnot 7 a 15 pro nastavenφ hlß╣enφ chyb je velmi ╣patn² nßpad, proto╛e to potlaΦuje n∞kterΘ nov∞ p°idanΘ t°φdy chyb vΦetn∞ syntaktick²ch. To m∙╛e vΘst k velmi zßhadnΘmu chovßnφ, kdy skripty nepracujφ, ani╛ by vydaly jakoukoli zprßvu o chyb∞. Toto v minulosti vedlo k mno╛stvφ nereprodukovateln²ch bug report∙ (hlß╣enφ o chybßch v PHP), kdy╛ lidΘ hlßsili problΘmy s enginem, kterΘ nebyli schopni vystopovat. Pravou p°φΦinou byla obvykle chyb∞jφcφ uzavφracφ zßvorka '}' v souboru p°ipojenΘm pomocφ "require", a parser je nemohl ohlßsit kv∙li ╣patn∞ nakonfigurovanΘmu hlß╣enφ chyb. Tak╛e kontrola nastavenφ hlß╣enφ chyb by m∞la b²t prvnφ v∞cφ, pokud va╣e skripty ti╣e havarujφ. Zend engine m∙╛e b²t nynφ pova╛ovßn za dost vysp∞l² na to, aby zp∙soboval takovΘ podivnΘ chovßnφ. |
Mnoho existujφcφch k≤d∙ v PHP 3 pou╛φvß jazykovΘ konstrukty, kterΘ by m∞ly b²t pova╛ovßny za velmi ╣patn² styl psanφ, nebo╗ p°esto╛e nynφ d∞lajφ zam²╣lenΘ v∞ci, snadno mohou b²t naru╣eny zm∞nami jinde. PHP 4 bude vydßvat spousty informativnφch zprßv v takov²ch situacφch, kdy se v PHP 3 nic ned∞lo. Snadnou nßpravou je vypnutφ zprßv E_NOTICE, ale obvykle je lep╣φ rad∞ji opravit k≤d.
NejΦast∞j╣φm p°φpadem, kter² bude produkovat takovΘ zprßvy, je pou╛itφ °et∞zc∙ bez uvozovek jako prvk∙ pole. Jak PHP 3, tak PHP 4 je budou interpretovat jako °et∞zce, pokud pod tφmto jmΘnem nenφ znßmo ╛ßdnΘ klφΦovΘ slovo ani konstanta. Pokud by v╣ak n∞jakß takovß konstanta (n∞kde jinde v k≤du) definovßna byla, skript m∙╛e havarovat. M∙╛e to p°er∙st i v bezpeΦnostnφ riziko, pokud n∞jak² ·toΦnφk p°edefinuje °et∞zcovΘ konstanty zp∙sobem, kter² mu dß p°φstupovß prßva, je╛ by mφt nem∞l. Tak╛e PHP 4 vßs bude nynφ varovat, pokud pou╛ijete °et∞zecovou konstantu neuzav°enou do uvozovek, jako nap°φklad $HTTP_SERVER_VARS[REQUEST_METHOD]. Zm∞nφte-li to na $HTTP_SERVER_VARS['REQUEST_METHOD'], parser se uklidnφ a v²razn∞ se zlep╣φ styl a bezpeΦnost va╣eho k≤du.
Dal╣φ v∞cφ v PHP 4 je hlß╣enφ pou╛itφ neinicializovan²ch prom∞nn²ch a prvk∙ polφ.
StatickΘ prom∞nnΘ a inicializßtory polo╛ek t°φd p°ijφmajφ pouze skalßrnφ hodnoty, zatφmco v PHP 3 p°ijφmaly i jakΘkoli platnΘ v²razy. Toto je, op∞t, kv∙li rozd∞lenφ mezi parsing a provßd∞nφ k≤du - kdy╛ parser zpracovßvß inicializßtor, je╣t∞ nenφ proveden ╛ßdn² k≤d.
K inicializaci polo╛ek ve t°φdßch byste m∞li namφsto toho pou╛φvat konstruktory. Pro statickΘ prom∞nnΘ p°esto vzßcn∞ dßvß smysl i n∞co jinΘho ne╛ obyΦejnß hodnota.
Asi nejkontroverzn∞j╣φ zm∞nou v chovßnφ je zm∞na ve funkci empty(). ╪et∞zec obsahujφcφ pouze znak '0' (nula) je nynφ pova╛ovßn za prßzdn², co╛ v PHP 3 nebylo.
Toto novΘ chovßnφ mß smysl u aplikacφ pro web tam, kde v╣echna vstupnφ pole vracφ °et∞zce, i kdy╛ je po╛adovßn Φφseln² vstup, a se schopnostφ PHP provßd∞t automatickou typovou konverzi. Na druhou stranu m∙╛e v n∞kter²ch p°φpadech vΘst k chybnΘmu chovßnφ, jeho╛ p°φΦiny se ╣patn∞ zji╣tujφ, pokud nevφte, co mßte hledat.
SouΦasn∞ s tφm, ╛e se v PHP 4 objevuje mnoho nov²ch prost°edk∙, funkcφ a roz╣φ°enφ, m∙╛ete najφt i funkce, kterΘ oproti verzi 3 chybφ. Mal² poΦet jßdrov²ch funkcφ zmizel, proto╛e nefungujφ s nov²m schΘmatem odd∞lenφ parsingu a provßd∞nφ k≤du v Zend enginu. JinΘ funkce i celß kompletnφ roz╣φ°enφ se staly zastaral²mi tφm, ╛e nov∞j╣φ funkce a roz╣φ°enφ poslou╛φ ve stejnΘ roli lΘpe nebo obecn∞ji. N∞kterΘ funkce jednodu╣e je╣t∞ nebyly portovßny a koneΦn∞ jsou takΘ funkce a roz╣φ°enφ chyb∞jφcφ kv∙li licenΦnφm konflikt∙m.
Tφm, ╛e PHP 4 odd∞luje syntaktickou anal²zu od interpretace, ji╛ nenφ mo╛nΘ m∞nit chovßnφ parseru (nynφ vlo╛enΘho do Zend enginu) b∞hem provßd∞nφ skriptu, kter² byl ji╛ syntakticky zpracovßn. Tak╛e funkce short_tags() ji╛ neexistuje. M∞nit chovßnφ parseru stßle m∙╛ete, a to nastavenφm hodnot v souboru php.ini.
Jin²m prost°edkem PHP 3, kter² nenφ souΦßstφ PHP 4, je zabudovanΘ rozhranφ pro lad∞nφ. Existujφ externφ dopl≥ky pro Zend engine, kterΘ poskytujφ podobnΘ funkce.
Databßzovß roz╣φ°enφ Adabas a Solid ji╛ nejsou k dispozici. Namφsto toho se pou╛φvß roz╣φ°enφ unifikovanΘ rozhranφ ODBC.
unset(), p°esto╛e je stßle k dispozici, je implementovßna jako jazykov² konstrukt namφsto funkce.
To nemß ╛ßdnΘ d∙sledky v chovßnφ unset(), ale test "unset" pomocφ function_exists() vrßtφ FALSE, stejn∞ jako v p°φpad∞ jin²ch jazykov²ch konstrukt∙, kterΘ vypadajφ jako funkce, nap°. echo().
Jinou, praktiΦt∞j╣φ zm∞nou je to, ╛e ji╛ nelze volat unset() nep°φmo, tzn. $func="unset"; $func($somevar) u╛ nebude fungovat.
Roz╣φ°enφ psanß pro PHP 3 nebudou s PHP 4 pracovat, ani na binßrnφ, ani na zdrojovΘ ·rovni. Nenφ t∞╛kΘ portovat tato roz╣φ°enφ na PHP 4, pokud mßte p°φstup k originßlnφmu zdrojovΘmu k≤du. Detailnφ popis procesu portace nenφ souΦßstφ tohoto textu.
PHP 4 p°idßvß nov² mechanismus k substituci za prom∞nnΘ v °et∞zcφch. Nynφ m∙╛ete koneΦn∞ uvnit° °et∞zc∙ p°istupovat k polo╛kßm v objektech a k prvk∙m vφcerozm∞rn²ch polφ.
To se ud∞lß pomocφ uzav°enφ prom∞nn²ch do slo╛en²ch zßvorek se znakem dolaru ihned za otvφracφ zßvorkou: {$...}
K vlo╛enφ hodnoty polo╛ky objektu do °et∞zce jednodu╣e napφ╣ete "text {$obj->member} text", zatφmco v PHP 3 jste museli napsat n∞co jako "text ".$obj->member." text".
Toto by m∞lo vΘst k Φiteln∞j╣φmu k≤du, ale m∙╛e to zp∙sobovat problΘmy s existujφcφmi skripty pro PHP 3. M∙╛ete ale provΘst test na kombinaci znak∙ {$ ve va╣em k≤du a jejich nahrazenφ \{$ pomocφ va╣eho oblφbenΘho nßstroje pro hledßnφ a nßhradu.
V PHP 3 se zavedl ╣patn² zvyk nastavovat cookies opaΦn²m po°adφm volßnφ setcookie() v k≤du. PHP 4 toto napravuje a vytvß°φ hlaviΦkovΘ °ßdky pro cookies v p°esn∞ stejnΘm po°adφ, jak jdou za sebou v k≤du.
Op∞t se mohou vyskytnout problΘmy s existujφcφm k≤dem, ale starΘ chovßnφ bylo tak t∞╛ko pochopitelnΘ, ╛e si zaslou╛ilo zm∞nu, aby se zabrßnilo dal╣φm problΘm∙m v budoucnosti.
Zatφmco v PHP 3 a prvnφch verzφch PHP 4 se p°i obsluze globßlnφch prom∞nn²ch dbalo p°edev╣φm na jednoduchost, nynφ se zam∞°enφ zm∞nilo sm∞rem k vy╣╣φ bezpeΦnosti. Tak╛e jestli╛e nßsledujφcφ p°φpad dob°e fungoval v PHP 3, v PHP 4 je t°eba provΘst unset($GLOBALS["id"]);. Toto je jen jeden aspekt obsluhy globßlnφch prom∞nn²ch. M∞li byste v╛dy pou╛φvat $GLOBALS, v nov∞j╣φch verzφch PHP 4 budete nuceni tak uΦinit ve v∞t╣in∞ p°φpad∙. Vφce o tΘto problematice najdete v Φßsti global (globßlnφ) reference.
PHP 3.0 je od zßkladu p°epsßno. Mß nßle╛it² parser, kter² je mnohem robustn∞j╣φ a konzistentn∞j╣φ ne╛ ten ve verzi 2.0. Verze 3.0 je takΘ signifikantn∞ rychlej╣φ a pou╛φvß mΘn∞ pam∞ti. Logicky, n∞kterß z t∞chto vylep╣enφ nebyla mo╛nß bez zm∞nßch v kompatibilit∞, jak v syntaxi, tak ve funkcionalit∞.
Navφc se v²vojß°i PHP sna╛ili vyΦistit jak syntaxi, tak sΘmantiku PHP, co╛ takΘ p°ineslo n∞jakΘ nekompatibility. Ze ╣ir╣φho pohledu, v∞°φme ╛e tyto zm∞ny jsou pro dobro v∞ci.
Tato kapitola se pokusφ provΘst vßs nekompatibilitami, na kterΘ m∙╛ete narazit p°i p°echodu z PHP/FI 2.0 na PHP 3.0 a pomoci vßm je vy°e╣it. NovΘ prvky zde nebudou zmi≥ovßny, pokud to nebude nutnΘ.
Konverznφ program, kter² automaticky p°evede va╣e starΘ skripty v PHP/FI 2.0, existuje. Najdete ho adresß°i convertor v distribuci PHP 3.0. Tento program v╣ak zachycuje pouze zm∞ny syntaxe, tak╛e p°esto pozorn∞ Φt∞te tuto kapitolu.
Pravd∞podobn∞ prvnφ v∞cφ, kterou zaznamenßte, je, ╛e se zm∞nily otevφracφ a uzavφracφ znaΦky (oznaΦujφ zaΦßtek a konec k≤du PHP). StarΘ znaΦky <? > byly nahrazeny t°emi mo╛n²mi formami:
Alternativnφ zp∙sob, jak zapsat konstrukci if/elseif/else, za pou╛itφ if(); elseif(); else; endif;, nem∙╛e b²t efektivn∞ implementovßna bez podstatnΘho nßr∙stu slo╛itosti 3.0 parseru. Kv∙li tomu se zm∞nila syntaxe:
Stejn∞ jako if..endif, syntaxe while..endwhile byla zm∞n∞na:
Varovßnφ |
Pokud v PHP 3.0 pou╛ijete starou syntaxi while..endwhile, zφskßte nekoneΦnou smyΦku. |
PHP/FI 2.0 pou╛φvalo levou stranu v²raz∙ k urΦenφ, jakΘho typu mß v²sledek b²t. PHP 3.0 bere pro urΦenφ typu v ·vahu ob∞ strany v²razu, a to m∙╛e zp∙sobit nep°edvφdatelnΘ chovßnφ 2.0 skript∙ v PHP 3.0.
Uva╛ujme tento p°φklad:
V PHP/FI 2.0 by to zobrazilo ob∞ hodnoty v $a. V PHP 3.0 se v╣ak nezobrazφ nic. D∙vod je ten, ╛e PHP 2.0 kv∙li tomu, ╛e na levΘ stran∞ je °etezec, provede porovnßnφ °et∞zc∙, a "" se nerovnß "0", tedy se bude prochßzet cyklem. V PHP 3.0 se °et∞zec porovnß s cel²m Φφslem (integer), provede se porovnßnφ cel²ch Φφsel (°et∞zec je p°eveden na celΘ Φφslo). V²sledkem je porovnßnφ atoi(""), co╛ je 0, a variablelist, co╛ je takΘ 0. A proto╛e 0==0, cyklem se v∙bec prochßzet nebude.Oprava pro tento p°φklad je snadnß. Nahra∩te p∙vodnφ konstrukci tφmto:
ChybovΘ zprßvy PHP 3.0 jsou obvykle p°esn∞j╣φ, ne╛ byly ve 2.0. Neuvidφte v╣ak Φßst k≤du, kde nastala chyba. Vypφ╣e se pouze nßzev souboru a Φφslo °ßdku, kde nastala chyba.
V PHP 3.0 se pou╛φvß zkrßcenΘ vyhodnocenφ logick²ch v²raz∙. To znamenß, ╛e pro v²raz jako (1 || test_me()) ji╛ nebude funkce test_me() volßna, proto╛e za 1 ji╛ nic nem∙╛e ovlivnit hodnotu v²razu.
Toto je malß zm∞na kompatibility,ale m∙╛e zp∙sobit neoΦekßvanΘ vedlej╣φ efekty.
V∞t╣ina vnit°nφch funkcφ byla p°epsßna tak, aby vracela TRUE v p°φpad∞ ·sp∞chu a FALSE p°i selhßnφ, narozdφl od p∙vodnφch hodnot 0 a -1 v PHP/FI 2.0. NovΘ chovßnφ umo╛≥uje logiΦt∞j╣φ programovßnφ, jako $fp = fopen("/your/file") nebo fail("darn!");. Proto╛e v PHP/FI 2.0 nebyla jasnß pravidla, v kter²ch p°φpadech se vyskakovalo z funkce p°i selhßnφ, v∞t╣ina skript∙ bude pravd∞podobn∞ muset b²t zkontrolovßna ruΦn∞ po pou╛itφ konvertoru z 2.0 na 3.0.
Modul PHP 3.0 pro Apache ji╛ nepodporuje verze Apache star╣φ ne╛ 1.2. Je t°eba Apache 1.2 nebo pozd∞j╣φ.
Funkce echo() ji╛ nepodporuje formßtovan² °et∞zec. Pou╛ijte namφsto toho printf().
V PHP/FI 2.0 zp∙sobovaly vedlej╣φ efekty implementace to, ╛e $foo[0] m∞lo stejn² ·Φinek jako $foo. Toto ji╛ v PHP 3.0 neplatφ
╚tenφ z polφ pomocφ $array[] ji╛ nenφ podporovßno.
To znamenß, ╛e nem∙╛ete traverzovat pole v cyklu, kter² provßdφ $data = $array[]. Pou╛ijte funkce current() a next().
SouΦasn∞ $array1[] = $array2 nep°ipojuje hodnoty pole $array2 k poli $array1, n²br╛ p°ipojuje pole $array2 jako poslednφ polo╛ku pole $array1. Viz tΘ╛: podpora vφcerozm∞rn²ch polφ.
"+" ji╛ nenφ p°et∞╛ovßn jako spojovacφ operßtor pro °et∞zce, namφsto toho konvertuje °et∞zce na Φφsla a provede jejich (numerick²) souΦet. Pou╛ijte tedy operßtor "." instead.
PHP 3 obsahuje pro podporu pro sφ╗ov∞ zalo╛en² debugger.
PHP 4 nemß vnit°nφ mechanismy pro lad∞nφ. NicmΘn∞ m∙╛ete pou╛φvat n∞kter² z externφch debugger∙. Zend IDE obsahuje debugger, a ladicφ roz╣φ°enφ (jako DBG) najdete takΘ na http://dd.cron.ru/dbg/ nebo na Advanced PHP Debugger (APD).
Vnit°nφ debugger v PHP 3 je u╛iteΦn² pro hledßnφ zßludn²ch chyb. Debugger pracuje prost°ednictvφm p°ipojenφ na TCP port p°i ka╛dΘm startu PHP 3. V╣echny chybovΘ zprßvy z p°φslu╣nΘ relace jsou posφlßny do tohoto TCP kanßlu. Tyto informace jsou urΦeny pro "debugging server", kter² m∙╛e b∞╛et uvnit° IDE nebo programovatelnΘho editoru (jako je Emacs).
Jak nastavit debugger:
Nastavte TCP port pro debugger v konfiguraΦnφm souboru (debugger.port) a aktivujte ho (debugger.enabled).
Nastavte TCP pro poslech na n∞jakΘm portu (nap°φklad socket -l -s 1400 v UNIXu).
Ve va╣em k≤du spus╗te "debugger_on(host)", kde host je IP adresa nebo domΘnov² nßzev poΦφtaΦe, kde b∞╛φ p°φslu╣n² TCP server.
Protokol PHP 3 debuggeru je °ßdkov∞ orientovan². Ka╛d² °ßdek je urΦitΘho typu a n∞kolik °ßdk∙ tvo°φ zprßvu. Ka╛dß zprßva zaΦφnß °ßdkem typu start a konΦφ °ßdkem typu end. PHP 3 m∙╛e souΦasn∞ posφlat °ßdky pro r∙znΘ zprßvy.
╪ßdek mß tento formßt:
Datum ve formßtu ISO 8601 (yyyy-mm-dd)
╚as vΦetn∞ mikrosekund: hh:mm:uuuuuu
DNS (domΘnov²) nßzev nebo IP adresa poΦφtaΦe, kde byla vygenerovßna chyba ve skriptu.
PID (process id) na poΦφtaΦi host procesu, kter² vygeneroval chybu v PHP 3 skriptu.
Typ °ßdku. ╪φkß p°ijφmajφcφmu programu, jak mß s nßsledujφcφmi daty nalo╛it:
Tabulka D-1. Typy °ßdk∙ debuggeru
Nßzev | V²znam |
---|---|
start | ╪φkß p°ijφmajφcφmu programu, ╛e tady zaΦφnß zprßva debuggeru. Obsahem datovΘ Φßsti (data)bude typ chybovΘ zprßvy z nφ╛e uvedenΘho seznamu. |
message | Chybovß zprßva PHP 3. |
location | Nßzev souboru a Φφslo °ßdku, kde nastala chyba. Prvnφ °ßdek location bude v╛dy obsahovat nejvy╣╣φ ·rove≥ umφst∞nφ. data bude obsahovat file:line. ╪ßdek location bude nßsledovat za ka╛d²m °ßdkem message a ka╛d²m °ßdkem function. |
frames | PoΦet rßmc∙ v nßsledujφcφm v²pisu zßsobnφku. Pokud jsou zde Φty°i rßmce, oΦekßvejte informace o Φty°ech ·rovnφch volan²ch funkcφ. Pokud se ╛ßdn² °ßdek "frames" nevyskytuje, p°edpoklßdß se hloubka 0 (chyba nastala na nejvy╣╣φ ·rovni). |
function | Nßzev funkce, kde nastala chyba. Bude se opakovat pro ka╛dou ·rove≥ zßsobnφku volßnφ funkcφ. |
end | ╪φkß p°ijφmajφcφmu programu, ╛e tady konΦφ zprßva debuggeru. |
Data v °ßdku.
Tabulka D-2. Typy chyb rozli╣ovanΘ debuggerem
Debugger | PHP 3 Internal |
---|---|
warning | E_WARNING |
error | E_ERROR |
parse | E_PARSE |
notice | E_NOTICE |
core-error | E_CORE_ERROR |
core-warning | E_CORE_WARNING |
unknown | (v╣echny ostatnφ) |
P°φklad D-1. P°φklad - zprßva debuggeru
|
This section is rather outdated and demonstrates how to extend PHP 3. If you're interested in PHP 4, please read the section on the Zend API. Also, you'll want to read various files found in the PHP source, files such as README.SELF-CONTAINED-EXTENSIONS and README.EXT_SKEL.
All functions look like this:
void php3_foo(INTERNAL_FUNCTION_PARAMETERS) { } |
Arguments are always of type pval. This type contains a union which has the actual type of the argument. So, if your function takes two arguments, you would do something like the following at the top of your function:
When you change any of the passed parameters, whether they are sent by reference or by value, you can either start over with the parameter by calling pval_destructor on it, or if it's an ARRAY you want to add to, you can use functions similar to the ones in internal_functions.h which manipulate return_value as an ARRAY.
Also if you change a parameter to IS_STRING make sure you first assign the new estrdup()'ed string and the string length, and only later change the type to IS_STRING. If you change the string of a parameter which already IS_STRING or IS_ARRAY you should run pval_destructor on it first.
A function can take a variable number of arguments. If your function can take either 2 or 3 arguments, use the following:
The type of each argument is stored in the pval type field. This type can be any of the following:
Tabulka E-1. PHP Internal Types
IS_STRING | String |
IS_DOUBLE | Double-precision floating point |
IS_LONG | Long integer |
IS_ARRAY | Array |
IS_EMPTY | None |
IS_USER_FUNCTION | ?? |
IS_INTERNAL_FUNCTION | ?? (if some of these cannot be passed to a function - delete) |
IS_CLASS | ?? |
IS_OBJECT | ?? |
If you get an argument of one type and would like to use it as another, or if you just want to force the argument to be of a certain type, you can use one of the following conversion functions:
convert_to_long(arg1); convert_to_double(arg1); convert_to_string(arg1); convert_to_boolean_long(arg1); /* If the string is "" or "0" it becomes 0, 1 otherwise */ convert_string_to_number(arg1); /* Converts string to either LONG or DOUBLE depending on string */ |
These function all do in-place conversion. They do not return anything.
The actual argument is stored in a union; the members are:
IS_STRING: arg1->value.str.val
IS_LONG: arg1->value.lval
IS_DOUBLE: arg1->value.dval
Any memory needed by a function should be allocated with either emalloc() or estrdup(). These are memory handling abstraction functions that look and smell like the normal malloc() and strdup() functions. Memory should be freed with efree().
There are two kinds of memory in this program: memory which is returned to the parser in a variable, and memory which you need for temporary storage in your internal function. When you assign a string to a variable which is returned to the parser you need to make sure you first allocate the memory with either emalloc() or estrdup(). This memory should NEVER be freed by you, unless you later in the same function overwrite your original assignment (this kind of programming practice is not good though).
For any temporary/permanent memory you need in your functions/library you should use the three emalloc(), estrdup(), and efree() functions. They behave EXACTLY like their counterpart functions. Anything you emalloc() or estrdup() you have to efree() at some point or another, unless it's supposed to stick around until the end of the program; otherwise, there will be a memory leak. The meaning of "the functions behave exactly like their counterparts" is: if you efree() something which was not emalloc()'ed nor estrdup()'ed you might get a segmentation fault. So please take care and free all of your wasted memory.
If you compile with "-DDEBUG", PHP will print out a list of all memory that was allocated using emalloc() and estrdup() but never freed with efree() when it is done running the specified script.
A number of macros are available which make it easier to set a variable in the symbol table:
SET_VAR_STRING(name,value)
SET_VAR_DOUBLE(name,value)
SET_VAR_LONG(name,value)
Varovßnφ |
Be careful with SET_VAR_STRING. The value part must be malloc'ed manually because the memory management code will try to free this pointer later. Do not pass statically allocated memory into a SET_VAR_STRING. |
Symbol tables in PHP are implemented as hash tables. At any given time, &symbol_table is a pointer to the 'main' symbol table, and active_symbol_table points to the currently active symbol table (these may be identical like in startup, or different, if you're inside a function).
The following examples use 'active_symbol_table'. You should replace it with &symbol_table if you specifically want to work with the 'main' symbol table. Also, the same functions may be applied to arrays, as explained below.
If you want to define a new array in a symbol table, you should do the following.
First, you may want to check whether it exists and abort appropriately, using hash_exists() or hash_find().
Next, initialize the array:
Here's how to add new entries to it:
P°φklad E-6. Adding entries to a new array
|
hash_next_index_insert() uses more or less the same logic as "$foo[] = bar;" in PHP 2.0.
If you are building an array to return from a function, you can initialize the array just like above by doing:
if (array_init(return_value) == FAILURE) { failed...; } |
...and then adding values with the helper functions:
add_next_index_long(return_value,long_value); add_next_index_double(return_value,double_value); add_next_index_string(return_value,estrdup(string_value)); |
Of course, if the adding isn't done right after the array initialization, you'd probably have to look for the array first:
pval *arr; if (hash_find(active_symbol_table,"foo",sizeof("foo"),(void **)&arr)==FAILURE) { can't find... } else { use arr->value.ht... } |
Note that hash_find receives a pointer to a pval pointer, and not a pval pointer.
Just about any hash function returns SUCCESS or FAILURE (except for hash_exists(), which returns a boolean truth value).
A number of macros are available to make returning values from a function easier.
The RETURN_* macros all set the return value and return from the function:
RETURN
RETURN_FALSE
RETURN_TRUE
RETURN_LONG(l)
RETURN_STRING(s,dup) If dup is TRUE, duplicates the string
RETURN_STRINGL(s,l,dup) Return string (s) specifying length (l).
RETURN_DOUBLE(d)
The RETVAL_* macros set the return value, but do not return.
RETVAL_FALSE
RETVAL_TRUE
RETVAL_LONG(l)
RETVAL_STRING(s,dup) If dup is TRUE, duplicates the string
RETVAL_STRINGL(s,l,dup) Return string (s) specifying length (l).
RETVAL_DOUBLE(d)
The string macros above will all estrdup() the passed 's' argument, so you can safely free the argument after calling the macro, or alternatively use statically allocated memory.
If your function returns boolean success/error responses, always use RETURN_TRUE and RETURN_FALSE respectively.
Your function can also return a complex data type such as an object or an array.
Returning an object:
Call object_init(return_value).
Fill it up with values. The functions available for this purpose are listed below.
Possibly, register functions for this object. In order to obtain values from the object, the function would have to fetch "this" from the active_symbol_table. Its type should be IS_OBJECT, and it's basically a regular hash table (i.e., you can use regular hash functions on .value.ht). The actual registration of the function can be done using:
add_method( return_value, function_name, function_ptr ); |
The functions used to populate an object are:
add_property_long( return_value, property_name, l ) - Add a property named 'property_name', of type long, equal to 'l'
add_property_double( return_value, property_name, d ) - Same, only adds a double
add_property_string( return_value, property_name, str ) - Same, only adds a string
add_property_stringl( return_value, property_name, str, l ) - Same, only adds a string of length 'l'
Returning an array:
Call array_init(return_value).
Fill it up with values. The functions available for this purpose are listed below.
The functions used to populate an array are:
add_assoc_long(return_value,key,l) - add associative entry with key 'key' and long value 'l'
add_assoc_double(return_value,key,d)
add_assoc_string(return_value,key,str,duplicate)
add_assoc_stringl(return_value,key,str,length,duplicate) specify the string length
add_index_long(return_value,index,l) - add entry in index 'index' with long value 'l'
add_index_double(return_value,index,d)
add_index_string(return_value,index,str)
add_index_stringl(return_value,index,str,length) - specify the string length
add_next_index_long(return_value,l) - add an array entry in the next free offset with long value 'l'
add_next_index_double(return_value,d)
add_next_index_string(return_value,str)
add_next_index_stringl(return_value,str,length) - specify the string length
PHP has a standard way of dealing with various types of resources. This replaces all of the local linked lists in PHP 2.0.
Available functions:
php3_list_insert(ptr, type) - returns the 'id' of the newly inserted resource
php3_list_delete(id) - delete the resource with the specified id
php3_list_find(id,*type) - returns the pointer of the resource with the specified id, updates 'type' to the resource's type
Typical list code would look like this:
P°φklad E-8. Using an existing resource
|
PHP has a standard way of storing persistent resources (i.e., resources that are kept in between hits). The first module to use this feature was the MySQL module, and mSQL followed it, so one can get the general impression of how a persistent resource should be used by reading mysql.c. The functions you should look at are:
php3_mysql_do_connect |
php3_mysql_connect() |
php3_mysql_pconnect() |
The general idea of persistence modules is this:
Code all of your module to work with the regular resource list mentioned in section (9).
Code extra connect functions that check if the resource already exists in the persistent resource list. If it does, register it as in the regular resource list as a pointer to the persistent resource list (because of 1., the rest of the code should work immediately). If it doesn't, then create it, add it to the persistent resource list AND add a pointer to it from the regular resource list, so all of the code would work since it's in the regular resource list, but on the next connect, the resource would be found in the persistent resource list and be used without having to recreate it. You should register these resources with a different type (e.g. LE_MYSQL_LINK for non-persistent link and LE_MYSQL_PLINK for a persistent link).
If you read mysql.c, you'll notice that except for the more complex connect function, nothing in the rest of the module has to be changed.
The very same interface exists for the regular resource list and the persistent resource list, only 'list' is replaced with 'plist':
php3_plist_insert(ptr, type) - returns the 'id' of the newly inserted resource
php3_plist_delete(id) - delete the resource with the specified id
php3_plist_find(id,*type) - returns the pointer of the resource with the specified id, updates 'type' to the resource's type
However, it's more than likely that these functions would prove to be useless for you when trying to implement a persistent module. Typically, one would want to use the fact that the persistent resource list is really a hash table. For instance, in the MySQL/mSQL modules, when there's a pconnect() call (persistent connect), the function builds a string out of the host/user/passwd that were passed to the function, and hashes the SQL link with this string as a key. The next time someone calls a pconnect() with the same host/user/passwd, the same key would be generated, and the function would find the SQL link in the persistent list.
Until further documented, you should look at mysql.c or msql.c to see how one should use the plist's hash table abilities.
One important thing to note: resources going into the persistent resource list must *NOT* be allocated with PHP's memory manager, i.e., they should NOT be created with emalloc(), estrdup(), etc. Rather, one should use the regular malloc(), strdup(), etc. The reason for this is simple - at the end of the request (end of the hit), every memory chunk that was allocated using PHP's memory manager is deleted. Since the persistent list isn't supposed to be erased at the end of a request, one mustn't use PHP's memory manager for allocating resources that go to it.
When you register a resource that's going to be in the persistent list, you should add destructors to it both in the non-persistent list and in the persistent list. The destructor in the non-persistent list destructor shouldn't do anything. The one in the persistent list destructor should properly free any resources obtained by that type (e.g. memory, SQL links, etc). Just like with the non-persistent resources, you *MUST* add destructors for every resource, even it requires no destruction and the destructor would be empty. Remember, since emalloc() and friends aren't to be used in conjunction with the persistent list, you mustn't use efree() here either.
Many of the features of PHP can be configured at runtime. These configuration directives can appear in either the designated php3.ini file, or in the case of the Apache module version in the Apache .conf files. The advantage of having them in the Apache .conf files is that they can be configured on a per-directory basis. This means that one directory may have a certain safemodeexecdir for example, while another directory may have another. This configuration granularity is especially handy when a server supports multiple virtual hosts.
The steps required to add a new directive:
Add directive to php3_ini_structure struct in mod_php3.h.
In main.c, edit the php3_module_startup function and add the appropriate cfg_get_string() or cfg_get_long() call.
Add the directive, restrictions and a comment to the php3_commands structure in mod_php3.c. Note the restrictions part. RSRC_CONF are directives that can only be present in the actual Apache .conf files. Any OR_OPTIONS directives can be present anywhere, include normal .htaccess files.
In either php3take1handler() or php3flaghandler() add the appropriate entry for your directive.
In the configuration section of the _php3_info() function in functions/info.c you need to add your new directive.
And last, you of course have to use your new directive somewhere. It will be addressable as php3_ini.directive.
To call user functions from an internal function, you should use the call_user_function() function.
call_user_function() returns SUCCESS on success, and FAILURE in case the function cannot be found. You should check that return value! If it returns SUCCESS, you are responsible for destroying the retval pval yourself (or return it as the return value of your function). If it returns FAILURE, the value of retval is undefined, and you mustn't touch it.
All internal functions that call user functions must be reentrant. Among other things, this means they must not use globals or static variables.
call_user_function() takes six arguments:
This is a pointer to an object on which the function is invoked. This should be NULL if a global function is called. If it's not NULL (i.e. it points to an object), the function_table argument is ignored, and instead taken from the object's hash. The object *may* be modified by the function that is invoked on it (that function will have access to it via $this). If for some reason you don't want that to happen, send a copy of the object instead.
The name of the function to call. Must be a pval of type IS_STRING with function_name.str.val and function_name.str.len set to the appropriate values. The function_name is modified by call_user_function() - it's converted to lowercase. If you need to preserve the case, send a copy of the function name instead.
A pointer to a pval structure, into which the return value of the invoked function is saved. The structure must be previously allocated - call_user_function() does NOT allocate it by itself.
An array of pointers to values that will be passed as arguments to the function, the first argument being in offset 0, the second in offset 1, etc. The array is an array of pointers to pval's; The pointers are sent as-is to the function, which means if the function modifies its arguments, the original values are changed (passing by reference). If you don't want that behavior, pass a copy instead.
To report errors from an internal function, you should call the php3_error() function. This takes at least two parameters -- the first is the level of the error, the second is the format string for the error message (as in a standard printf() call), and any following arguments are the parameters for the format string. The error levels are:
Notices are not printed by default, and indicate that the script encountered something that could indicate an error, but could also happen in the normal course of running a script. For example, trying to access the value of a variable which has not been set, or calling stat() on a file that doesn't exist.
Warnings are printed by default, but do not interrupt script execution. These indicate a problem that should have been trapped by the script before the call was made. For example, calling ereg() with an invalid regular expression.
Errors are also printed by default, and execution of the script is halted after the function returns. These indicate errors that can not be recovered from, such as a memory allocation problem.
Parse errors should only be generated by the parser. The code is listed here only for the sake of completeness.
This is like an E_ERROR, except it is generated by the core of PHP. Functions should not generate this type of error.
This is like an E_WARNING, except it is generated by the core of PHP. Functions should not generate this type of error.
This is like an E_ERROR, except it is generated by the Zend Scripting Engine. Functions should not generate this type of error.
This is like an E_WARNING, except it is generated by the Zend Scripting Engine. Functions should not generate this type of error.
This is like an E_ERROR, except it is generated in PHP code by using the PHP function trigger_error(). Functions should not generate this type of error.
This is like an E_WARNING, except it is generated by using the PHP function trigger_error(). Functions should not generate this type of error.
This is like an E_NOTICE, except it is generated by using the PHP function trigger_error(). Functions should not generate this type of error.
Toto je seznam alias∙. V╣echny aliasy jsou zde uvedeny. Obvykle je ╣patn²m nßpadem pou╛φvat aliasy, mohou b²t spojeny s obsolentnφ nebo p°ejmenovanou funkcφ, co╛ povede k neportovatelnΘmu skriptu. Tento seznam je poskytovßn proto, aby pomohl t∞m, kdo cht∞jφ upgradovat svΘ starΘ skripty na novou syntaxi.
N∞kterΘ funkce mohou mφt dva nßzvy a ╛ßdn² nenφ preferovßn (nap°. is_int() a is_integer() jsou rovnocennΘ)
Tento seznam je konzistentnφ s PHP 4.0.6.
Tabulka F-1. Aliasy
Alias | Zßkladnφ funkce | Pou╛itΘ roz╣φ°enφ |
---|---|---|
add | swfmovie_add() | Ming (flash) |
add | swfsprite_add() | Ming (flash) |
add_root | domxml_add_root() | DOM XML |
addaction | swfbutton_addAction() | Ming (flash) |
addcolor | swfdisplayitem_addColor() | Ming (flash) |
addentry | swfgradient_addEntry() | Ming (flash) |
addfill | swfshape_addfill() | Ming (flash) |
addshape | swfbutton_addShape() | Ming (flash) |
addstring | swftext_addString() | Ming (flash) |
addstring | swftextfield_addString() | Ming (flash) |
align | swftextfield_align() | Ming (flash) |
attributes | domxml_attributes() | DOM XML |
children | domxml_children() | DOM XML |
chop | rtrim() | Base syntax |
close | closedir() | Base syntax |
com_get | com_propget() | COM |
com_propset | com_propput() | COM |
com_set | com_propput() | COM |
cv_add | ccvs_add() | CCVS |
cv_auth | ccvs_auth() | CCVS |
cv_command | ccvs_command() | CCVS |
cv_count | ccvs_count() | CCVS |
cv_delete | ccvs_delete() | CCVS |
cv_done | ccvs_done() | CCVS |
cv_init | ccvs_init() | CCVS |
cv_lookup | ccvs_lookup() | CCVS |
cv_new | ccvs_new() | CCVS |
cv_report | ccvs_report() | CCVS |
cv_return | ccvs_return() | CCVS |
cv_reverse | ccvs_reverse() | CCVS |
cv_sale | ccvs_sale() | CCVS |
cv_status | ccvs_status() | CCVS |
cv_textvalue | ccvs_textvalue() | CCVS |
cv_void | ccvs_void() | CCVS |
die | exit() | Ostatnφ funkce |
dir | getdir() | Zßkladnφ syntaxe |
diskfreespace | disk_free_space() | FilesystΘm |
domxml_getattr | domxml_get_attribute() | DOM XML |
domxml_setattr | domxml_set_attribute() | DOM XML |
doubleval | floatval() | Base syntax |
drawarc | swfshape_drawarc() | Ming (flash) |
drawcircle | swfshape_drawcircle() | Ming (flash) |
drawcubic | swfshape_drawcubic() | Ming (flash) |
drawcubicto | swfshape_drawcubicto() | Ming (flash) |
drawcurve | swfshape_drawcurve() | Ming (flash) |
drawcurveto | swfshape_drawcurveto() | Ming (flash) |
drawglyph | swfshape_drawglyph() | Ming (flash) |
drawline | swfshape_drawline() | Ming (flash) |
drawlineto | swfshape_drawlineto() | Ming (flash) |
dtd | domxml_intdtd() | DOM XML |
dumpmem | domxml_dumpmem() | DOM XML |
fbsql | fbsql_db_query() | FrontBase |
fputs | fwrite() | Base syntax |
get_attribute | domxml_get_attribute() | DOM XML |
getascent | swffont_getAscent() | Ming (flash) |
getascent | swftext_getAscent() | Ming (flash) |
getattr | domxml_get_attribute() | DOM XML |
getdescent | swffont_getDescent() | Ming (flash) |
getdescent | swftext_getDescent() | Ming (flash) |
getheight | swfbitmap_getHeight() | Ming (flash) |
getleading | swffont_getLeading() | Ming (flash) |
getleading | swftext_getLeading() | Ming (flash) |
getshape1 | swfmorph_getShape1() | Ming (flash) |
getshape2 | swfmorph_getShape2() | Ming (flash) |
getwidth | swfbitmap_getWidth() | Ming (flash) |
getwidth | swffont_getWidth() | Ming (flash) |
getwidth | swftext_getWidth() | Ming (flash) |
gzputs | gzwrite() | Zlib |
i18n_convert | mb_convert_encoding() | Multi-bytes Strings |
i18n_discover_encoding | mb_detect_encoding() | Multi-bytes Strings |
i18n_http_input | mb_http_input() | Multi-bytes Strings |
i18n_http_output | mb_http_output() | Multi-bytes Strings |
i18n_internal_encoding | mb_internal_encoding() | Multi-bytes Strings |
i18n_ja_jp_hantozen | mb_convert_kana() | Multi-bytes Strings |
i18n_mime_header_decode | mb_decode_mimeheader() | Multi-bytes Strings |
i18n_mime_header_encode | mb_encode_mimeheader() | Multi-bytes Strings |
imap_create | imap_createmailbox() | IMAP |
imap_fetchtext | imap_body() | IMAP |
imap_getmailboxes | imap_list_full() | IMAP |
imap_getsubscribed | imap_lsub_full() | IMAP |
imap_header | imap_headerinfo() | IMAP |
imap_listmailbox | imap_list() | IMAP |
imap_listsubscribed | imap_lsub() | IMAP |
imap_rename | imap_renamemailbox() | IMAP |
imap_scan | imap_listscan() | IMAP |
imap_scanmailbox | imap_listscan() | IMAP |
ini_alter | ini_set() | Zßkladnφ syntaxe |
is_double | is_float() | Zßkladnφ syntaxe |
is_integer | is_int() | Zßkladnφ syntaxe |
is_long | is_int() | Zßkladnφ syntaxe |
is_real | is_float() | Zßkladnφ syntaxe |
is_writeable | is_writable() | Zßkladnφ syntaxe |
join | implode() | Zßkladnφ syntaxe |
labelframe | swfmovie_labelFrame() | Ming (flash) |
labelframe | swfsprite_labelFrame() | Ming (flash) |
last_child | domxml_last_child() | DOM XML |
lastchild | domxml_last_child() | DOM XML |
ldap_close | ldap_unbind() | LDAP |
magic_quotes_runtime | set_magic_quotes_runtime() | Zßkladnφ syntaxe |
mbstrcut | mb_strcut() | ╪et∞zce s vφcebytov²mi znaky |
mbstrlen | mb_strlen() | ╪et∞zce s vφcebytov²mi znaky |
mbstrpos | mb_strpos() | ╪et∞zce s vφcebytov²mi znaky |
mbstrrpos | mb_strrpos() | ╪et∞zce s vφcebytov²mi znaky |
mbsubstr | mb_substr() | ╪et∞zce s vφcebytov²mi znaky |
ming_setcubicthreshold | ming_setCubicThreshold() | Ming (flash) |
ming_setscale | ming_setScale() | Ming (flash) |
move | swfdisplayitem_move() | Ming (flash) |
movepen | swfshape_movepen() | Ming (flash) |
movepento | swfshape_movepento() | Ming (flash) |
moveto | swfdisplayitem_moveTo() | Ming (flash) |
moveto | swffill_moveTo() | Ming (flash) |
moveto | swftext_moveTo() | Ming (flash) |
msql | msql_db_query() | mSQL |
msql_affected_rows | msql_affected_rows() | mSQL |
msql_createdb | msql_create_db() | mSQL |
msql_dbname | msql_result() | mSQL |
msql_dropdb | msql_drop_db() | mSQL |
msql_fieldflags | msql_field_flags() | mSQL |
msql_fieldlen | msql_field_len() | mSQL |
msql_fieldname | msql_field_name() | mSQL |
msql_fieldtable | msql_field_table() | mSQL |
msql_fieldtype | msql_field_type() | mSQL |
msql_freeresult | msql_free_result() | mSQL |
msql_listdbs | msql_list_dbs() | mSQL |
msql_listfields | msql_list_fields() | mSQL |
msql_listtables | msql_list_tables() | mSQL |
msql_numfields | msql_num_fields() | mSQL |
msql_numrows | msql_num_rows() | mSQL |
msql_regcase | sql_regcase() | mSQL |
msql_selectdb | msql_select_db() | mSQL |
msql_tablename | msql_result() | mSQL |
mssql_affected_rows | sybase_affected_rows() | Sybase |
mssql_affected_rows | sybase_affected_rows() | Sybase |
mssql_close | sybase_close() | Sybase |
mssql_close | sybase_close() | Sybase |
mssql_connect | sybase_connect() | Sybase |
mssql_connect | sybase_connect() | Sybase |
mssql_data_seek | sybase_data_seek() | Sybase |
mssql_data_seek | sybase_data_seek() | Sybase |
mssql_fetch_array | sybase_fetch_array() | Sybase |
mssql_fetch_array | sybase_fetch_array() | Sybase |
mssql_fetch_field | sybase_fetch_field() | Sybase |
mssql_fetch_field | sybase_fetch_field() | Sybase |
mssql_fetch_object | sybase_fetch_object() | Sybase |
mssql_fetch_object | sybase_fetch_object() | Sybase |
mssql_fetch_row | sybase_fetch_row() | Sybase |
mssql_fetch_row | sybase_fetch_row() | Sybase |
mssql_field_seek | sybase_field_seek() | Sybase |
mssql_field_seek | sybase_field_seek() | Sybase |
mssql_free_result | sybase_free_result() | Sybase |
mssql_free_result | sybase_free_result() | Sybase |
mssql_get_last_message | sybase_get_last_message() | Sybase |
mssql_get_last_message | sybase_get_last_message() | Sybase |
mssql_min_client_severity | sybase_min_client_severity() | Sybase |
mssql_min_error_severity | sybase_min_error_severity() | Sybase |
mssql_min_message_severity | sybase_min_message_severity() | Sybase |
mssql_min_server_severity | sybase_min_server_severity() | Sybase |
mssql_num_fields | sybase_num_fields() | Sybase |
mssql_num_fields | sybase_num_fields() | Sybase |
mssql_num_rows | sybase_num_rows() | Sybase |
mssql_num_rows | sybase_num_rows() | Sybase |
mssql_pconnect | sybase_pconnect() | Sybase |
mssql_pconnect | sybase_pconnect() | Sybase |
mssql_query | sybase_query() | Sybase |
mssql_query | sybase_query() | Sybase |
mssql_result | sybase_result() | Sybase |
mssql_result | sybase_result() | Sybase |
mssql_select_db | sybase_select_db() | Sybase |
mssql_select_db | sybase_select_db() | Sybase |
multcolor | swfdisplayitem_multColor() | Ming (flash) |
mysql | mysql_db_query() | MySQL |
mysql_createdb | mysql_create_db() | MySQL |
mysql_db_name | mysql_result() | MySQL |
mysql_dbname | mysql_result() | MySQL |
mysql_dropdb | mysql_drop_db() | MySQL |
mysql_fieldflags | mysql_field_flags() | MySQL |
mysql_fieldlen | mysql_field_len() | MySQL |
mysql_fieldname | mysql_field_name() | MySQL |
mysql_fieldtable | mysql_field_table() | MySQL |
mysql_fieldtype | mysql_field_type() | MySQL |
mysql_freeresult | mysql_free_result() | MySQL |
mysql_listdbs | mysql_list_dbs() | MySQL |
mysql_listfields | mysql_list_fields() | MySQL |
mysql_listtables | mysql_list_tables() | MySQL |
mysql_numfields | mysql_num_fields() | MySQL |
mysql_numrows | mysql_num_rows() | MySQL |
mysql_selectdb | mysql_select_db() | MySQL |
mysql_tablename | mysql_result() | MySQL |
name | domxml_attrname() | DOM XML |
new_child | domxml_new_child() | DOM XML |
new_xmldoc | domxml_new_xmldoc() | DOM XML |
nextframe | swfmovie_nextFrame() | Ming (flash) |
nextframe | swfsprite_nextFrame() | Ming (flash) |
node | domxml_node() | DOM XML |
oci8append | ocicollappend() | OCI8 |
oci8assign | ocicollassign() | OCI8 |
oci8assignelem | ocicollassignelem() | OCI8 |
oci8close | ocicloselob() | OCI8 |
oci8free | ocifreecoll() | OCI8 |
oci8free | ocifreedesc() | OCI8 |
oci8getelem | ocicollgetelem() | OCI8 |
oci8load | ociloadlob() | OCI8 |
oci8max | ocicollmax() | OCI8 |
oci8ocifreecursor | ocifreestatement() | OCI8 |
oci8save | ocisavelob() | OCI8 |
oci8savefile | ocisavelobfile() | OCI8 |
oci8size | ocicollsize() | OCI8 |
oci8trim | ocicolltrim() | OCI8 |
oci8writetemporary | ociwritetemporarylob() | OCI8 |
oci8writetofile | ociwritelobtofile() | OCI8 |
odbc_do | odbc_exec() | OCI8 |
odbc_field_precision | odbc_field_len() | OCI8 |
orbit_caught_exception | satellite_caught_exception() | Satellite |
orbit_exception_id | satellite_exception_id() | Satellite |
orbit_exception_value | satellite_exception_value() | Satellite |
orbit_get_repository_id | satellite_get_repository_id() | Satellite |
orbit_load_idl | satellite_load_idl() | Satellite |
output | swfmovie_output() | Ming (flash) |
parent | domxml_parent() | DOM XML |
pdf_add_outline | pdf_add_bookmark() | |
pg_clientencoding | pg_client_encoding() | PostgreSQL |
pg_setclientencoding | pg_set_client_encoding() | PostgreSQL |
pos | current() | Base syntax |
recode | recode_string() | Recode |
remove | swfmovie_remove() | Ming (flash) |
remove | swfsprite_remove() | Ming (flash) |
rewind | rewinddir() | Base syntax |
root | domxml_root() | DOM XML |
rotate | swfdisplayitem_rotate() | Ming (flash) |
rotateto | swfdisplayitem_rotateTo() | Ming (flash) |
rotateto | swffill_rotateTo() | Ming (flash) |
save | swfmovie_save() | Ming (flash) |
savetofile | swfmovie_saveToFile() | Ming (flash) |
scale | swfdisplayitem_scale() | Ming (flash) |
scaleto | swfdisplayitem_scaleTo() | Ming (flash) |
scaleto | swffill_scaleTo() | Ming (flash) |
set_attribute | domxml_set_attribute() | DOM XML |
set_content | domxml_set_content() | DOM XML |
setaction | swfbutton_setAction() | Ming (flash) |
setattr | domxml_set_attribute() | DOM XML |
setbackground | swfmovie_setBackground() | Ming (flash) |
setbounds | swftextfield_setBounds() | Ming (flash) |
setcolor | swftext_setColor() | Ming (flash) |
setcolor | swftextfield_setColor() | Ming (flash) |
setdepth | swfdisplayitem_setDepth() | Ming (flash) |
setdimension | swfmovie_setDimension() | Ming (flash) |
setdown | swfbutton_setDown() | Ming (flash) |
setfont | swftext_setFont() | Ming (flash) |
setfont | swftextfield_setFont() | Ming (flash) |
setframes | swfmovie_setFrames() | Ming (flash) |
setframes | swfsprite_setFrames() | Ming (flash) |
setheight | swftext_setHeight() | Ming (flash) |
setheight | swftextfield_setHeight() | Ming (flash) |
sethit | swfbutton_setHit() | Ming (flash) |
setindentation | swftextfield_setIndentation() | Ming (flash) |
setleftfill | swfshape_setleftfill() | Ming (flash) |
setleftmargin | swftextfield_setLeftMargin() | Ming (flash) |
setline | swfshape_setline() | Ming (flash) |
setlinespacing | swftextfield_setLineSpacing() | Ming (flash) |
setmargins | swftextfield_setMargins() | Ming (flash) |
setmatrix | swfdisplayitem_setMatrix() | Ming (flash) |
setname | swfdisplayitem_setName() | Ming (flash) |
setname | swftextfield_setName() | Ming (flash) |
setover | swfbutton_setOver() | Ming (flash) |
setrate | swfmovie_setRate() | Ming (flash) |
setratio | swfdisplayitem_setRatio() | Ming (flash) |
setrightfill | swfshape_setrightfill() | Ming (flash) |
setrightmargin | swftextfield_setRightMargin() | Ming (flash) |
setspacing | swftext_setSpacing() | Ming (flash) |
setup | swfbutton_setUp() | Ming (flash) |
show_source | highlight_file () | Zßkladnφ syntaxe |
sizeof | count() | Zßkladnφ syntaxe |
skewx | swfdisplayitem_skewX() | Ming (flash) |
skewxto | swfdisplayitem_skewXTo() | Ming (flash) |
skewxto | swffill_skewXTo() | Ming (flash) |
skewy | swfdisplayitem_skewY() | Ming (flash) |
skewyto | swfdisplayitem_skewYTo() | Ming (flash) |
skewyto | swffill_skewYTo() | Ming (flash) |
snmpwalkoid | snmprealwalk() | SNMP |
strchr | strstr() | Zßkladnφ syntaxe |
streammp3 | swfmovie_streamMp3() | Ming (flash) |
swfaction | swfaction_init() | Ming (flash) |
swfbitmap | swfbitmap_init() | Ming (flash) |
swfbutton | swfbutton_init() | Ming (flash) |
swfbutton_keypress | swfbutton_keypress() | Ming (flash) |
swffill | swffill_init() | Ming (flash) |
swffont | swffont_init() | Ming (flash) |
swfgradient | swfgradient_init() | Ming (flash) |
swfmorph | swfmorph_init() | Ming (flash) |
swfmovie | swfmovie_init() | Ming (flash) |
swfshape | swfshape_init() | Ming (flash) |
swfsprite | swfsprite_init() | Ming (flash) |
swftext | swftext_init() | Ming (flash) |
swftextfield | swftextfield_init() | Ming (flash) |
unlink | domxml_unlink_node() | DOM XML |
xpath_eval | xpath_eval() | DOM XML |
xpath_eval_expression | xpath_eval_expression() | DOM XML |
xpath_init | xpath_init() | DOM XML |
xpath_new_context | xpath_new_context() | DOM XML |
xptr_new_context | xpath_new_context() | DOM XML |
Toto je seznam vyhrazen²ch slov PHP, obvykle konstant a p°eddefinovan²ch prom∞nn²ch. Nenajdete zde ╛ßdnΘ funkce, co╛ v╣ak neplatφ pro jazykovΘ konstrukty. Uveden²mi nßzvy byste se nem∞li pokou╣et naz²vat prom∞nnΘ, funkce, konstanty nebo metody, vedlo by to spolehliv∞ ke zmatku.
and | E_PARSE | old_function |
$argv | E_ERROR | or |
as | E_WARNING | parent |
$argc | eval | PHP_OS |
break | exit() | $PHP_SELF |
case | extends | PHP_VERSION |
cfunction | FALSE | print() |
class | for | require() |
continue | foreach | require_once() |
declare | function | return() |
default | $HTTP_COOKIE_VARS | static |
do | $HTTP_GET_VARS | switch |
die() | $HTTP_POST_VARS | stdClass |
echo() | $HTTP_POST_FILES | $this |
else | $HTTP_ENV_VARS | TRUE |
elseif | $HTTP_SERVER_VARS | var |
empty() | if | xor |
enddeclare | include() | virtual() |
endfor | include_once() | while |
endforeach | global | __FILE__ |
endif | list() | __LINE__ |
endswitch | new | __sleep |
endwhile | not | __wakeup |
E_ALL | NULL |
The following is a list of functions which create, use or destroy PHP resources. The function is_resource() can be used to determine if a variable is a resource and get_resource_type() will return the type of resource it is.
Tabulka H-1. Resource Types
Resource Type Name | Created By | Used By | Destroyed By | Definition |
---|---|---|---|---|
aspell | aspell_new() | aspell_check(), aspell_check_raw(), aspell_suggest() | None | Aspell dictionary |
bzip2 | bzopen() | bzerrno(), bzerror(), bzerrstr(), bzflush(), bzread(), bzwrite() | bzclose() | Bzip2 file |
COM | com_load() | com_invoke(), com_propget(), com_get(), com_propput(), com_set(), com_propput() | None | COM object reference |
VARIANT | ||||
cpdf | cpdf_open() | cpdf_page_init(), cpdf_finalize_page(), cpdf_finalize(), cpdf_output_buffer(), cpdf_save_to_file(), cpdf_set_current_page(), cpdf_begin_text(), cpdf_end_text(), cpdf_show(), cpdf_show_xy(), cpdf_text(), cpdf_set_font(), cpdf_set_leading(), cpdf_set_text_rendering(), cpdf_set_horiz_scaling(), cpdf_set_text_rise(), cpdf_set_text_matrix(), cpdf_set_text_pos(), cpdf_set_text_pos(), cpdf_set_word_spacing(), cpdf_continue_text(), cpdf_stringwidth(), cpdf_save(), cpdf_translate(), cpdf_restore(), cpdf_scale(), cpdf_rotate(), cpdf_setflat(), cpdf_setlinejoin(), cpdf_setlinecap(), cpdf_setmiterlimit(), cpdf_setlinewidth(), cpdf_setdash(), cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto(), cpdf_lineto(), cpdf_rlineto(), cpdf_circle(), cpdf_arc(), cpdf_rect(), cpdf_closepath(), cpdf_stroke(), cpdf_closepath_fill_stroke(), cpdf_fill_stroke(), cpdf_clip(), cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray_stroke(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor(), cpdf_add_outline(), cpdf_set_page_animation(), cpdf_import_jpeg(), cpdf_place_inline_image(), cpdf_add_annotation() | cpdf_close() | PDF document with CPDF lib |
cpdf outline | ||||
curl | curl_init() | curl_init(), curl_exec() | curl_close() | Curl session |
dbm | dbmopen() | dbmexists(), dbmfetch(), dbminsert(), dbmreplace(), dbmdelete(), dbmfirstkey(), dbmnextkey() | dbmclose() | Link to DBM database |
dba | dba_open() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | dba_close() | Link to DBA database |
dba persistent | dba_popen() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | None | Persistent link to DBA database |
dbase | dbase_open() | dbase_pack(), dbase_add_record(), dbase_replace_record(), dbase_delete_record(), dbase_get_record(), dbase_get_record_with_names(), dbase_numfields(), dbase_numrecords() | dbase_close() | Link to Dbase database |
dbx_link_object | dbx_connect() | dbx_query() | dbx_close() | dbx connection |
dbx_result_object | dbx_query() | None | dbx result | |
domxml attribute | ||||
domxml document | ||||
domxml node | ||||
xpath context | ||||
xpath object | ||||
fbsql database | fbsql_select_db() | None | fbsql database | |
fbsql link | fbsql_change_user(), fbsql_connect() | fbsql_autocommit(), fbsql_change_user(), fbsql_create_db(), fbsql_data_seek(), fbsql_db_query(), fbsql_drop_db(), (), fbsql_select_db(), fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() | fbsql_close() | Link to fbsql database |
fbsql plink | fbsql_change_user(), fbsql_pconnect() | fbsql_autocommit(), fbsql_change_user(), fbsql_create_db(), fbsql_data_seek(), fbsql_db_query(), fbsql_drop_db(), (), fbsql_select_db(), fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() | None | Persistent link to fbsql database |
fbsql result | fbsql_db_query(), fbsql_list_dbs(), fbsql_query(), fbsql_list_fields(), fbsql_list_tables(), fbsql_tablename() | fbsql_affected_rows(), fbsql_fetch_array(), fbsql_fetch_assoc(), fbsql_fetch_field(), fbsql_fetch_lengths(), fbsql_fetch_object(), fbsql_fetch_row(), fbsql_field_flags(), fbsql_field_name(), fbsql_field_len(), fbsql_field_seek(), fbsql_field_table(), fbsql_field_type(), fbsql_next_result(), fbsql_num_fields(), fbsql_num_rows(), fbsql_result(), fbsql_num_rows() | fbsql_free_result() | fbsql result |
fdf | fdf_open() | fdf_create(), fdf_save(), fdf_get_value(), fdf_set_value(), fdf_next_field_name(), fdf_set_ap(), fdf_set_status(), fdf_get_status(), fdf_set_file(), fdf_get_file(), fdf_set_flags(), fdf_set_opt(), fdf_set_submit_form_action(), fdf_set_javascript_action() | fdf_close() | FDF File |
ftp | ftp_connect() | ftp_login(), ftp_pwd(), ftp_cdup(), ftp_chdir(), ftp_mkdir(), ftp_rmdir(), ftp_nlist(), ftp_rawlist(), ftp_systype(), ftp_pasv(), ftp_get(), ftp_fget(), ftp_put(), ftp_fput(), ftp_size(), ftp_mdtm(), ftp_rename(), ftp_delete(), ftp_site() | ftp_quit() | FTP stream |
gd | imagecreate(), imagecreatefromgif(), imagecreatefromjpeg(), imagecreatefrompng(), imagecreatefromwbmp(), imagecreatefromstring(), imagecreatetruecolor() | imagearc(), imagechar(), imagecharup(), imagecolorallocate(), imagecolorat(), imagecolorclosest(), imagecolorexact(), imagecolorresolve(), imagegammacorrect(), imagegammacorrect(), imagecolorset(), imagecolorsforindex(), imagecolorstotal(), imagecolortransparent(), imagecopy(), imagecopyresized(), imagedashedline(), imagefill(), imagefilledpolygon(), imagefilledrectangle(), imagefilltoborder(), imagegif(), imagepng(), imagejpeg(), imagewbmp(), imageinterlace(), imageline(), imagepolygon(), imagepstext(), imagerectangle(), imagesetpixel(), imagestring(), imagestringup(), imagesx(), imagesy(), imagettftext(), imagefilledarc(), imageellipse(), imagefilledellipse(), imagecolorclosestalpha(), imagecolorexactalpha(), imagecolorresolvealpha(), imagecopymerge(), imagecopymergegray(), imagecopyresampled(), imagetruecolortopalette(), imagesetbrush(), imagesettile(), imagesetthickness() | imagedestroy() | GD Image |
gd font | imageloadfont() | imagechar(), imagecharup(), imagefontheight() | None | Font for GD |
gd PS encoding | ||||
gd PS font | imagepsloadfont() | imagepstext(), imagepsslantfont(), imagepsextendfont(), imagepsencodefont(), imagepsbbox() | imagepsfreefont() | PS font for GD |
GMP integer | gmp_init() | gmp_intval(), gmp_strval(), gmp_add(), gmp_sub(), gmp_mul(), gmp_div_q(), gmp_div_r(), gmp_div_qr(), gmp_div(), gmp_mod(), gmp_divexact(), gmp_cmp(), gmp_neg(), gmp_abs(), gmp_sign(), gmp_fact(), gmp_sqrt(), gmp_sqrtrm(), gmp_perfect_square(), gmp_pow(), gmp_powm(), gmp_prob_prime(), gmp_gcd(), gmp_gcdext(), gmp_invert(), gmp_legendre(), gmp_jacobi(), gmp_random(), gmp_and(), gmp_or(), gmp_xor(), gmp_setbit(), gmp_clrbit(), gmp_scan0(), gmp_scan1(), gmp_popcount(), gmp_hamdist() | None | GMP Number |
hyperwave document | hw_cp(), hw_docbyanchor(), hw_getremote(), hw_getremotechildren() | hw_children(), hw_childrenobj(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getsrcbydestobj(), hw_getandlock(), hw_gettext(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_inscoll(), hw_pipedocument(), hw_unlock() | hw_deleteobject() | Hyperwave object |
hyperwave link | hw_connect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | hw_close(), hw_free_document() | Link to Hyperwave server |
hyperwave link persistent | hw_pconnect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | None | Persistent link to Hyperwave server |
icap | icap_open() | icap_fetch_event(), icap_list_events(), icap_store_event(), icap_snooze(), icap_list_alarms(), icap_delete_event() | icap_close() | Link to icap server |
imap | imap_open() | imap_append(), imap_body(), imap_check(), imap_createmailbox(), imap_delete(), imap_deletemailbox(), imap_expunge(), imap_fetchbody(), imap_fetchstructure(), imap_headerinfo(), imap_header(), imap_headers(), imap_listmailbox(), imap_getmailboxes(), imap_get_quota(), imap_status(), imap_listsubscribed(), imap_set_quota(), imap_set_quota(), imap_getsubscribed(), imap_mail_copy(), imap_mail_move(), imap_num_msg(), imap_num_recent(), imap_ping(), imap_renamemailbox(), imap_reopen(), imap_subscribe(), imap_undelete(), imap_unsubscribe(), imap_scanmailbox(), imap_mailboxmsginfo(), imap_fetchheader(), imap_uid(), imap_msgno(), imap_search(), imap_fetch_overview() | imap_close() | Link to IMAP, POP3 server |
imap chain persistent | ||||
imap persistent | ||||
ingres | ingres_connect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | ingres_close() | Link to ingresII base |
ingres persistent | ingres_pconnect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | None | Persistent link to ingresII base |
interbase blob | ||||
interbase link | ibase_connect() | ibase_query(), ibase_prepare(), ibase_trans() | ibase_close() | Link to Interbase database |
interbase link persistent | ibase_pconnect() | ibase_query(), ibase_prepare(), ibase_trans() | None | Persistent link to Interbase database |
interbase query | ibase_prepare() | ibase_execute() | ibase_free_query() | Interbase query |
interbase result | ibase_query() | ibase_fetch_row(), ibase_fetch_object(), ibase_field_info(), ibase_num_fields() | ibase_free_result() | Interbase Result |
interbase transaction | ibase_trans() | ibase_commit() | ibase_rollback() | Interbase transaction |
java | ||||
ldap link | ldap_connect(), ldap_search() | ldap_count_entries(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_next_attribute(), ldap_next_entry() | ldap_close() | ldap connection |
ldap result | ldap_read() | ldap_add(), ldap_compare(), ldap_bind(), ldap_count_entries(), ldap_delete(), ldap_errno(), ldap_error(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_get_option(), ldap_list(), ldap_modify(), ldap_mod_add(), ldap_mod_replace(), ldap_next_attribute(), ldap_next_entry(), ldap_mod_del(), ldap_set_option(), ldap_unbind() | ldap_free_result() | ldap search result |
ldap result entry | ||||
mcal | mcal_open(), mcal_popen() | mcal_create_calendar(), mcal_rename_calendar(), mcal_rename_calendar(), mcal_delete_calendar(), mcal_fetch_event(), mcal_list_events(), mcal_append_event(), mcal_store_event(), mcal_delete_event(), mcal_list_alarms(), mcal_event_init(), mcal_event_set_category(), mcal_event_set_title(), mcal_event_set_description(), mcal_event_set_start(), mcal_event_set_end(), mcal_event_set_alarm(), mcal_event_set_class(), mcal_next_recurrence(), mcal_event_set_recur_none(), mcal_event_set_recur_daily(), mcal_event_set_recur_weekly(), mcal_event_set_recur_monthly_mday(), mcal_event_set_recur_monthly_wday(), mcal_event_set_recur_yearly(), mcal_fetch_current_stream_event(), mcal_event_add_attribute(), mcal_expunge() | mcal_close() | Link to calendar server |
SWFAction | ||||
SWFBitmap | ||||
SWFButton | ||||
SWFDisplayItem | ||||
SWFFill | ||||
SWFFont | ||||
SWFGradient | ||||
SWFMorph | ||||
SWFMovie | ||||
SWFShape | ||||
SWFSprite | ||||
SWFText | ||||
SWFTextField | ||||
mnogosearch agent | ||||
mnogosearch result | ||||
msql link | msql_connect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | msql_close() | Link to mSQL database |
msql link persistent | msql_pconnect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | None | Persistent link to mSQL |
msql query | msql_query() | msql(), msql_affected_rows(), msql_data_seek(), msql_dbname(), msql_fetch_array(), msql_fetch_field(), msql_fetch_object(), msql_fetch_row(), msql_fieldname(), msql_field_seek(), msql_fieldtable(), msql_fieldtype(), msql_fieldflags(), msql_fieldlen(), msql_num_fields(), msql_num_rows(), msql_numfields(), msql_numrows(), msql_result() | msql_free_result(), msql_free_result() | mSQL result |
mssql link | mssql_connect() | mssql_query(), mssql_select_db() | mssql_close() | Link to Microsft SQL Server database |
mssql link persistent | mssql_pconnect() | mssql_query(), mssql_select_db() | None | Persistent link to Microsft SQL Server |
mssql result | mssql_query() | mssql_data_seek(), mssql_fetch_array(), mssql_fetch_field(), mssql_fetch_object(), mssql_fetch_row(), mssql_field_length(), mssql_field_name(), mssql_field_seek(), mssql_field_type(), mssql_num_fields(), mssql_num_rows(), mssql_result() | mssql_free_result() | Microsft SQL Server result |
mysql link | mysql_connect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | mysql_close() | Link to MySQL database |
mysql link persistent | mysql_pconnect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | None | Persistent link to MySQL database |
mysql result | mysql_db_query(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query() | mysql_data_seek(), mysql_db_name(), mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_field(), mysql_fetch_lengths(), mysql_fetch_object(), mysql_fetch_row(), mysql_fetch_row(), mysql_field_flags(), mysql_field_name(), mysql_field_len(), mysql_field_seek(), mysql_field_table(), mysql_field_type(), mysql_num_fields(), mysql_num_rows(), mysql_result(), mysql_tablename() | mysql_free_result() | MySQL result |
oci8 collection | ||||
oci8 connection | ocilogon(), ociplogon(), ocinlogon() | ocicommit(), ociserverversion(), ocinewcursor(), ociparse(), ocierror() | ocilogoff() | Link to Oracle database |
oci8 descriptor | ||||
oci8 server | ||||
oci8 session | ||||
oci8 statement | ocinewdescriptor() | ocirollback(), ocinewdescriptor(), ocirowcount(), ocidefinebyname(), ocibindbyname(), ociexecute(), ocinumcols(), ociresult(), ocifetch(), ocifetchinto(), ocifetchstatement(), ocicolumnisnull(), ocicolumnname(), ocicolumnsize(), ocicolumntype(), ocistatementtype(), ocierror() | ocifreestatement() | Oracle Cursor |
odbc link | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | odbc_close() | Link to ODBC database |
odbc link persistent | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | None | Persistent link to ODBC database |
odbc result | odbc_prepare() | odbc_binmode(), odbc_cursor(), odbc_execute(), odbc_fetch_into(), odbc_fetch_row(), odbc_field_name(), odbc_field_num(), odbc_field_type(), odbc_field_len(), odbc_field_precision(), odbc_field_scale(), odbc_longreadlen(), odbc_num_fields(), odbc_num_rows(), odbc_result(), odbc_result_all(), odbc_setoption() | odbc_free_result() | ODBC result |
birdstep link | ||||
birdstep result | ||||
OpenSSL key | openssl_get_privatekey(), openssl_get_publickey() | openssl_sign(), openssl_seal(), openssl_open(), openssl_verify() | openssl_free_key() | OpenSSL key |
OpenSSL X.509 | openssl_x509_read() | openssl_x509_parse(), openssl_x509_checkpurpose() | openssl_x509_free() | Public Key |
oracle Cursor | ora_open() | ora_bind(), ora_columnname(), ora_columnsize(), ora_columntype(), ora_error(), ora_errorcode(), ora_exec(), ora_fetch(), ora_fetch_into(), ora_getcolumn(), ora_numcols(), ora_numrows(), ora_parse() | ora_close() | Oracle cursor |
oracle link | ora_logon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | ora_logoff() | Link to oracle database |
oracle link persistent | ora_plogon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | None | Persistent link to oracle database |
pdf document | pdf_new() | pdf_add_bookmark(), pdf_add_launchlink(), pdf_add_locallink(), pdf_add_note(), pdf_add_pdflink(), pdf_add_weblink(), pdf_arc(), pdf_attach_file(), pdf_begin_page(), pdf_circle(), pdf_clip(), pdf_closepath(), pdf_closepath_fill_stroke(), pdf_closepath_stroke(), pdf_concat(), pdf_continue_text(), pdf_curveto(), pdf_end_page(), pdf_endpath(), pdf_fill(), pdf_fill_stroke(), pdf_findfont(), pdf_get_buffer(), pdf_get_image_height(), pdf_get_image_width(), pdf_get_parameter(), pdf_get_value(), pdf_lineto(), pdf_moveto(), pdf_open_ccitt(), pdf_open_file(), pdf_open_image_file(), pdf_place_image(), pdf_rect(), pdf_restore(), pdf_rotate(), pdf_save(), pdf_scale(), pdf_setdash(), pdf_setflat(), pdf_setfont(), pdf_setgray(), pdf_setgray_fill(), pdf_setgray_stroke(), pdf_setlinecap(), pdf_setlinejoin(), pdf_setlinewidth(), pdf_setmiterlimit(), pdf_setpolydash(), pdf_setrgbcolor(), pdf_setrgbcolor_fill(), pdf_setrgbcolor_stroke(), pdf_set_border_color(), pdf_set_border_dash(), pdf_set_border_style(), pdf_set_char_spacing(), pdf_set_duration(), pdf_set_font(), pdf_set_horiz_scaling(), pdf_set_parameter(), pdf_set_text_pos(), pdf_set_text_rendering(), pdf_set_value(), pdf_set_word_spacing(), pdf_show(), pdf_show_boxed(), pdf_show_xy(), pdf_skew(), pdf_stringwidth(), pdf_stroke(), pdf_translate(), pdf_open_memory_image() | pdf_close(), pdf_delete() | PDF document |
pdf image | pdf_open_image(), pdf_open_image_file(), pdf_open_memory_image() | pdf_get_image_height(), pdf_get_image_width(), pdf_open_CCITT(), pdf_place_image() | pdf_close_image() | Image in PDF file |
pdf object | ||||
pdf outline | ||||
pgsql large object | pg_lo_open() | pg_lo_open(), pg_lo_create(), pg_lo_read(), pg_lo_read_all(), pg_lo_seek(), pg_lo_tell(), pg_lo_unlink(), pg_lo_write() | pg_lo_close() | PostgreSQL Large Object |
pgsql link | pg_connect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | pg_close() | Link to PostgreSQL database |
pgsql link persistent | pg_pconnect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | None | Persistent link to PostgreSQL database |
pgsql result | pg_query(), pg_get_result() | pg_fetch_array(), pg_fetch_object(), pg_fetch_result(), pg_fetch_row(), pg_field_is_null(), pg_field_name(), pg_field_num(), pg_field_prtlen(), pg_field_size(), pg_field_type(), pg_last_oid(), pg_num_fields(), pg_num_rows(), pg_result_error(), pg_result_status() | pg_free_result() | PostgreSQL result |
pgsql string | ||||
printer | ||||
printer brush | ||||
printer font | ||||
printer pen | ||||
pspell | pspell_new(), pspell_new_config(), pspell_new_personal() | pspell_add_to_personal(), pspell_add_to_session(), pspell_check(), pspell_clear_session(), pspell_config_ignore(), pspell_config_mode(), pspell_config_personal(), pspell_config_repl(), pspell_config_runtogether(), pspell_config_save_repl(), pspell_save_wordlist(), pspell_store_replacement(), pspell_suggest() | None | pspell dictionary |
pspell config | pspell_config_create() | pspell_new_config() | None | pspell configuration |
Sablotron XSLT | xslt_create() | xslt_closelog(), xslt_openlog(), xslt_run(), xslt_set_sax_handler(), xslt_errno(), xslt_error(), xslt_fetch_result(), xslt_free() | xslt_free() | XSLT parser |
shmop | shmop_open() | shmop_read(), shmop_write(), shmop_size(), shmop_delete() | shmop_close() | |
sockets file descriptor set | socket() | accept_connect(), bind(), connect(), listen(), read(), write() | close() | Socket |
sockets i/o vector | ||||
dir | dir() | readdir(), rewinddir() | closedir() | Dir handle |
file | fopen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), flock(), fpassthru(), fputs(), fwrite(), fread(), fseek(), ftell(), fstat(), ftruncate(), set_file_buffer(), rewind() | fclose() | File handle |
pipe | popen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | pclose() | Process handle |
socket | fsockopen() | fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | fclose() | Socket handle |
stream | ||||
sybase-db link | sybase_connect() | sybase_query(), sybase_select_db() | sybase_close() | Link to Sybase database using DB library |
sybase-db link persistent | sybase_pconnect() | sybase_query(), sybase_select_db() | None | Persistent link to Sybase database using DB library |
sybase-db result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase result using DB library |
sybase-ct link | sybase_connect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | sybase_close() | Link to Sybase database using CT library |
sybase-ct link persistent | sybase_pconnect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | None | Persistent link to Sybase database using CT library |
sybase-ct result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase result using CT library |
sysvsem | sem_get() | sem_acquire() | sem_release() | System V Semaphore |
sysvshm | shm_attach() | shm_remove(), shm_put_var(), shm_get_var(), shm_remove_var() | shm_detach() | System V Shared Memory |
wddx | wddx_packet_start() | wddx_add_vars() | wddx_packet_end() | WDDX packet |
xml | xml_parser_create() | xml_set_object(), xml_set_element_handler(), xml_set_character_data_handler(), xml_set_processing_instruction_handler(), xml_set_default_handler(), xml_set_unparsed_entity_decl_handler(), xml_set_notation_decl_handler(), xml_set_external_entity_ref_handler(), xml_parse(), xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number(), xml_get_current_byte_index(), xml_parse_into_struct(), xml_parser_set_option(), xml_parser_get_option() | xml_parser_free() | XML parser |
zlib | gzopen() | gzeof(), gzgetc(), gzgets(), gzgetss(), gzpassthru(), gzputs(), gzread(), gzrewind(), gzseek(), gztell(), gzwrite() | gzclose() | gz-compressed file |
The following is a list of the various URL style protocols that PHP has built-in for use with the filesystem functions such as fopen() and copy(). In addition to these wrappers, as of PHP 4.3.0, you can write your own wrappers using PHP script and stream_wrapper_register().
All versions of PHP. Explicitly using file:// since PHP 4.3.0
/path/to/file.ext
relative/path/to/file.ext
fileInCwd.ext
C:/path/to/winfile.ext
C:\path\to\winfile.ext
\\smbserver\share\path\to\winfile.ext
file:///path/to/file.ext
file:// is the default wrapper used with PHP and represents the local filesystem. When a relative path is specified (a path which does not begin with /, \, \\, or a windows drive letter) the path provided will be applied against the current working directory. In many cases this is the directory in which the script resides unless it has been changed. Using the CLI sapi, this defaults to the directory from which the script was called.
With some functions, such as fopen() and file_get_contents(), include_path may be optionally searched for relative paths as well.
PHP 3, PHP 4. https:// since PHP 4.3.0
http://example.com
http://user:password@example.com
https://example.com
https://user:password@example.com
Allows read-only access to files/resources via HTTP 1.0, using the HTTP GET method. A Host: header is sent with the request to handle name-based virtual hosts. If you have configured a user_agent string using your ini file or the stream context, it will also be included in the request.
Redirects have been supported since PHP 4.0.5; if you are using an earlier version you will need to include trailing slashes in your URLs. If it's important to know the url of the resource where your document came from (after all redirects have been processed), you'll need to process the series of response headers returned by the stream.
<?php $url = 'http://www.example.com/redirecting_page.php'; $fp = fopen($url, 'r'); /* Prior to PHP 4.3.0 use $http_response_header instead of stream_get_meta_data() */ foreach(stream_get_meta_data($fp) as $response) { /* Were we redirected? */ if (substr(strtolower($response), 0, 10) == 'location: ') { /* update $url with where we were redirected to */ $url = substr($response, 10); } } ?> |
The stream allows access to the body of the resource; the headers are stored in the $http_response_header variable. Since PHP 4.3.0, the headers are available using stream_get_meta_data().
HTTP connections are read-only; you cannot write data or copy files to an HTTP resource.
Poznßmka: HTTPS is supported starting from PHP 4.3.0, if you have compiled in support for OpenSSL.
Tabulka I-2. Wrapper Summary
Attribute | Supported |
---|---|
Restricted by allow_url_fopen. | Yes |
Allows Reading | Yes |
Allows Writing | No |
Allows Appending | No |
Allows Simultaneous Reading and Writing | N/A |
Supports stat() | No |
Supports unlink() | No |
Supports rename() | No |
Supports mkdir() | No |
Supports rmdir() | No |
Tabulka I-3. Context options (as of PHP 5.0.0)
Name | Usage | Default |
---|---|---|
method | GET, POST, or any other HTTP method supported by the remote server. | GET |
header | Additional headers to be sent during request. Values in this option will override other values (such as User-agent:, Host:, and Authentication:). | |
user_agent | Value to send with User-Agent: header. This value will only be used if user-agent is not specified in the header context option above. | php.ini setting: user_agent |
content | Additional data to be sent after the headers. Typically used with POST or PUT requests. | |
proxy | URI specifying address of proxy server. (e.g. tcp://proxy.example.com:5100 ). |
Underlying socket stream context options: Additional context options may be supported by the underlying transport For http:// streams, refer to context options for the tcp:// transport. For https:// streams, refer to context options for the ssl:// transport.
PHP 3, PHP 4. ftps:// since PHP 4.3.0
ftp://example.com/pub/file.txt
ftp://user:password@example.com/pub/file.txt
ftps://example.com/pub/file.txt
ftps://user:password@example.com/pub/file.txt
Allows read access to existing files and creation of new files via FTP. If the server does not support passive mode ftp, the connection will fail.
You can open files for either reading or writing, but not both simultaneously. If the remote file already exists on the ftp server and you attempt to open it for writing but have not specified the context option overwrite, the connection will fail. If you need to overwrite existing files over ftp, specify the overwrite option in the context and open the file for writing. Alternatively, you can use the FTP extension.
Appending: As of PHP 5.0.0 files may be appended via the ftp:// url wrapper. In prior versions, attempting to append to a file via ftp:// will result in failure.
ftps:// was introduced in PHP 4.3.0. It is the same as ftp://, but attempts to negotiate a secure connection with the ftp server. If the server does not support SSL, then the connection falls back to regular unencrypted ftp.
Poznßmka: FTPS is supported starting from PHP 4.3.0, if you have compiled in support for OpenSSL.
Tabulka I-4. Wrapper Summary
Attribute | PHP 4 | PHP 5 |
---|---|---|
Restricted by allow_url_fopen. | Yes | Yes |
Allows Reading | Yes | Yes |
Allows Writing | Yes (new files only) | Yes (new files/existing files with overwrite) |
Allows Appending | No | Yes |
Allows Simultaneous Reading and Writing | No | No |
Supports stat() | No | filesize(), filetype(), file_exists(), is_file(), and is_dir() elements only. |
Supports unlink() | No | Yes |
Supports rename() | No | Yes |
Supports mkdir() | No | Yes |
Supports rmdir() | No | Yes |
Tabulka I-5. Context options (as of PHP 5.0.0)
Name | Usage | Default |
---|---|---|
overwrite | Allow overwriting of already existing files on remote server. Applies to write mode (uploading) only. | FALSE (Disabled) |
resume_pos | File offset at which to begin transfer. Applies to read mode (downloading) only. | 0 (Beginning of File) |
Underlying socket stream context options: Additional context options may be supported by the underlying transport For ftp:// streams, refer to context options for the tcp:// transport. For ftps:// streams, refer to context options for the ssl:// transport.
PHP 3.0.13 and up, php://output and php://input since PHP 4.3.0, php://filter since PHP 5.0.0
php://stdin
php://stdout
php://stderr
php://output
php://input
php://filter
php://stdin, php://stdout and php://stderr allow access to the corresponding input or output stream of the PHP process.
php://output allows you to write to the output buffer mechanism in the same way as print() and echo().
php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives.
php://stdin and php://input are read-only, whereas php://stdout, php://stderr and php://output are write-only.
php://filter is a kind of meta-wrapper designed to permit the application of filters to a stream at the time of opening. This is useful with all-in-one file functions such as readfile(), file(), and file_get_contents() where there is otherwise no opportunity to apply a filter to the stream prior the contents being read.
The php://filter target takes the following 'parameters' as parts of its 'path'.
/resource=<stream to be filtered> (required) This parameter must be located at the end of your php://filter specification and should point to the stream which you want filtered.
/read=<filter list to apply to read chain> (optional) This parameter takes one or more filternames separated by the pipe character |.
<?php /* This will output the contents of www.example.com entirely in uppercase */ readfile("php://filter/read=string.toupper/resource=http://www.example.com"); /* This will do the same as above but will also ROT13 encode it */ readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"); ?> |
/write=<filter list to apply to write chain> (optional) This parameter takes one or more filternames separated by the pipe character |.
/<filter list to apply to both chains> (optional) Any filter lists which are not prefixed specifically by read= or write= will be applied to both the read and write chains (as appropriate).
Tabulka I-6. Wrapper Summary (For php://filter, refer to summary of wrapper being filtered.)
Attribute | Supported |
---|---|
Restricted by allow_url_fopen. | No |
Allows Reading | php://stdin and php://input only. |
Allows Writing | php://stdout, php://stderr, and php://output only. |
Allows Appending | php://stdout, php://stderr, and php://output only. (Equivalent to writing) |
Allows Simultaneous Reading and Writing | No. These wrappers are unidirectional. |
Supports stat() | No |
Supports unlink() | No |
Supports rename() | No |
Supports mkdir() | No |
Supports rmdir() | No |
zlib: PHP 4.0.4 - PHP 4.2.3 (systems with fopencookie only)
compress.zlib:// and compress.bzip2:// PHP 4.3.0 and up
zlib:
compress.zlib://
compress.bzip2://
zlib: works like gzopen(), except that the stream can be used with fread() and the other filesystem functions. This is deprecated as of PHP 4.3.0 due to ambiguities with filenames containing ':' characters; use compress.zlib:// instead.
compress.zlib:// and compress.bzip2:// are equivalent to gzopen() and bzopen() respectively, and operate even on systems that do not support fopencookie.
Tabulka I-7. Wrapper Summary
Attribute | Supported |
---|---|
Restricted by allow_url_fopen. | No |
Allows Reading | Yes |
Allows Writing | Yes |
Allows Appending | Yes |
Allows Simultaneous Reading and Writing | No |
Supports stat() | No, use the normal file:// wrapper to stat compressed files. |
Supports unlink() | No, use the normal file:// wrapper to unlink compressed files. |
Supports rename() | No |
Supports mkdir() | No |
Supports rmdir() | No |
The following is a list of the various URL style socket transports that PHP has built-in for use with the streams based socket functions such as fsockopen(), and stream_socket_client(). These transports do not apply to the Sockets Extension.
For a list of transports installed in your version of PHP use stream_get_transports().
PHP 3, PHP 4. ssl:// & tls:// since PHP 4.3
Poznßmka: If no transport is specified, tcp:// will be assumed.
127.0.0.1
fe80::1
www.example.com
tcp://127.0.0.1
tcp://fe80::1
tcp://www.example.com
udp://www.example.com
ssl://www.example.com
tls://www.example.com
Internet Domain sockets expect a port number in addition to a target address. In the case of fsockopen() this is specified in a second parameter and therefore does not impact the formatting of transport url. With stream_socket_client() and related functions as with traditional URLs however, the port number is specified as a suffix of the transport URL delimited by a colon.
tcp://127.0.0.1:80
tcp://[fe80::1]:80
tcp://www.example.com:80
IPv6 numeric addresses with port numbers: In the second example above, while the IPv4 and hostname examples are left untouched apart from the addition of their colon and portnumber, the IPv6 address is wrapped in square brackets: [fe80::1]. This is to distinguish between the colons used in an IPv6 address and the colon used to delimit the portnumber.
The ssl:// and tls:// transports (available only when openssl support is compiled into PHP) are extensions of the tcp:// transport which includes SSL encryption. Since PHP 4.3.0 OpenSSL support must be statically compiled into PHP, since PHP 5.0.0 it may be compiled as a module or statically.
Tabulka J-1. Context options for ssl:// and tls:// transports (since PHP 4.3.2)
Name | Usage | Default | |
---|---|---|---|
verify_peer | TRUE or FALSE. Require verification of SSL certificate used. | FALSE | |
allow_self_signed | TRUE or FALSE. Allow self-signed certificates. | FALSE | |
cafile | Location of Certificate Authority file on local filesystem which should be used with the verify_peer context option to authenticate the identity of the remote peer. | ||
capath | If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory. | ||
local_cert | Path to local certificate file on filesystem. It must be a PEM encoded file which contains your certificate and private key. It can optionally contain the certificate chain of issuers. | ||
passphrase | Passphrase with which your local_cert file was encoded. | ||
CN_match | Common Name we are expecting. PHP will perform limited wildcard matching. If the Common Name does not match this, the connection attempt will fail. |
unix:// since PHP 3, udg:// since PHP 5
unix:///tmp/mysock
udg:///tmp/mysock
unix:// provides access to a socket stream connection in the Unix domain. udg:// provides an alternate transport to a Unix domain socket using the user datagram protocol.
Unix domain sockets, unlike Internet domain sockets, do not expect a port number. In the case of fsockopen() the portno parameter should be set to 0.
The following tables demonstrate behaviors for PHP types and comparison operators, for both loose and strict comparisons. This supplemental is also related to the manual section on type juggling. Inspiration was provided by various user comments and by the work over at BlueShoes.
Before utilizing these tables, it's important to understand types and their meanings. For example, "42" is a string while 42 is an integer. FALSE is a boolean while "false" is a string.
Poznßmka: HTML Forms do not pass integers, floats, or booleans, they pass strings. To find out of a string is numeric, you may use is_numeric().
Poznßmka: Simply doing if ($x) while $x is undefined will generate an error of level E_NOTICE. Instead, consider using empty() or isset() and/or initialize your variables.
Tabulka K-1. Comparisons of $x with PHP functions
Expression | gettype() | empty() | is_null() | isset() | boolean : if($x) |
---|---|---|---|---|---|
$x = ""; | string | TRUE | FALSE | TRUE | FALSE |
$x = NULL | NULL | TRUE | TRUE | FALSE | FALSE |
var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
$x is undefined | NULL | TRUE | TRUE | FALSE | FALSE |
$x = array(); | array | TRUE | FALSE | TRUE | FALSE |
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE |
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE |
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE |
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE |
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE |
$x = "1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "0"; | string | TRUE | FALSE | TRUE | FALSE |
$x = "-1"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "php"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "true"; | string | FALSE | FALSE | TRUE | TRUE |
$x = "false"; | string | FALSE | FALSE | TRUE | TRUE |
Tabulka K-2. Loose comparisons with ==
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | |
---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE |
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE |
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE |
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE |
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
Tabulka K-3. Strict comparisons with ===
TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | |
---|---|---|---|---|---|---|---|---|---|---|---|
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE |
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE |
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE |
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE |
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE |
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE |
PHP 3.0 note: The string value "0" was considered non-empty in PHP 3, this behavior changed in PHP 4 where it's now seen as empty.
Various parts of the PHP language are represented internally by types like T_SR. PHP outputs identifiers like this one in parse errors, like "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."
You're supposed to know what T_SR means. For everybody who doesn't know that, here is a table with those identifiers, PHP-syntax and references to the appropriate places in the manual.
Tabulka L-1. Tokens
Token | Syntax | Reference |
---|---|---|
T_AND_EQUAL | &= | assignment operators |
T_ARRAY | array() | array(), array syntax |
T_ARRAY_CAST | (array) | type-casting |
T_AS | as | foreach |
T_BAD_CHARACTER | anything below ASCII 32 except \t (0x09), \n (0x0a) and \r (0x0d) | |
T_BOOLEAN_AND | && | logical operators |
T_BOOLEAN_OR | || | logical operators |
T_BOOL_CAST | (bool) or (boolean) | type-casting |
T_BREAK | break | break |
T_CASE | case | switch |
T_CHARACTER | ||
T_CLASS | class | classes and objects |
T_CLOSE_TAG | ?> or %> | |
T_COMMENT | // or # | comments |
T_CONCAT_EQUAL | .= | assignment operators |
T_CONST | const | |
T_CONSTANT_ENCAPSED_STRING | "foo" or 'bar' | string syntax |
T_CONTINUE | continue | |
T_CURLY_OPEN | ||
T_DEC | -- | incrementing/decrementing operators |
T_DECLARE | declare | declare |
T_DEFAULT | default | switch |
T_DIV_EQUAL | /= | assignment operators |
T_DNUMBER | 0.12, etc | floating point numbers |
T_DO | do | do..while |
T_DOLLAR_OPEN_CURLY_BRACES | ${ | complex variable parsed syntax |
T_DOUBLE_ARROW | => | array syntax |
T_DOUBLE_CAST | (real), (double) or (float) | type-casting |
T_ECHO | echo | echo() |
T_ELSE | else | else |
T_ELSEIF | elseif | elseif |
T_EMPTY | empty | empty() |
T_ENCAPSED_AND_WHITESPACE | ||
T_ENDDECLARE | enddeclare | declare, alternative syntax |
T_ENDFOR | endfor | for, alternative syntax |
T_ENDFOREACH | endforeach | foreach, alternative syntax |
T_ENDIF | endif | if, alternative syntax |
T_ENDSWITCH | endswitch | switch, alternative syntax |
T_ENDWHILE | endwhile | while, alternative syntax |
T_END_HEREDOC | heredoc syntax | |
T_EVAL | eval() | eval() |
T_EXIT | exit or die | exit(), die() |
T_EXTENDS | extends | extends, classes and objects |
T_FILE | __FILE__ | constants |
T_FOR | for | for |
T_FOREACH | foreach | foreach |
T_FUNCTION | function or cfunction | functions |
T_GLOBAL | global | variable scope |
T_IF | if | if |
T_INC | ++ | incrementing/decrementing operators |
T_INCLUDE | include() | include() |
T_INCLUDE_ONCE | include_once() | include_once() |
T_INLINE_HTML | ||
T_INT_CAST | (int) or (integer) | type-casting |
T_ISSET | isset() | isset() |
T_IS_EQUAL | == | comparison operators |
T_IS_GREATER_OR_EQUAL | >= | comparison operators |
T_IS_IDENTICAL | === | comparison operators |
T_IS_NOT_EQUAL | != or <> | comparison operators |
T_IS_NOT_IDENTICAL | !== | comparison operators |
T_SMALLER_OR_EQUAL | <= | comparison operators |
T_LINE | __LINE__ | constants |
T_LIST | list() | list() |
T_LNUMBER | 123, 012, 0x1ac, etc | integers |
T_LOGICAL_AND | and | logical operators |
T_LOGICAL_OR | or | logical operators |
T_LOGICAL_XOR | xor | logical operators |
T_MINUS_EQUAL | -= | assignment operators |
T_ML_COMMENT | /* and */ | comments |
T_MOD_EQUAL | %= | assignment operators |
T_MUL_EQUAL | *= | assignment operators |
T_NEW | new | classes and objects |
T_NUM_STRING | ||
T_OBJECT_CAST | (object) | type-casting |
T_OBJECT_OPERATOR | -> | classes and objects |
T_OLD_FUNCTION | old_function | old_function |
T_OPEN_TAG | <?php, <? or <% | escaping from HTML |
T_OPEN_TAG_WITH_ECHO | <?= or <%= | escaping from HTML |
T_OR_EQUAL | |= | assignment operators |
T_PAAMAYIM_NEKUDOTAYIM | :: | :: |
T_PLUS_EQUAL | += | assignment operators |
T_PRINT | print() | print() |
T_REQUIRE | require() | require() |
T_REQUIRE_ONCE | require_once() | require_once() |
T_RETURN | return | returning values |
T_SL | << | bitwise operators |
T_SL_EQUAL | <<= | assignment operators |
T_SR | >> | bitwise operators |
T_SR_EQUAL | >>= | assignment operators |
T_START_HEREDOC | <<< | heredoc syntax |
T_STATIC | static | variable scope |
T_STRING | ||
T_STRING_CAST | (string) | type-casting |
T_STRING_VARNAME | ||
T_SWITCH | switch | switch |
T_UNSET | unset() | unset() |
T_UNSET_CAST | (unset) | (not documented; casts to NULL) |
T_USE | use | (not implemented) |
T_VAR | var | classes and objects |
T_VARIABLE | $foo | variables |
T_WHILE | while | while, do..while |
T_WHITESPACE | ||
T_XOR_EQUAL | ^= | assignment operators |
T_FUNC_C | __FUNCTION__ | constants, since PHP 4.3.0 |
T_CLASS_C | __CLASS__ | constants, since PHP 4.3.0 |
Tento PHP manußl je poskytovßn v r∙zn²ch formßtech. Tyto formßty se dajφ rozd∞lit do dvou skupin: formßty pro prohlφ╛enφ on-line a balφky pro stahovßnφ.
Poznßmka: N∞kte°φ vydavatelΘ vydali ti╣t∞nΘ verze tohoto manußlu. «ßdnΘ z nich nedoporuΦujeme, proto╛e velmi rychle zastarßvajφ.
Manußl m∙╛ete Φφst on-line na http://www.php.net/ a mnoha zrcadlech. Pro zaji╣t∞nφ nejrychlej╣φho p°φstupu byste si m∞li vybrat zrcadlo umφst∞nΘ nejblφ╛e k vßm. M∙╛ete si prohlφ╛et manußl v "holΘm" HTML formßtu (vhodnΘm pro tisk) nebo v HTML formßtu integrujφcφm manußl do vzhledu a chovßnφ samotn²ch strßnek PHP.
V²hodou on-line manußlu p°ed off-line formßty je integrace u╛ivatelsk²ch poznßmek. Samoz°ejmou nev²hodou je to, ╛e p°i prohlφ╛enφ musφte b²t on-line.
Existuje vφce off-line formßt∙ manußlu a formßt pro vßs nejvhodn∞j╣φ zßvisφ na tom, jak² operaΦnφ systΘm pou╛φvßte a na va╣em osobnφm stylu Φtenφ. Pro informaci o tom, jak je manußl generovßn v tolika formßtech, si p°eΦt∞te sekci 'Jak generujeme formßty' v dodatcφch.
Pro nejvφce platforem se hodφ manußl v HTML a jako prost² text. HTML formßt je poskytovßn jak jako jedin² HTML soubor, tak jako balφΦek soubor∙ podle jednotliv²ch sekcφ (co╛ ve v²sledku znamenß kolekci tisφc∙ soubor∙). HTML a prost² text jsou poskytovßny jako tar soubory zkomprimovanΘ pomocφ bzip2.
Jin²m populßrnφm platformn∞ nezßvisl²m formßtem, a takΘ formßtem nejvhodn∞j╣φm pro tisk, je PDF (znßm² takΘ jako Adobe Acrobat). Ale p°ed sta╛enφm tohoto formßtu a stisknutφm tlaΦφtka pro tisk je╣t∞ jedno varovßnφ: Manußl je skoro 2000 strßnek dlouh² a stßle se upravuje!
Poznßmka: Pokud je╣t∞ nemßte program schopn² zobrazit formßt PDF, m∙╛ete si stßhnout Adobe Acrobat Reader.
Pro vlastnφky handheld∙ (Palm kompatibilnφch) jsou ideßlnφ formßty Palm document a iSilo. M∙╛ete si p°inΘst sv∙j handheld na sm∞nu a pou╛φt prohlφ╛eΦ formßtu DOC nebo iSilo k oprß╣enφ znalostφ PHP nebo jako rychlou p°φruΦku.
Pro platformu Windows existuje verze Widows HTML Help pro pou╛itφ s aplikacφ Windows HTML Help- Tato verze poskytuje fulltextovΘ vyhledßvßnφ, ·pln² rejst°φk a zßlo╛ky. Mnoho populßrnφch v²vojov²ch prost°edφ pro v²voj v PHP pod Windows takΘ integruje tuto verzi dokumentace, co╛ zaji╣╗uje snadn² p°φstup.
Poznßmka: Projekt Visual Basic for Linux je ve stßdiu plßnovßnφ, bude zahrnovat v²voj aplikace CHM Creator and Viewer for Linux. Pokud se zajφmßte o stav v²voje, podφvejte se na SourceForge.net page.
U╛ivatelskΘ poznßmky hrajφ d∙le╛itou roli ve v²voji tohoto manußlu. Umo╛n∞nφm Φtenß°∙m manußlu p°idßvat p°φklady a dal╣φ vysv∞tlenφ p°φmo z jejich prohlφ╛eΦe jsme schopni zabudovat zp∞tnou vazbu do hlavnφho textu manußlu. A ne╛ jsou poznßmky zpracovßny, jsou vid∞t v podob∞, v jakΘ je u╛ivatelΘ poslali, v on-line (a n∞kter²ch off-line) formßtech.
Poznßmka: U╛ivatelskΘ poznßmky nejsou moderovßny p°ed jejich zobrazenφm on-line, tak╛e kvalita textu nebo p°φklad∙ k≤du a jejich v∞rohodnost nemohou b²t zaruΦeny (ne, ╛e by byla zaruΦena kvalita nebo p°esnost samotnΘho manußlu).
Tento manußl se nepokou╣φ poskytovat instrukce o obecn²ch programovacφch technikßch. Pokud jste ·pln∞ Φerstv² programßtor nebo stßle je╣t∞ zaΦßteΦnφk, m∙╛e vßm p°ijφt obtφ╛nΘ nauΦit se programovat v PHP pouze podle tohoto manußlu. M∙╛ete chtφt hledat texty vφce orientovanΘ na zaΦßteΦnφky. Zde je seznam knih t²kajφcφch se PHP: http://www.php.net/books.php.
Existuje mnoho aktivnφch e-mailov²ch diskusnφch skupin pro diskusi o v╣ech aspektech programovßnφ v PHP. Pokud mßte problΘm, pro kter² nm∙╛ete najφt °e╣enφ, mohl by vßm pomoci n∞kdo z t∞chto skupin. Seznam diskusnφch skupin najdete na http://www.php.net/support.php, stejn∞ tak i odkazy na archivy t∞chto skupin a jinΘ on-line zdroje. Dßle, na http://www.php.net/links.php je seznam strßnek zam∞°en²ch na Φlßnky, f≤ra a galerie k≤du pro PHP.
Jsou dv∞ cesty, jak m∙╛ete pomoci zlep╣it tuto dokumentaci.
Pokud v manußlu najdete chyby (v kterΘmkoli jazyce), oznamte je prosφm pomocφ bug systΘmu na http://bugs.php.net/. Klasifikujte chybu jako "Documentation Problem". M∙╛ete takΘ poslat problΘmy spojenΘ s konkrΘtnφmi manußlov²mi formßty zde.
Poznßmka: Nezneu╛φvejte prosφm bug systΘm odesφlßnφm ╛ßdostφ o pomoc. Pou╛ijte namφsto toho diskusnφ f≤rum nebo komunitnφ strßnky, jak ji╛ bylo zmφn∞no.
P°i p°idßvßnφ poznßmek m∙╛ete poskytnout dodateΦnΘ p°φklady a vysv∞tlenφ pro ostatnφ Φtenß°e. Av╣ak neposφlejte prosφm pomocφ tohoto anotaΦnφho systΘmu hlß╣enφ o chybßch. O anotacφch se m∙╛ete vφce dozv∞d∞t v Φßsti 'O u╛ivatelsk²ch poznßmkßch' tohoto dodatku.
Tento manußl je napsßn v XML s pou╛itφm DocBook XML DTD, DSSSL (Document Style and Semantics Specification Language) pro formßtovßnφ a experimentßln∞ XSLT (Extensible Stylesheet Language Transformations) pro ·dr╛bu a formßtovßnφ.
Pou╛itφ XML jako zdrojovΘho formßtu nßm dßvß mo╛nost generovat mnoho v²stupnφch formßt∙ ze zdrojov²ch soubor∙ a udr╛ovat pouze jedin² zdrojov² dokument pro v╣echny formßty. Nßstroji pou╛it²mi pro formßtovßnφ HTML a TeX verzφ jsou Jade, jeho╛ autorem je James Clark, a The Modular DocBook Stylesheets kde je autorem Norman Walsh. Pou╛φvßme Microsoft HTML Help Workshop ke generovßnφ formßtu Windows HTML Help a, samoz°ejm∞, PHP samotnΘ pro dodateΦnΘ konverze a formßtovßnφ.
Manußl si m∙╛ete stßhnout v r∙zn²ch jazycφch a formßtech, vΦetn∞ prostΘho textu, prostΘho HTML, PDF, PalmPilot DOC, PalmPilot iSilo a Windows HTML Help, z http://www.php.net/docs.php. Manußly jsou automaticky aktualizovßny, pokud se jejich text zm∞nφ.
Vφce informacφ o stahovßnφ zdrojovΘho k≤du dokumentace v XML najdete na http://cvs.php.net/. Dokumentace je ulo╛ena v modulu phpdoc.
v1.0, 8 June 1999
The Open Publication works may be reproduced and distributed in whole or in part, in any medium physical or electronic, provided that the terms of this license are adhered to, and that this license or an incorporation of it by reference (with any options elected by the author(s) and/or publisher) is displayed in the reproduction.
Proper form for an incorporation by reference is as follows:
Copyright (c) <year> by <author's name or designee>. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, vX.Y or later (the latest version is presently available at http://www.opencontent.org/openpub/
The reference must be immediately followed with any options elected by the author(s) and/or publisher of the document (see section VI). Commercial redistribution of Open Publication-licensed material is permitted. Any publication in standard (paper) book form shall require the citation of the original publisher and author. The publisher and author's names shall appear on all outer surfaces of the book. On all outer surfaces of the book the original publisher's name shall be as large as the title of the work and cited as possessive with respect to the title.
The following license terms apply to all Open Publication works, unless otherwise explicitly stated in the document.
Mere aggregation of Open Publication works or a portion of an Open Publication work with other works or programs on the same media shall not cause this license to apply to those other works. The aggregate work shall contain a notice specifying the inclusion of the Open Publication material and appropriate copyright notice.
SEVERABILITY. If any part of this license is found to be unenforceable in any jurisdiction, the remaining portions of the license remain in force.
NO WARRANTY. Open Publication works are licensed and provided "as is" without warranty of any kind, express or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose or a warranty of non-infringement.
All modified versions of documents covered by this license, including translations, anthologies, compilations and partial documents, must meet the following requirements:
The modified version must be labeled as such.
The person making the modifications must be identified and the modifications dated.
Acknowledgement of the original author and publisher if applicable must be retained according to normal academic citation practices.
The location of the original unmodified document must be identified.
The original author's (or authors') name(s) may not be used to assert or imply endorsement of the resulting document without the original author's (or authors') permission.
In addition to the requirements of this license, it is requested from and strongly recommended of redistributors that:
If you are distributing Open Publication works on hardcopy or CD-ROM, you provide email notification to the authors of your intent to redistribute at least thirty days before your manuscript or media freeze, to give the authors time to provide updated documents. This notification should describe modifications, if any, made to the document.
All substantive modifications (including deletions) be either clearly marked up in the document or else described in an attachment to the document.
Finally, while it is not mandatory under this license, it is considered good form to offer a free copy of any hardcopy and CD-ROM expression of an Open Publication-licensed work to its author(s).
The author(s) and/or publisher of an Open Publication-licensed document may elect certain options by appending language to the reference to or copy of the license. These options are considered part of the license instance and must be included with the license (or its incorporation by reference) in derived works.
A. To prohibit distribution of substantively modified versions without the explicit permission of the author(s). "Substantive modification" is defined as a change to the semantic content of the document, and excludes mere changes in format or typographical corrections.
To accomplish this, add the phrase `Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.' to the license reference or copy.
B. To prohibit any publication of this work or derivative works in whole or in part in standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.
To accomplish this, add the phrase 'Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.' to the license reference or copy.