Doc #52605 [Opn->Csd]: get_class(NULL) returns class name when called insid member function of a class
| From: | degeberg@php.net | Date: | Sun, 15 Aug 2010 07:17:37 +0000 |
| Subject: | Doc #52605 [Opn->Csd]: get_class(NULL) returns class name when called insid member function of a class | ||
| References: | 1 | Groups: | php.doc.bugs |
| Request: | Send a blank email to doc-bugs+get-4858@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=52605&edit=1
ID: 52605
Updated by: degeberg@php.net
Reported by: rahul dot pache at gmail dot com
Summary: get_class(NULL) returns class name when called insid
member function of a class
-Status: Open
+Status: Closed
Type: Documentation Problem
Package: Documentation problem
Operating System: windows 7
PHP Version: 5.3.3
-Assigned To:
+Assigned To: degeberg
Block user comment: N
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
Previous Comments:
------------------------------------------------------------------------
[2010-08-15 09:17:25] degeberg@php.net
Automatic comment from SVN on behalf of degeberg
Revision: http://svn.php.net/viewvc/?view=revision&revision=302255
Log: Fixed PHP bug #52605 (get_class(NULL) returns class name when
called insid member function of a class)
------------------------------------------------------------------------
[2010-08-15 04:06:15] cataphract@php.net
This is actually a documentation problem.
The convention is to give internal functions that have optional
arguments a default value and have them behave the same way when the
default value is given and when the argument's not passed at all.
In PHP 5.2, you could not pass an argument to get_class and have it have
the same behavior as when nothing is passed. This was fixed in PHP 5.3
by making "NULL" the default argument value.
------------------------------------------------------------------------
[2010-08-14 23:31:00] rahul dot pache at gmail dot com
Description:
------------
get_class(NULL) returns class name when called inside member function of
a
class.
<?php
CLASS foo {
public static function bar() {
echo get_class(NULL);
}
public function baz() {
echo get_class(NULL);
}
}
foo::bar();
echo "<br>";
$f = new foo();
$f->baz();
?>
output:
foo
foo
Expected output:
Warning: get_class() called without object from outside a class in
filename.php
on line 4
Warning: get_class() called without object from outside a class in
filename.php
on line 7
-------Message--------
When some string/int is sent an expected output is produced that is a
warning
message.
I am using EasyPHP 5.3.3. This error does not exists in PHP 5.2.6
----------------------
------phpinfo()------- [just first table]
System Windows NT RAHUL-PC 6.1 build 7600 (Unknow Windows version
Ultimate
Edition) i586
Build Date Jul 21 2010 20:00:47
Compiler MSVC6 (Visual C++ 6.0)
Architecture x86
Configure Command cscript /nologo configure.js "--enable-snapshot-build"
"--disable-isapi" "--enable-debug-pack" "--disable-isapi"
"--without-mssql" "--
without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=D:\php-
sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-
sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=D:\php-
sdk\oracle\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/"
"--
enable-com-dotnet" "--with-mcrypt=static"
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path C:\Windows
Loaded Configuration File D:\EasyPHP\apache\php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
PHP API 20090626
PHP Extension 20090626
Zend Extension 220090626
Zend Extension Build API220090626,TS,VC6
PHP Extension Build API20090626,TS,VC6
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
Registered PHP Streams php, file, glob, data, http, ftp, zip,
compress.zlib,
compress.bzip2, phar
Registered Stream Socket Transports tcp, udp
Registered Stream Filters convert.iconv.*, mcrypt.*, mdecrypt.*,
string.rot13, string.toupper, string.tolower, string.strip_tags,
convert.*,
consumed, dechunk, zlib.*, bzip2.*
Test script:
---------------
<?php
CLASS foo {
public static function bar() {
echo get_class(NULL);
}
public function baz() {
echo get_class(NULL);
}
}
foo::bar();
echo "<br>";
$f = new foo();
$f->baz();
?>
Expected result:
----------------
Warning: get_class() called without object from outside a class in
filename.php on
line 4
Warning: get_class() called without object from outside a class in
filename.php on
line 7
Actual result:
--------------
foo
foo
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52605&edit=1