| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- correctly to the scope of the functions class.
<?php
function Hello()
{
print "Wrong one\n";
}
class MyClass {
static $hello = "Hello, World\n";
function Hello()
{
print self::$hello;
}
function Trampoline()
{
Hello();
}
}
import function Trampoline from MyClass;
Trampoline();
?>
|
|
|
|
|
| |
- $this->foo.
|
| |
|
| |
|
|
|
|
|
| |
- fix isset($this)
|
| |
|
|
|
|
|
|
| |
- Better assignment handling
- More flexible operations with zval-containing objects
|
|
|
|
|
|
|
|
|
|
|
|
| |
<?php
class MyOuterClass {
const Hello = "Hello, World\n";
}
import const Hello from MyOuterClass;
print Hello;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<?php
class MyOuterClass {
class MyInnerClass {
function func1()
{
print "func1()\n";
}
function func2()
{
print "func2()\n";
}
}
}
import class * from MyOuterClass;
import function func2 from MyOuterClass::MyInnerClass;
MyInnerClass::func1();
func2();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- It isn't complete yet but I want to work on it from another machine. It
- shouldn't break anything else so just don't try and use it.
- The following is a teaser of something that already works:
<?php
class MyClass
{
function hello()
{
print "Hello, World\n";
}
class MyClass2
{
function hello()
{
print "Hello, World in MyClass2\n";
}
}
}
import function hello, class MyClass2 from MyClass;
MyClass2::hello();
hello();
?>
|
| |
|
|
|
|
|
|
|
| |
Note: only standard Zend objects are working now. This is definitely going to
break custom objects like COM, Java, etc. - this will be fixed later.
Also, this may break other things that access objects' internals directly.
|
|
|
|
|
|
| |
- and static members. The unset() opcode was luckily already suitable for
- object overloading.
|
|
|
|
|
|
|
|
|
| |
- freeing objects from id 0 instead of id 1. id 0 is not used.
- Change isset/empty opcodes to support static members and the new way of
- doing $this->foobar. Also the opcodes operate now on the hash table
- combined with the variable names so that they can be overloaded by the
- soon to be added overloading patch.
|
| |
|
|
|
|
|
| |
- Please check this and make sure it doesn't break anything.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- semantics. Example:
<?php
class MyException {
function __construct($exception)
{
$this->exception = $exception;
}
function Display()
{
print "MyException: $this->exception\n";
}
}
class MyExceptionFoo extends MyException {
function __construct($exception)
{
$this->exception = $exception;
}
function Display()
{
print "MyException: $this->exception\n";
}
}
try {
throw new MyExceptionFoo("Hello");
} catch (MyException $exception) {
$exception->Display();
}
?>
|
| |
|
| |
|
|
|
|
|
| |
- Fix a bug which I introduced a couple of months ago
|
|
|
|
|
| |
- lookups.
|
| |
|
|
|
|
|
|
| |
- Significantly improve performance of function calls by moving lowercasing
- the function name to compile-time when possible.
|
|
|
|
|
| |
- opcodes.
|
|
|
|
|
| |
exposing zend_zval_type_name().
|
|
|
|
|
| |
- Fix two compile warnings
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<?
class MyClass {
static $id = 0;
function MyClass()
{
$this->id = self::$id++;
}
function _clone()
{
$this->name = $clone->name;
$this->address = "New York";
$this->id = self::$id++;
}
}
$obj = new MyClass();
$obj->name = "Hello";
$obj->address = "Tel-Aviv";
print $obj->id;
print "\n";
$obj = $obj->_clone();
print $obj->id;
print "\n";
print $obj->name;
print "\n";
print $obj->address;
print "\n";
|
| |
|
|
|
|
|
| |
- Commented old code
|
|
|
|
|
| |
- in the class scope
|
|
|
|
|
| |
- Start work on being able to reference global and local scope
|
| |
|
| |
|
|
|
|
|
|
| |
- When inside a namespace fallback to global namespace when function
- or constant is not found.
|
| |
|
|
|
|
|
| |
- Nuke memory leak.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<?
class foo {
const GC = "foo constant\n";
}
define("GC", "Global constant\n");
namespace;
print GC;
namespace foo;
print GC;
namespace;
print foo::GC;
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- right now.
<?
$hey = "Global hey\n";
class foo {
static $hey = "Namespace hey\n";
function bar()
{
print "in foo::bar()\n";
}
}
function bar()
{
print "in bar()\n";
}
bar();
namespace foo;
bar();
namespace;
bar();
namespace foo;
$bar_indirect = "bar";
$bar_indirect();
namespace;
print $hey;
namespace foo;
print $hey;
$hey = "Namespace hey #2\n";
namespace;
print $hey;
$hey = "Global hey #2\n";
namespace foo;
print $hey;
?>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- issues which need to be looked into but basically it seems to work.
- Example:
<?php
class foo
{
const hey = "hello";
}
print foo::hey;
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<?
class foo
{
class bar
{
function init_values()
{
for ($i=1; $i<10; $i++) {
foo::bar::$hello[$i] = $i*$i;
}
}
function print_values()
{
for ($i=1; $i<10; $i++) {
print foo::bar::$hello[$i] . "\n";
}
}
}
}
foo::bar::init_values();
foo::bar::print_values();
for ($i=1; $i<10; $i++) {
print $hello[$i]?"Shouldn't be printed\n":"";
}
?>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- work:
-<?php
- class foo
- {
- function bar()
- {
- print "bar() in class bar\n";
- }
-
- class barbara
- {
- function bar()
- {
- print "bar() in class foo::barbara\n";
- }
- }
- }
-
- $obj = new foo();
- $obj->bar();
-
- $obj = new foo::barbara();
- $obj->bar();
-
|
|
|
|
|
|
|
| |
- time by name.
- This will allow the next patch of being able to instantiate nested
- classes such as new foo::bar::barbara();
|
| |
|
| |
|
|
|
|
|
| |
- the whole CVS tree is work in progress
|