Re: [PATCH] Namespace Patch, Alpha 3
| From: | Marcus Boerger | Date: | Tue, 26 Jul 2005 07:26:03 +0000 |
| Subject: | Re: [PATCH] Namespace Patch, Alpha 3 | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-17402@lists.php.net to get a copy of this message | ||
Hello Jessie,
i am quite sure it tells you that you have a conflict with the ternary
operator. Look up the archives on the issue. There should also be an
example on the matter.
marcus
Tuesday, July 26, 2005, 2:02:56 AM, you wrote:
> Alex Kiesel wrote:
>> Hi Jessie,
>>
>> first, while your patch applied cleanly (except zend_vm_opcodes.h, which
>> is generated) the build broke with:
>> bison -y -p zend -v -d
>> /mnt/home/alex/cvs/php-namespaces/Zend/zend_language_parser.y -o
>> Zend/zend_language_parser.c
>> conflicts: 5 shift/reduce
>> /mnt/home/alex/cvs/php-namespaces/Zend/zend_language_parser.y: expected 4
>> shift/reduce conflicts *** Error code 1
>>
>> I had to increase the expected shift/reduce conflict count to 5 to
>> continue the build, which then completed successfully.
>>
> I am no expert in bison or yacc, so could someone look at the patch and tell
> me what, if anything, is wrong, and how to fix it?
>> I don't like this idea; it restricts the developer to this Java-like
>> class / directory layout. It also restricts him to name his files after
>> the scheme you defined (which is <classname>.php) - many use other
>> schemes. Shouldn't PHP let you be free in this kind of decision? I think
>> yes, especially, as this could also be implemented with the __autoload
>> function in user-space.
>>
> The scheme is needed in order to locate class files for the classes that
> have been imported in a full namespace import. With no convention, we're
> forced to call __autoload, and since the only thing that will be passed is
> the class name, __autoload will have no way of knowing to what namespace
> that class belongs to. With the convention, each imported namespace's
> directory can be checked to see which one contains the class file.
>> Here's another one: the script
>>
>> <?php
>> $foo= 'Foo:Bar';
>> import $foo;
>> ?>
>>
>> gives me
>>
>> alex@boost:~/cvs/php-namespaces# sapi/cli/php
>> ~/tests/classes/dynamic_import.php
>>
>> Parse error: parse error, unexpected T_VARIABLE, expecting
>> T_NAMESPACE_NAME or T_NAMESPACE in
>> /mnt/home/alex/tests/classes/dynamic_import.php on line 3
>>
>> (IIRC Stanislav Malyshev already mentioned this in the YANP-thread
>> already.)
>>
> What Stanislav and I were discussing was not this, it was the following
> (variable class names), which is fully supported in the patch:
> <?php
> import Foo:Bar;
> $name = 'Bar';
> $obj = new $name();
?>>
> Anyways, thanks for taking the time to try out the patch! Let me know if you
> have any other ideas/suggestions.
> --
> Jessie
--
Best regards,
Marcus mailto:mail@marcus-boerger.de