Changeset View
Changeset View
Standalone View
Standalone View
src/docs/article/overview.diviner
- This file was added.
| @title libphutil Overview | |||||
| @group overview | |||||
| This document provides a high-level introduction to libphutil. | |||||
| = Overview = | |||||
| **libphutil** (pronounced as "lib-futile", like the English word //futile//) is | |||||
| a collection of PHP utility classes and functions. Most code in the library is | |||||
| general-purpose, and makes it easier to build applications in PHP. | |||||
| libphutil is principally the shared library for | |||||
| [[ http://www.phabricator.org | Phabricator ]] and its CLI **Arcanist**, but is | |||||
| suitable for inclusion in other projects. In particular, some of the classes | |||||
| provided in this library vastly improve the state of common operations in PHP, | |||||
| like executing system commands. | |||||
| libphutil is developed and maintained by | |||||
| [[ http://www.phacility.com/ | Phacility ]]. Some of the code in this library | |||||
| was originally developed at Facebook, and parts of it appear in the core | |||||
| libraries for <http://www.facebook.com/>. | |||||
| = Loading libphutil = | |||||
| To include libphutil in another project, include the | |||||
| `src/__phutil_library_init__.php` file: | |||||
| require_once 'path/to/libphutil/src/__phutil_library_init__.php'; | |||||
| This loads global functions and registers an autoload function with | |||||
| `spl_autoload_register()`, so you can also use classes. | |||||
| = Major Components = | |||||
| Some of the major components of libphutil are: | |||||
| - **Core Utilities**: a collection of useful functions like @{function:ipull} | |||||
| which simplify common data manipulation; | |||||
| - **Filesystem**: classes like @{class:Filesystem} which provide a strict API | |||||
| for filesystem access and throw exceptions on failure, making it easier to | |||||
| write robust code which interacts with files; | |||||
| - **Command Execution**: libphutil provides a powerful system command | |||||
| primitive in @{class:ExecFuture} which makes it far easier to write | |||||
| command-line scripts which execute system commands | |||||
| (see @{article:Command Execution}); | |||||
| - **@{function:xsprintf}**: allows you to define `sprintf()`-style functions | |||||
| which use custom conversions; and | |||||
| - **Library System**: an introspectable, inventoried system for organizing | |||||
| PHP code and managing dependencies, supported by static analysis. | |||||
| = Extending and Contributing = | |||||
| Information on extending and contributing to libphutil is available in the | |||||
| Phabricator documentation: | |||||
| - To get started as a contributor, see @{article@phabcontrib:Contributor | |||||
| Introduction}. | |||||