Hello Derick,
Tuesday, October 4, 2005, 9:49:00 AM, you wrote:
> On Mon, 3 Oct 2005, Dmitry Stogov wrote:
>> At second disallowing such assignments and passign $this by reference will
>> breake a lot of PHP4 code (Mamaba CMS).
>> In PHP4 passing $object by refernce and by value had completely different
>> semantic.
> Yes I know. In PHP 4 the OO was totally crap, and now you're saying you
> want to keep "bogus" behavior for eternity so that all the PHP 4 apps
> can still run?
No. And it is even worse. We start maintaining BC for things we always
agreed we do not support - just because some crazy app used this for a
workaround of a problem they couldn't solve? Maybe they should have asked
for the fature - but the answer would have been we don't support that....
> I am quite getting tired of having to maintain BC for *every* little
> stupid thing we ever did. I think it's time to start with a clean slate
> as it's all getting way to annoying to maintain (and know what subtle
> differences there are between PHP versions).
> The same thing we now see with the unicode support in PHP 6 where we
> choose for maintaining BC with older PHP versions in every way possible.
> Now we get code like this:
> if (Z_TYPE_PP(str) == IS_UNICODE) {
> php_u_trim(Z_USTRVAL_PP(str), Z_USTRLEN_PP(str),
> Z_USTRVAL_PP(what), Z_USTRLEN_PP(what), return_value, mode TSRMLS_CC);
> } else {
> php_trim(Z_STRVAL_PP(str), Z_STRLEN_PP(str),
> Z_STRVAL_PP(what), Z_STRLEN_PP(what), Z_TYPE_PP(str), return_value, mode
> TSRMLS_CC);
> }
> Which is in my opinion totally unmaintainable in the long run. I really
> think we would be much better of to get rid of IS_STRING and only have
> IS_BINARY and IS_UNICODE - do it the nice and clean way and forget about
> BC. We would definitely see the benefits in the long run.
That's what i said directly when first looking at the current unicode
implementation. It is absolute unmaintainable for any non full time php-c
code developer. We have tons of "_u_" function name inlays and thousands of
macros and i am quite sure none of that is necessary. And for instance right
no i still have absolutley no idea of what is going on. And by looking at
the hundreds of warnings - well other don't do either - not even in the
engine code. And don't tell me "warnings". Yesturday i fixed at least one
that was a real error and seeing hundres of warnigns in our code makes me
blind - It makes me ignore the help the compiler could give me. And believe
me i write warning free code for a reason.
>>
>> I don't see any reason to disallow 100% proper code (like the the
>> following).
>>
>> class Child {
>> function Child($parent) {
>> $parent->children[] =& $this;
>> }
>> }
>>
>> Of course using "=& $this" user can breake $this value, but other languages
>> (C++) allows this too.
A reference in C++ is a very different thing. And especially it doesn't allow
you to fuck up any instance or cause memory corruption or invalid variables.
If you don't understand c++ don't use it here.
> So if C++ allows this we should too? I think that's one invalid reason.
> There is no point of assigning by reference here, so we shouldn't allow
> that. That way our users see "oh, I did something wrong, let's fix it" -
> and yes, it will break BC. But the OO model in PHP 5 is totally
> different than in PHP 4, so I see no problems with that.
And right now before 5.1 comes out we still have the choice. If i consider
all the arguments i have heared then only a handfull of people must be using
php 5 right now and there mostly for testing or for running php 4 code maybe
a little bit adapter, like changing var public.
Best regards,
Marcus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php