Treat `const` as a keyword instead of a type-hint

PHP does not use `const` as a type-hint like it does with `array`,
`callable`, and so forth.  Semantically we should treat it as a
built-in keyword instead.
Add `enddeclare` to the list of keywords

This list at

    http://php.net/manual/en/reserved.keywords.php

shows that this is a reserved keyword in PHP.
Treat `eval` as a built-in keyword
Show links to the official site and wiki when customizing PHP Mode

This patch adds two URLs to the information for the PHP Mode group so
that when users run `M-x customize-group` they will see links to
websites with additional information about PHP Mode.
Update php-mode-modified for changes made today
Fix regex for namespaces in function calls

The regular expression we use to apply syntax highlighting to
namespaces in function calls breaks when it comes to sub-namespaces.
That means that PHP Mode highlights

    \Foo\bar();

correctly but it messes up

    \Foo\Bar\baz();

The proper font-face is only applied to the inner-most namespace, i.e
‘\Bar’ instead of the full ‘\Foo\Bar’.  This patch corrects that
problem so that the full namespace has the correct face.

GitHub-Issue: 26
Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Add FILTER_SANITIZE_FULL_SPECIAL_CHARS to the list of constants

See the list at

    http://us3.php.net/manual/en/filter.filters.sanitize.php

for information about the constant and its use.
Fix an error about php-extra-constants being void

It is possible for us to byte-compile PHP Mode and receive an error
about php-extra-constants being void as a variable.  We can correct
this by using the ‘autoload’ magic comment to make sure Emacs
evaluates the defcustom call that defines the variable.

GitHub-Issue: 120
Fix the compiler warning about `add-log-current-defun-header-regexp`

If we require the add-log library then the Elisp compiler will not
give us a warning about assigning a value to that variable.

GitHub-Issue: 121
Signed-off-by: Eric James Michael Ritz <lobbyjones@gmail.com>
Use extra constants and keywords from Web Mode if available

Web Mode allows users to define a custom list of additional PHP
constants and keywords.  This patch incorporates those lists into
their PHP Mode counterparts.  However, in PHP Mode we create the lists
as constants at compile-time.  That means users who reconfigure those
lists in Web Mode will not see the changes automatically propagate to
PHP Mode.
README: Replace ‘php-mode’ with ‘PHP Mode’ for consistency

For some months now I have been writing ‘PHP Mode’ for the name of the
project and so I wanted to update the README accordingly.
README: Update the ‘Status’ section
README: Use the spelling ‘GitHub’ consistently

I realize how marginal of a detail this is, but that is the correct
way to spell it.  Patches like these are a clear sign that I’m
avoiding legitimately important issues.
README: Add installation instructions
Address the compiler warning regarding `c-syntactic-context'
GitHub-Issue: 102 (Unit Test)
Fix indentation error involving magic constants

Consider the following code from the test case in this patch:

    $x = some_function(__FILE__) . '';
    $broken = true;

PHP Mode will indent the second line far to the right, aligning the
start of the line with the concatenation operator from the line
above it.  CC Mode (which handles our indentation) indents the second
line according to the settings for `knr-argdecl'.  None of the
indentation styles we provide give any value to this.

This patch modifies all of the PHP Mode indentation styles so that
`knr-argdecl' has the value of a vector with one element: the number
zero.  This tells Emacs to always position the line in the first
column so that we get the actual indentation in the example above.

This approach is not bullet-proof.  If we write the same two lines of
code inside of a function then CC Mode indents the second line using
something besides `knr-argdecl'.  However, that does not mean there
are not other situations where it may meaningfully use `knr-argdecl'
in a situation where we do not want to start a line in the first
column of the screen.  This patch fixes the specific problem of the
bug report referenced below, but there may still be corner-cases where
indentation surrounding magic constants unexpectedly breaks.

GitHub-Issue: 102
Merge branch 'ejmr/issue-102'

* ejmr/issue-102:
  Fix indentation error involving magic constants
  GitHub-Issue: 102 (Unit Test)
Stop marching indentation for try-catch blocks

This patch not only fixes the issue but also includes a test case
which has a lot of commentary explaining how CC Mode tries to indent
try-case blocks and the potential problems therein.  Our specific fix
in this patch is to add the keyword `catch' to the constant list
`php-block-stmt-2-kwds'.  The result is that it adds the keyword to
the CC Mode list `c-block-stmt-2-key' and that automatically takes
care of indenting try-catch blocks in situations where we put the
keywords and braces on the same lines together.

GitHub-Issue: 68
GitHub-Issue: 100 (Unit Test)