php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #67620 is_callable and self
Submitted: 2014-07-15 08:35 UTC Modified: 2016-01-15 13:08 UTC
Votes:2
Avg. Score:4.0 ± 1.0
Reproduced:2 of 2 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: remyfox at hotmail dot com Assigned: danack (profile)
Status: Assigned Package: Unknown/Other Function
PHP Version: 5.4Git-2014-07-15 (Git) OS: windows 7
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2014-07-15 08:35 UTC] remyfox at hotmail dot com
Description:
------------
PHP 5.4.7

When "self" is provided to is_callable, while inside a class that doesn't contain the method nor has a parent with the method, it will behave as $this.

Subsequent calling of the method which had been falsely declared callable, will result in 

Fatal error: Call to undefined method A::y() in *__FILE__* on line 5

Test script:
---------------
<?php
	class A {
		public function x() {
			if (is_callable(array($this, "y"))) $this::y();
			if (is_callable(array("self", "y"))) self::y();
		}
	}
	
	class B extends A {
		public function y() {}
	}
	
	(new B())->x();
?>

Expected result:
----------------
Self should behalve like __CLASS__ in the example above and the fatal error should be avoided.


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-01-15 13:08 UTC] danack@php.net
-Assigned To: +Assigned To: danack
 [2016-01-15 13:08 UTC] danack@php.net
Assigning to myself. This will require an RFC to change.

https://wiki.php.net/rfc/consistent_callables
 
PHP Copyright © 2001-2017 The PHP Group
All rights reserved.
Last updated: Sun Nov 19 01:31:42 2017 UTC