|
|
PHP ─ PHP for C Developers
The simplest way to think of PHP is as interpreted C that you can embed in HTML
documents. The language itself is a lot like C, except with untyped variables, a whole lot
of Web-specific libraries built in, and everything hooked up directly to your favorite Web
server.
The syntax of statements and function definitions should be familiar, except that variables
are always preceded by $, and functions do not require separate prototypes.
Here we will put some similarities and differences in PHP and C
Similarities
- Syntax: Broadly speaking, PHP syntax is the same as in C: Code is blank
insensitive, statements are terminated with semicolons, function calls have the
same structure (my_function(expression1, expression2)), and curly braces ({ and
}) make statements into blocks. PHP supports C and C++-style comments (/* */
as well as //), and also Perl and shell-script style (#).
- Operators: The assignment operators (=, +=, *=, and so on), the Boolean
operators (&&, ||, !), the comparison operators (<,>, <=, >=, ==, !=), and the
basic arithmetic operators (+, -, *, /, %) all behave in PHP as they do in C.
- Control structures: The basic control structures (if, switch, while, for) behave as
they do in C, including supporting break and continue. One notable difference is
that switch in PHP can accept strings as case identifiers.
- Function names: As you peruse the documentation, you.ll see many function
names that seem identical to C functions.
Differences
- Dollar signs: All variables are denoted with a leading $. Variables do not need to
be declared in advance of assignment, and they have no intrinsic type.
- Types: PHP has only two numerical types: integer (corresponding to a long in C)
and double (corresponding to a double in C). Strings are of arbitrary length. There
is no separate character type.
- Type conversion: Types are not checked at compile time, and type errors do not
typically occur at runtime either. Instead, variables and values are automatically
converted across types as needed.
- Arrays: Arrays have a syntax superficially similar to C's array syntax, but they are
implemented completely differently. They are actually associative arrays or hashes,
and the index can be either a number or a string. They do not need to be declared
or allocated in advance.
- No structure type: There is no struct in PHP, partly because the array and object
types together make it unnecessary. The elements of a PHP array need not be of a
consistent type.
- No pointers: There are no pointers available in PHP, although the typeless
variables play a similar role. PHP does support variable references. You can also
emulate function pointers to some extent, in that function names can be stored in
variables and called by using the variable rather than a literal name.
- No prototypes: Functions do not need to be declared before their implementation
is defined, as long as the function definition can be found somewhere in the current
code file or included files.
- Memory management: The PHP engine is effectively a garbage-collected
environment (reference-counted), and in small scripts there is no need to do any
deallocation. You should freely allocate new structures - such as new strings and
object instances. IN PHP5, it is possible to define destructors for objects, but there
is no free or delete. Destructors are called when the last reference to an object
goes away, before the memory is reclaimed.
- Compilation and linking: There is no separate compilation step for PHP scripts.
- Permissiveness: As a general matter, PHP is more forgiving than C (especially in
its type system) and so will let you get away with new kinds of mistakes.
Unexpected results are more common than errors.
|