Commit Graph

640 Commits

Author SHA1 Message Date
Marcus Boerger
909bd62a43 Show name of missing function as typed 2003-09-17 11:06:11 +00:00
Marcus Boerger
6bf04aff5b Revert - need to look for a better solution 2003-09-15 21:00:38 +00:00
Marcus Boerger
16a816b92c Bugfix #25547 2003-09-15 20:20:14 +00:00
Marcus Boerger
cdc5d69ec2 Fix foreach() called with non array 2003-09-07 23:09:30 +00:00
Marcus Boerger
95649ab260 Tests show updating consts must happen once at runtime (revert optimization).
Add tests for static properties.
2003-09-04 16:00:01 +00:00
Marcus Boerger
1b39a5aa2c Fix static properties.
#
# There's only an errormessage missing which i'll wommit as soon as i find out
# how to do it best. But besides that damn message everything works now and all
# inheritance rules apply.
#
2003-09-03 16:13:40 +00:00
Marcus Boerger
9702c70a35 Synch/Unify error messages related to function/method calls 2003-09-02 14:08:59 +00:00
Marcus Boerger
fb4a63a07d Synch error message with other one to fix tests 2003-08-31 11:38:31 +00:00
Marcus Boerger
f1c92fa4c5 - Calling abstract methods should be a error for consistency reason.
- So in reflection_api we use the reflection_exception again.
2003-08-30 23:51:42 +00:00
Marcus Boerger
f7f49e4584 - The compiler can't detect all abstract function calls so we need to check.
# In this case throwing a dedicated exception is better than the error we
# show when the compiler can detect the abstract call because its run-time.
2003-08-30 11:40:37 +00:00
Sascha Schumann
2e36578cfd Add format attribute to a number of functions
Kill a few warnings
2003-08-28 16:41:20 +00:00
Zeev Suraski
0ac5bbd780 Never, ever, overwrite the refcount element of a connected zval! 2003-08-24 15:59:19 +00:00
Marcus Boerger
fbda310a41 - Flag ctor/dtor methods
- Use this to prevent memleaks when an exception gets thrown in ctors.
# I added the dtor flags for consistency, atm a compareable check in
# isn't necessary for destruction. But anyway i'll use this for the
# Relection API too.
2003-08-23 15:38:58 +00:00
Wez Furlong
1a40feb965 fix build 2003-08-19 01:15:47 +00:00
Zeev Suraski
6ab9c1a336 Prevent access to internal engine functionality 2003-08-18 23:11:58 +00:00
Zeev Suraski
49c4866a47 - Improve tracking
- Fix several overloading issues
2003-08-18 22:31:11 +00:00
Marcus Boerger
717b5afe1d Fix warnings 2003-08-17 18:56:54 +00:00
Marcus Boerger
6dbc0bdc35 Remove unnecessary if 2003-08-17 12:38:27 +00:00
Marcus Boerger
1e17ebe047 Put the code where it belongs - fixes a warning and confusion 2003-08-17 12:27:33 +00:00
Marcus Boerger
9c68f33b51 Implement a TBD: JMP to the end of foreach 2003-08-17 12:17:34 +00:00
Sascha Schumann
b29b4441db Restrict scope of inline functions to compile unit
Submitted by: Jason Greene <jason@inetgurus.net>
2003-08-15 21:02:35 +00:00
Marcus Boerger
de32c1de56 Fix ZTS 2003-08-04 19:57:53 +00:00
Stanislav Malyshev
a3dc90d8d0 use get_obj_zval_ptr 2003-08-04 10:30:42 +00:00
Stanislav Malyshev
4d51526350 Fix #24884 - clone $this 2003-08-04 09:10:52 +00:00
Zeev Suraski
f8bbafd604 ntroduce infrastructure for supplying information about arguments,
including:

- Whether or not to pass by ref (replaces the old arg_types, with arg_info)
- Argument name (for future use, maybe introspection)
- Class/Interface name (for type hints)
- If a class/interface name is available, whether to allow a null instance

Both user and builtin functions share the same data structures.

To declare a builtin function that expects its first arg to be an instance
of class 'Person', its second argument as a regular arg, and its third by
reference, use:

ZEND_BEGIN_ARG_INFO(my_func_arg_info, 0)
    ZEND_ARG_OBJ_INFO(0, someone, Person, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO();

and use my_func_arg_info as the arg_info parameter to the ZEND_FE() family
of macros.

The first arg to each ZEND_ARG_*() macro is whether or not to pass by ref.

The boolean arg to ZEND_BEGIN_ARG_INFO() tells the engine whether to treat
the arguments for which there's no explicit information as pass by reference
or not.
The boolean argument to ZEND_ARG_OBJ_INFO() (4th arg) is whether or not to allownull values.
2003-08-03 17:40:44 +00:00
Zeev Suraski
8b4bd4a8ec Clean up. extended_value can only contain either ZEND_UNSET_DIM or
ZEND_UNSET_OBJ.
2003-08-03 08:23:25 +00:00
Zeev Suraski
9d7122fb53 Generalize fetch_class 2003-08-03 08:21:08 +00:00
Marcus Boerger
4fa6eac1f8 Fix warning 2003-08-02 11:39:15 +00:00
Zeev Suraski
accd6b623b Finish the array overloading patch 2003-07-31 09:06:11 +00:00
Zeev Suraski
d95a6916de Cleanup 2003-07-31 08:24:55 +00:00
Andi Gutmans
8264eedc48 - Fix problem with hash when updating same bucket with data of different
sizes one after another.
- Fix number of arguments to read_dimension.
2003-07-30 19:47:39 +00:00
Zeev Suraski
68fa4e50f8 Get rid of an opcode 2003-07-30 17:49:27 +00:00
Zeev Suraski
f41f62c2ff Support overloading of $foo["bar"] += "baz" 2003-07-30 17:40:54 +00:00
Zeev Suraski
c0b46739ca Improve array overloading - support unset($foo["bar"]) 2003-07-30 17:12:06 +00:00
Stanislav Malyshev
1cc89effdb clean the right one 2003-07-27 14:02:46 +00:00
Stanislav Malyshev
9fa2d52310 make clone and throw coexist peacefully 2003-07-27 13:20:31 +00:00
Stanislav Malyshev
c3c136ea4b fix #24635: clean hash before putting into cache 2003-07-27 12:46:14 +00:00
Zeev Suraski
b54ae17904 Fix logic and comments in ASSIGN_DIM 2003-07-24 16:51:35 +00:00
Zeev Suraski
0610515703 Fix assignments to numeric array indices 2003-07-24 12:56:05 +00:00
Zeev Suraski
03b6af07eb Support references in foreach()
Syntax:
  foreach ($arr as &$val)
  foreach ($arr as $key => &$val)
2003-07-24 12:38:33 +00:00
Zeev Suraski
e25d5e7f7a Fix binary safety in foreach() keys (fixes bug #24783) 2003-07-24 08:36:39 +00:00
Stanislav Malyshev
237116aa27 Remove namespace leftovers 2003-07-23 08:58:46 +00:00
Zeev Suraski
cf90932a05 Improve infrastructure of numeric handling of elements in symbol tables.
When you want to work with a symbol table, and you don't know whether you
have a numeric ("string that looks like a number") or a string element in
your hands, use zend_symtable_*() functions, in place of zend_hash_*()
functions.
2003-07-22 16:06:07 +00:00
Zeev Suraski
6a50660cfe Fix isset()/empty() for non-trivial object elements
(API change - read_property now accepts an extra element)
Fixes bug #24436
2003-07-22 13:49:33 +00:00
Zeev Suraski
754529920d Revert fix for #24729, and refix 2003-07-21 07:42:15 +00:00
Marcus Boerger
98963e3c75 Go with a better fix for #24729 2003-07-21 07:13:26 +00:00
Marcus Boerger
8ac334289a Bugfix #24729 = new ; causes crash when is not set 2003-07-20 20:45:59 +00:00
Marcus Boerger
7bbe6080f2 Fix uncloneable objetcs 2003-07-20 17:46:21 +00:00
Zeev Suraski
3a898f6d4e More cleanup for assign-op handling of objects 2003-07-16 08:57:08 +00:00
Zeev Suraski
d9fb6b672a initial refactoring for assign-op handling of objects 2003-07-08 11:52:21 +00:00
Zeev Suraski
3cfa6a68f4 Add get_dim callback 2003-07-07 10:53:27 +00:00
Zeev Suraski
ed97b9fb6e Fix naming convention 2003-07-07 10:47:25 +00:00
Derick Rethans
d16f0a6333 - Help Zeev fixing ghosts :) 2003-07-07 10:16:05 +00:00
Zeev Suraski
938c0fbc19 Initial support for overloading of array syntax for objects (very initial) 2003-07-07 09:00:36 +00:00
Stanislav Malyshev
8f0234160a enable Classname() constructor to be called via parent::__constructor() 2003-07-03 12:03:11 +00:00
Zeev Suraski
eb224d4a5f Throughly fix scoping change. Fixes, among other things, bug #24403 2003-07-02 17:48:18 +00:00
Zeev Suraski
d245c52e0c Fix for bug #22367.
Heads up - this will break syntactical compatiblity, return($foo) will
not work with functions that return references - return $foo should be used
instead.  It never worked well before, and caused all sorts of odd bugs.
It *might* be possible to support this specifically, albeit unlikely
2003-07-02 15:06:10 +00:00
Marcus Boerger
40dd3f4f88 __clone might not be defined 2003-07-01 21:30:21 +00:00
Marcus Boerger
a04cba504f Fix __clone visibility 2003-07-01 20:02:27 +00:00
Andi Gutmans
288dacca0c - ZE coding style requires if ( instead of if( 2003-06-30 20:22:35 +00:00
Zeev Suraski
53acb1814e Semantically it's a refcount increase, not a lock... 2003-06-30 13:51:48 +00:00
Zeev Suraski
6f9d0da2e5 Fix 'global' implementation (fixes, at least, bug #24396 2003-06-30 13:47:12 +00:00
Zeev Suraski
bc4c7c6a6d Fix crash :) 2003-06-23 22:14:38 +00:00
Stanislav Malyshev
c3fb1eac15 FIx leak 2003-06-23 14:48:59 +00:00
Zeev Suraski
cbec89a358 Fix complex expressions for class names in NEW 2003-06-22 10:50:43 +00:00
Stanislav Malyshev
b48a86581a no need to init zval - assignment will init 2003-06-16 15:43:40 +00:00
Stanislav Malyshev
f205abb3f8 Fix bug #22592 - cascading assignments to string offsets 2003-06-16 15:41:02 +00:00
James Cox
f68c7ff249 updating license information in the headers. 2003-06-10 20:04:29 +00:00
Stanislav Malyshev
c68924dcbc remove NS leftover 2003-06-09 14:05:12 +00:00
Zeev Suraski
910dff4c2b Fix indirect reference calls to bogus function names 2003-06-09 07:39:55 +00:00
Zeev Suraski
faefdb7bdd Fix handling of object property assignments in switch expressions
(bug #23925)
2003-06-08 18:52:53 +00:00
Stanislav Malyshev
f7f5a5ea6b MEGA-patch: namespaces are R.I.P. 2003-06-02 12:13:11 +00:00
Sterling Hughes
5bb29cfaeb revert the function call caching patch until a new solution is decided
upon.
2003-05-31 18:31:28 +00:00
Stanislav Malyshev
95a3fd7b3c fix crash on exceptions when return value of the inside function is used 2003-05-30 10:05:29 +00:00
Sterling Hughes
88b2f89eee Cache function call lookups with loops (store in a temporary variable on the
result opline).
Assuming lazy concensus on message that GeorgeS sent to the list last week
2003-05-28 20:42:40 +00:00
Sterling Hughes
ae9106521a move HANDLE_NUMERIC() from the hash table implementation upstream to the
places that actually need to use it.
2003-05-23 15:11:15 +00:00
Marcus Boerger
475594c861 No need to copy here unless implicit_clone is active (noticed by rob) 2003-05-22 19:13:20 +00:00
Marcus Boerger
7af8eadd57 Make zend_str_tolower_copy() a copy function (like stccpy).
Supply a dup version (like estrdup).
Fix tolower() handling.
# Havin copy and dup allows to use the faster version even with
# memory not allocated by emalloc.
2003-05-21 21:59:40 +00:00
Sterling Hughes
b5ca4de525 Bottom drawer optimization to avoid this comparison, but this OP is executed
quite often (all of the fetch_* ops)
2003-05-21 11:48:55 +00:00
Marcus Boerger
851bd22f82 No need to copy the zval unless __clone() is called 2003-05-20 20:20:57 +00:00
Sterling Hughes
54764e9848 use the new zend_str_tolower_copy() function 2003-05-20 18:44:24 +00:00
Marcus Boerger
37a88305e6 Fix exception memleak 2003-05-19 20:40:56 +00:00
Stanislav Malyshev
462eff3497 fix __clone 2003-05-19 17:12:56 +00:00
Marcus Boerger
fcf92e7e17 Modify the abstract error message so that it shows up to three methods not implemented.
# The solution is generic so that we could change the number of methods shown. But the
#problem is that error message here have a maximum length of 1024 chars.
2003-05-04 19:24:24 +00:00
Marcus Boerger
38da5d0124 Fix warnings 2003-05-04 19:11:48 +00:00
Stanislav Malyshev
c5b1314e05 make import * fail if such classes or functions already there 2003-04-21 12:14:12 +00:00
Stanislav Malyshev
800de8acb0 allow class_exists() to work with namespaces too.
add CLASS_IS_NAMESPACE macro
2003-04-02 15:28:31 +00:00
Andrei Zmievski
1ad9bd68ff Stas's patch on zend_execute.c (1.448 -> 1.449) resulted in a bug where
the namespaced member accesses didn't work. This should hopefully
correct it.
2003-04-01 21:02:02 +00:00
Andrei Zmievski
62f9eb8006 Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
okay with engine folks.
2003-04-01 19:37:04 +00:00
Sebastian Bergmann
8c06829b11 ZTS fix. 2003-03-30 13:40:40 +00:00
Stanislav Malyshev
bd4cdab9cf Fix namespace switch 2003-03-30 12:39:49 +00:00
Stanislav Malyshev
1972a656e7 fix fetch_class buglet 2003-03-27 17:57:47 +00:00
Stanislav Malyshev
43e87093c1 Un-nest namespaces - now namespace X { namespace Y {} } is a parse error
Also refine namespaced includes
2003-03-26 20:42:23 +00:00
Sebastian Bergmann
3fc852824f Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_entry(). 2003-03-26 07:44:11 +00:00
Stanislav Malyshev
268a14e049 Fix {include|require}_once error message - if open
fails, don't use tream, use original name.
2003-03-24 11:54:42 +00:00
Zeev Suraski
d405373270 Fix handling of ::func() 2003-03-11 23:19:45 +00:00
foobar
66052056c7 Better fix for the memleaks (bug 19943) by Moriyoshi 2003-03-07 00:28:25 +00:00
Zeev Suraski
805f98065d Fix warnings 2003-03-06 23:45:50 +00:00
Zeev Suraski
ce4690685d Fix error message 2003-03-06 23:09:57 +00:00
Zeev Suraski
0338111950 Require abstract classes to be explicitly declared 'abstract', in order to
avoid making developers traverse the entire class/interface hierarchy
before they can figure out whether a class is instantiable
(ok, so it makes sense :)
2003-03-06 22:53:23 +00:00
foobar
4a8abb2f3d Fixed bug #19943 (the memleaks) 2003-03-06 16:27:05 +00:00
Zeev Suraski
44347cf64b Change opcode name 2003-03-06 14:42:36 +00:00
Zeev Suraski
ff76511a08 Add class type hints 2003-03-06 14:31:17 +00:00
Zeev Suraski
6ad2420d2d Implement $obj::static_func() 2003-03-05 13:25:33 +00:00
Zeev Suraski
26dd8492ed Add support for interfaces 2003-03-05 11:14:44 +00:00
Stanislav Malyshev
e645f20d07 Allow namespaces to have a number of parts. I.e., now you can do:
namespace foo {
	function abc() {}
}
...
namespace foo {
	functio def() {}
}
2003-02-20 19:01:53 +00:00
Zeev Suraski
955636af69 Avoid using a C++ reserved word 2003-02-18 17:18:28 +00:00
Wez Furlong
e52aac940f Implement simple stream support in the ZE scanners. 2003-02-18 09:37:54 +00:00
Zeev Suraski
d22cc2f329 Improve handling of static member variables 2003-02-17 14:06:39 +00:00
Zeev Suraski
ac0f7d9ed0 Fix complex cases of self-assignments (bugs #21600, #22231) 2003-02-16 19:18:23 +00:00
Zeev Suraski
f079bb65ff Make EG(This) and EG(scope) available to internal methods 2003-02-16 19:10:27 +00:00
Zeev Suraski
004947221e Revert patches - they weren't ready yet! 2003-02-16 18:34:48 +00:00
Georg Richter
60d1b378ed fixed compiler warning 2003-02-16 18:04:29 +00:00
Georg Richter
c08bfd2e3f tested patch from Zeev (fixes oo-bug in ext/mysqli) 2003-02-16 17:47:23 +00:00
Sebastian Bergmann
6d300baf84 ZTS fixes 2003-02-16 11:34:49 +00:00
Stanislav Malyshev
a4c3b2ce80 Namespace patch. Big changes:
1. Nested classes are gone.
2. New syntax for namespaces:
namespace foo {
	class X { ... }
	function bar { ... }
	var x = 1;
	const ZZ = 2;
}
3. Namespaced symbol access: $x = new foo::X; - etc.
For now, namespaces are case insensitive, just like classes.
Also, there can be no global class and namespace with the same name
(to avoid ambiguities in :: resolution).
2003-02-16 11:12:43 +00:00
Zeev Suraski
778ce2495d whitespace 2003-02-10 11:49:21 +00:00
Zeev Suraski
dbb73d8f1e Add ability to reference self:: and parent:: in constant initializers
(bug #21849)
2003-02-10 09:45:27 +00:00
Zeev Suraski
edc8e67e3b Remove redundant code 2003-02-10 08:32:44 +00:00
Zeev Suraski
55a66b1cb2 Fix the array() problem (and probably some other problems too) 2003-02-09 17:30:50 +00:00
Zeev Suraski
f660d28143 - read_property cleanup
- Implement unset/isset/empty for PPP
2003-02-05 14:27:30 +00:00
Zeev Suraski
17439aa9c4 Rework static class properties - now supports access restrictions 2003-02-05 13:35:52 +00:00
Zeev Suraski
61bd944b32 Core rearrangements - move Zend Objects specific code to their
specific implementation file
2003-02-02 16:17:25 +00:00
foobar
333406bdc2 - Added some missing CVS $Id$ tags, headers and footers. 2003-02-01 01:49:15 +00:00
Zeev Suraski
4b97a8dffd Code rearrangements 2003-01-29 15:02:57 +00:00
Zeev Suraski
8f52bf6835 Fix assignments to $this.
Fixes the 'make install' problem reported on php-dev
2003-01-29 08:55:12 +00:00
Zeev Suraski
6155a1fa24 Allow methods in parent classes to call protected methods in derived
classes
2003-01-28 09:44:18 +00:00
Stanislav Malyshev
3a4ace13b4 Replace MAKE_VAR opcode with special 'data' opcode
This opcode is not executeable but only holds data for opcodes
that need more than two arguments (presently only ASSIGN_OBJ and the ilk but
in the future also ASSIGN_DIM)
2003-01-27 15:13:01 +00:00
Zeev Suraski
76c93412d3 Let the scope propagate to internal functions 2003-01-23 16:40:30 +00:00
Ilia Alshanetsky
72cd67b3ca Fixed bug #21814 (Allow booleans to be used as array keys). 2003-01-22 14:48:30 +00:00
Ilia Alshanetsky
12d2b01a25 Fixed bug #20933 (isset/empty didn't work when used on string offsets). 2003-01-16 00:44:17 +00:00
Andi Gutmans
c073b76aac - Change "is" to "instanceof" as it explains better what the operator means.
- "is_a" was also appropriate but ugly.
2003-01-14 21:29:23 +00:00
Zeev Suraski
424e98f4e2 Implemented compatibility mode
To enable - zend2.implicit_clone = on in php.ini or using ini_set()
2003-01-12 12:39:06 +00:00
Andi Gutmans
76c663b321 - Fix typo and whitespace 2003-01-11 17:04:16 +00:00
Derick Rethans
2c44fab3a0 - Ported the zend_execute_internal hook to ZendEngine2. 2003-01-11 16:12:44 +00:00
Zeev Suraski
77208ec4d6 Fix incorrect linkage of access-levels, when using private methods 2003-01-02 13:58:08 +00:00
Sebastian Bergmann
2c5d4b8c23 Bump year. 2002-12-31 15:59:15 +00:00
Zeev Suraski
ce69b6f6ee Support private/protected constructors 2002-12-07 21:37:09 +00:00
Zeev Suraski
c087d9e9e4 Fix error messages 2002-12-07 15:53:37 +00:00
Zeev Suraski
e062dffe6c - Implement public/protected/private methods.
- Prevent instantiation of classes with abstract methods.
Based in part on Marcus's patch.
2002-12-06 17:09:44 +00:00
Andi Gutmans
671fff2fde h WHitespace 2002-11-30 11:20:25 +00:00
Andi Gutmans
6aa90a75bd - FN_IS_STATIC -> FN_STATIC 2002-11-24 20:32:49 +00:00
Andi Gutmans
e8214a3384 - Commit Marcus' cleanup of abstract and static inheritance and improve
- error messages
2002-11-23 20:44:12 +00:00
Sebastian Bergmann
ba1f645030 Show class name as well. Patch by Marcus Börger. 2002-11-22 06:19:04 +00:00
Sebastian Bergmann
da0e29e92f Show the name of the abstract method in the error. 2002-11-21 14:20:25 +00:00
Andi Gutmans
227f7838d6 - Fix build (thanks Marcus)
- Implement abstract methods, syntax:
-    abstract function foo($vars);
- I don't see any reason why modifiers such as static/public need to be
- used with abstract. PHP is weakly typed and there would be no meaning to
- this anyway. People who want a strictly typed compiled language are
- looking in the wrong place.
2002-11-20 18:00:23 +00:00
Zeev Suraski
4be862b02c MFZE1 - error_reporting fix 2002-11-19 17:51:30 +00:00
Stanislav Malyshev
29695934ed fix the leak 2002-11-17 17:57:57 +00:00
Stanislav Malyshev
3944ce41c3 semi-fix string offsets crash - now it doesn't crash, but still leaks 2002-11-13 15:13:24 +00:00
Sebastian Bergmann
155c453138 Fugbix typo. 2002-11-11 18:27:32 +00:00