Skip to content

Instantly share code, notes, and snippets.

@aleron75
Created June 19, 2015 07:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aleron75/8e7cd1c86287258daecf to your computer and use it in GitHub Desktop.
Save aleron75/8e7cd1c86287258daecf to your computer and use it in GitHub Desktop.
POC that PHP doesn't allow calling private methods from inherited context
<?php
class MyParent
{
public function includeFile()
{
include "privateaccess_included.php";
}
}
class MyChild extends MyParent
{
public function publicMethod()
{
echo "Hello public world!".PHP_EOL;
}
protected function protectedMethod()
{
echo "Hello protected world!".PHP_EOL;
}
private function privateMethod()
{
echo "Hello private world!".PHP_EOL;
}
}
$myclass = new MyChild();
$myclass->includeFile();
<?php
$this->publicMethod();
$this->protectedMethod();
$this->privateMethod();
@aleron75
Copy link
Author

executing (on PHP v 5.5.22)

php -f privateaccess.php

you get the following output:

Hello public world!
Hello protected world!
PHP Fatal error:  Call to private method MyChild::privateMethod() from context 'MyParent' in /home/alessandro/NetBeansProjects/dojo/pugmore/coderetreat/privateaccess_included.php on line 4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment