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

Reply via email to