How to program for the future in PHP
TL;DR: Refrain from ´private´ methods.
Still in version 4.0 of WordPress ´wp-includes/wp-db.php´ (but introduced in changeset 27075) we find this setup:
{[ .do_query | 1.hilite(=php=) ]}
It’s quite unfortunate that ´_do_query´ was declared ´private´ because if you inherit from ´wpdb´ (see the header of the class) and override ´public function query´ then you also have to override ´_do_query´ just because.
In fact, due to how private functions work in PHP (they can only be called from methods of the same class that defines them), you cannot call the inherited ´function _do_query´ from your overridden ´function query´, which instead is the most natural thing to do.
If possible, always prefer ´protected´ to ´private´ in PHP. If it had been declared ´protected function _do_query´ I could have called its inherited code from my ´public function query´.
How to upgrade Subversion on OSX
I have OSX 10.9.5 and Subversion 1.7.17 (r1591372).
For developing WordPress with PHPStorm I seem to need Subversion 1.8 due to this notification:
Which shows this error:
It reads ´svn: E155021: This client is too old to work with the working copy at ‘/Users/andrea/dev/wp/vvv/www/wordpress-develop’ (format 31). You need to get a newer Subversion client. For more details, see http://subversion.apache.org/faq.html#working-copy-format-change´.
Here they say
Now, IntelliJ IDEA offers different integration options for each specific Subversion:
1.6 – SVNKit only
1.7 – SVNKit and command line client
1.8 – Command line client onlyIf you opt to the command line client, make sure you have its binaries installed on your machine, because they are not bundled with IntelliJ IDEA.
So I checked my system:
$ svn --version svn, version 1.7.17 (r1591372) compiled Aug 7 2014, 17:03:25 ...
Then I installed Subversion all together using brew.
$ brew update Updated Homebrew from 80f2d299 to 93e17517. ... $ brew info subversion subversion: stable 1.8.10 (bottled) https://subversion.apache.org/ Not installed ... $ brew install subversion ==> Installing dependencies for subversion: readline, sqlite, openssl ==> Installing subversion dependency: readline ... ==> Installing subversion ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/subversion-1.8.10_1.mavericks.bottle.3.tar.gz ######################################################################## 100,0% ==> Pouring subversion-1.8.10_1.mavericks.bottle.3.tar.gz ==> Caveats svntools have been installed to: /usr/local/opt/subversion/libexec Bash completion has been installed to: /usr/local/etc/bash_completion.d ==> Summary 🍺 /usr/local/Cellar/subversion/1.8.10_1: 116 files, 9,4M
It took some seconds to download and compile, but eventually I got:
$ svn --version svn, version 1.7.17 (r1591372) compiled Aug 7 2014, 17:03:25 ...
Uh?
$ which -a svn /usr/bin/svn /usr/local/bin/svn
OK, then I tried editing my ´~/.bash_profile´:
export PATH="/usr/local/bin:$PATH"
After which I had:
$ source ~/.bash_profile $ svn --version svn, version 1.8.10 (r1615264) compiled Aug 25 2014, 10:57:58 on x86_64-apple-darwin13.3.0 ...
Then I closed PHPStorm and opened it again… But PHPStorm error didn’t go away !!
Then I searched PHPStorm preferences for “svn” and tried forcing ´/usr/local/bin/svn´:
Which immediately made the error disappear:
So I undid the PATH change, just to be sure OSX still sees Subversion 1.7, and all is working fine.