* Replace `ob_get_contents();ob_clean()` with `ob_get_clean()`
`ob_get_clean()` is equivalent to `ob_get_contents()` followed by `ob_clean()`.
* Replace `intval()` calls with `(int)` type cast
This is a micro-optimization because `intval()` is a function call, and the type cast is about 6 times fast.
* Replace `preg_replace` call that could be done with an `rtrim()` call
In `./error.php`, there is a `preg_replace('!/+$!', '', $URI);` call that essentially is equivalent to `rtrim()`, that both calls removing trailing slash characters in `$URI`.
The `rtim()` call is more legible and faster.
* Combine consecutive `str_replace` calls to a single `str_replace` call
* Use short ternary operator where possible
Improves code readability.
* Cascade various `else` statements where possible
Cleans up the code by removing unnecessary `else` blocks and moving the code to the parent context if the previous `if` block exits the function by either terminating the script, or with a `return` statement.
* Combine multiple `isset()` calls to a single `isset()`
`isset()` accepts multiple parameters and returns `true` only if all of the parameters are `isset`. It makes sense to combine multiple individual `isset` calls to a single call for better readability.
* Replace `for` loop with a `foreach` loop
* Remove unnecessary character escapes in regular expressions
Regular expression special characters are context-sensitive. For example, special characters such as `.` are not considered special within square braces (`[]`).
This removes several of such instances that certain characters are escaped, but it is not strictly necessary within the context. This improves the readability of the expression.
See more information at [PHP.Watch: Writing better Regular Expressions in PHP](https://php.watch/articles/php-regex-readability#reduce-escape)
* Remove unnecessary break statement
* Remove unnecessary PHP close tags
* Remove redundant JSON_ERROR_NONE check
Remove unnecessary `json_last_error() == JSON_ERROR_NONE` where the decoded object is inspected already.
Closes GH-603.
This patch adds some missing newlines, trims some multiple redundant
final newlines into a single one, and trims few redundant leading
newlines.
According to POSIX, a line is a sequence of zero or more non-'<newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.
C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."
Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.
[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
Since the UX research I conducted into this change was getting two
shrugging +1s on #php.pecl, I'm happy if someone wants to revert this
and replace it with something better later.
I've deliberately implemented this in such a way as to allow for further social
media buttons down the track if we want. I've also kept it intentionally
unobtrusive: it's there (previously, we only mentioned the Twitter account on
the mailing lists page, which was weird), but pretty subtle in the sidebar.
There's one additional dependency: a one glyph subset of Font Awesome (created
using Fontello) containing the Twitter icon. (Should we later want to include
other icons from Font Awesome, fonts/Font-Awesome/config.json can be fed back
into Fontello as a starting point.) The additional style sheet and font file
are cached correctly, and once loaded by the user, shouldn't need to be loaded
again, as with Fira Sans. On a cold page load, this adds two requests and just
under 3 kB to the page load.
I consider all of this reasonable, both technically and in terms of promoting
@official_php a little more, but I won't be terribly offended if someone wants
to revert this.
Some elements are sized relative to their parent (such as sub, sup); these were
left as em. Adjusted many line-heights, paddings and margins accordingly.
Also simplified some styles as a result.