]> granicus.if.org Git - php/commitdiff
- New tests
authorFelipe Pena <felipe@php.net>
Thu, 5 Jun 2008 18:33:00 +0000 (18:33 +0000)
committerFelipe Pena <felipe@php.net>
Thu, 5 Jun 2008 18:33:00 +0000 (18:33 +0000)
Zend/tests/bug45186.phpt [new file with mode: 0644]
Zend/tests/bug45186_2.phpt [new file with mode: 0644]

diff --git a/Zend/tests/bug45186.phpt b/Zend/tests/bug45186.phpt
new file mode 100644 (file)
index 0000000..7cd54e2
--- /dev/null
@@ -0,0 +1,54 @@
+--TEST--
+Bug #45186 (__call depends on __callstatic in class scope)
+--FILE--
+<?php
+
+class bar  {
+       public function __call($a, $b) {
+               print "__call:\n";
+               var_dump($a);
+       }
+       static public function __callstatic($a, $b) {
+               print "__callstatic:\n";
+               var_dump($a);
+       }
+       public function test() {
+               self::ABC();
+               bar::ABC();
+               call_user_func(array('BAR', 'xyz'));
+               call_user_func('BAR::www');
+               call_user_func(array('self', 'y'));
+               call_user_func('self::y');
+       }
+       static function x() { 
+               print "ok\n";
+       }
+}
+
+$x = new bar;
+
+$x->test();
+
+call_user_func(array('BAR','x'));
+call_user_func('BAR::www');
+call_user_func('self::y');
+
+?>
+--EXPECTF--
+__call:
+string(3) "ABC"
+__call:
+string(3) "ABC"
+__call:
+string(3) "xyz"
+__call:
+string(3) "www"
+__call:
+string(1) "y"
+__call:
+string(1) "y"
+ok
+__callstatic:
+string(3) "www"
+
+Fatal error: Cannot access self:: when no class scope is active in %s on line %d
diff --git a/Zend/tests/bug45186_2.phpt b/Zend/tests/bug45186_2.phpt
new file mode 100644 (file)
index 0000000..5de9ec7
--- /dev/null
@@ -0,0 +1,50 @@
+--TEST--
+Bug #45186.2 (__call depends on __callstatic in class scope)
+--FILE--
+<?php
+
+class bar  {
+       public function __call($a, $b) {
+               print "__call:\n";
+               var_dump($a);
+       }
+       public function test() {
+               self::ABC();
+               bar::ABC();
+               call_user_func(array('BAR', 'xyz'));
+               call_user_func('BAR::www');
+               call_user_func(array('self', 'y'));
+               call_user_func('self::y');
+       }
+       static function x() { 
+               print "ok\n";
+       }
+}
+
+$x = new bar;
+
+$x->test();
+
+call_user_func(array('BAR','x'));
+call_user_func('BAR::www');
+call_user_func('self::y');
+
+?>
+--EXPECTF--
+__call:
+string(3) "ABC"
+__call:
+string(3) "ABC"
+__call:
+string(3) "xyz"
+__call:
+string(3) "www"
+__call:
+string(1) "y"
+__call:
+string(1) "y"
+ok
+
+Warning: call_user_func() expects parameter 1 to be a valid callback, class 'bar' does not have a method 'www' in %s on line %d
+
+Fatal error: Cannot access self:: when no class scope is active in %s on line %d