Re: [PHP-DEV] Generics proposal

2012-11-15 Thread Jan Dolecek
Hi Sara, any progress with your RFC? Can't wait to see it.
Thanks

Jan Dolecek
juzna...@gmail.com


On Wed, Nov 7, 2012 at 6:41 AM, Sara Golemon poll...@php.net wrote:

 Retrying this with reply-to-all. :)

 I think it's an awesome moment for PHP and HipHop to work together! :)
  I'll summarize what we have so far into an RFC.

 -Sara

 On Tue, Nov 6, 2012 at 12:50 PM, Lars Strojny l...@strojny.net wrote:
  Hey Sara,
 
  can you already show us how your take on Generics would look like? Maybe
 this is a good moment for HipHop and PHP to do something together.
 
  Am 06.11.2012 um 04:14 schrieb Sara Golemon poll...@php.net:
 
  Sorry to be late to the conversation, but fwiw, HipHop is adding
  Generics (and some other cool things) to our PHP implementation.  We
  plan to provide a PHP equivalent implementation in the form of a
  pre-processor extension which can live in PECL.  The implementation
  would of course be cleaner if done directly in the engine, but with
  APC the performance hit of doing an extra transformation pass should
  disappear. Hopefully this satisfies both the want for Java/C++-like
  syntax without polluting the language.
 
  -Sara
 
  On Tue, Oct 23, 2012 at 4:21 AM, Etienne Kneuss col...@php.net wrote:
  Hi,
 
  On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison 
 morrison.l...@gmail.com wrote:
  Especially if the ability was afforded to arrays as well (function
  foo(arrayBar $array){})...
 
  This would require O(n) runtime tests, I would definitely not go
 there.
 
  Actually, it does not require O(n) runtime tests.  The solution is
  simple: store the type when it is created. Whenever an element is
  added, make sure it matches the correct type.  All this does is add
  some flat overhead.
 
  If you test every time you add one element, that's still O(n) tests
  where n is the size of the array, the only benefit is that it is not
  checked for each calls to a function. But now we are talking about
  attaching non-trivial types to variables, and non-trivial checks in a
  lot of places (think references etc..), let's not go there...
 
 
  I am also supportive of the idea of having generics, but I am not sure
  that the work it would take is worth it.
 
 
 
  --
  Etienne Kneuss
  http://www.colder.ch
 
  --
  PHP Internals - PHP Runtime Development Mailing List
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 
  --
  PHP Internals - PHP Runtime Development Mailing List
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] Generics proposal

2012-11-07 Thread Lars Strojny
Cool! Looking forward to it.

Am 07.11.2012 um 06:41 schrieb Sara Golemon poll...@php.net:

 Retrying this with reply-to-all. :)
 
 I think it's an awesome moment for PHP and HipHop to work together! :)
 I'll summarize what we have so far into an RFC.
 
 -Sara
 
 On Tue, Nov 6, 2012 at 12:50 PM, Lars Strojny l...@strojny.net wrote:
 Hey Sara,
 
 can you already show us how your take on Generics would look like? Maybe 
 this is a good moment for HipHop and PHP to do something together.
 
 Am 06.11.2012 um 04:14 schrieb Sara Golemon poll...@php.net:
 
 Sorry to be late to the conversation, but fwiw, HipHop is adding
 Generics (and some other cool things) to our PHP implementation.  We
 plan to provide a PHP equivalent implementation in the form of a
 pre-processor extension which can live in PECL.  The implementation
 would of course be cleaner if done directly in the engine, but with
 APC the performance hit of doing an extra transformation pass should
 disappear. Hopefully this satisfies both the want for Java/C++-like
 syntax without polluting the language.
 
 -Sara
 
 On Tue, Oct 23, 2012 at 4:21 AM, Etienne Kneuss col...@php.net wrote:
 Hi,
 
 On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison morrison.l...@gmail.com 
 wrote:
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...
 
 This would require O(n) runtime tests, I would definitely not go there.
 
 Actually, it does not require O(n) runtime tests.  The solution is
 simple: store the type when it is created. Whenever an element is
 added, make sure it matches the correct type.  All this does is add
 some flat overhead.
 
 If you test every time you add one element, that's still O(n) tests
 where n is the size of the array, the only benefit is that it is not
 checked for each calls to a function. But now we are talking about
 attaching non-trivial types to variables, and non-trivial checks in a
 lot of places (think references etc..), let's not go there...
 
 
 I am also supportive of the idea of having generics, but I am not sure
 that the work it would take is worth it.
 
 
 
 --
 Etienne Kneuss
 http://www.colder.ch
 
 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 
 -- 
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-11-06 Thread Lars Strojny
Hey Sara,

can you already show us how your take on Generics would look like? Maybe this 
is a good moment for HipHop and PHP to do something together.

Am 06.11.2012 um 04:14 schrieb Sara Golemon poll...@php.net:

 Sorry to be late to the conversation, but fwiw, HipHop is adding
 Generics (and some other cool things) to our PHP implementation.  We
 plan to provide a PHP equivalent implementation in the form of a
 pre-processor extension which can live in PECL.  The implementation
 would of course be cleaner if done directly in the engine, but with
 APC the performance hit of doing an extra transformation pass should
 disappear. Hopefully this satisfies both the want for Java/C++-like
 syntax without polluting the language.
 
 -Sara
 
 On Tue, Oct 23, 2012 at 4:21 AM, Etienne Kneuss col...@php.net wrote:
 Hi,
 
 On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison morrison.l...@gmail.com 
 wrote:
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...
 
 This would require O(n) runtime tests, I would definitely not go there.
 
 Actually, it does not require O(n) runtime tests.  The solution is
 simple: store the type when it is created. Whenever an element is
 added, make sure it matches the correct type.  All this does is add
 some flat overhead.
 
 If you test every time you add one element, that's still O(n) tests
 where n is the size of the array, the only benefit is that it is not
 checked for each calls to a function. But now we are talking about
 attaching non-trivial types to variables, and non-trivial checks in a
 lot of places (think references etc..), let's not go there...
 
 
 I am also supportive of the idea of having generics, but I am not sure
 that the work it would take is worth it.
 
 
 
 --
 Etienne Kneuss
 http://www.colder.ch
 
 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 -- 
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-11-06 Thread Sara Golemon
Retrying this with reply-to-all. :)

I think it's an awesome moment for PHP and HipHop to work together! :)
 I'll summarize what we have so far into an RFC.

-Sara

On Tue, Nov 6, 2012 at 12:50 PM, Lars Strojny l...@strojny.net wrote:
 Hey Sara,

 can you already show us how your take on Generics would look like? Maybe this 
 is a good moment for HipHop and PHP to do something together.

 Am 06.11.2012 um 04:14 schrieb Sara Golemon poll...@php.net:

 Sorry to be late to the conversation, but fwiw, HipHop is adding
 Generics (and some other cool things) to our PHP implementation.  We
 plan to provide a PHP equivalent implementation in the form of a
 pre-processor extension which can live in PECL.  The implementation
 would of course be cleaner if done directly in the engine, but with
 APC the performance hit of doing an extra transformation pass should
 disappear. Hopefully this satisfies both the want for Java/C++-like
 syntax without polluting the language.

 -Sara

 On Tue, Oct 23, 2012 at 4:21 AM, Etienne Kneuss col...@php.net wrote:
 Hi,

 On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison morrison.l...@gmail.com 
 wrote:
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...

 This would require O(n) runtime tests, I would definitely not go there.

 Actually, it does not require O(n) runtime tests.  The solution is
 simple: store the type when it is created. Whenever an element is
 added, make sure it matches the correct type.  All this does is add
 some flat overhead.

 If you test every time you add one element, that's still O(n) tests
 where n is the size of the array, the only benefit is that it is not
 checked for each calls to a function. But now we are talking about
 attaching non-trivial types to variables, and non-trivial checks in a
 lot of places (think references etc..), let's not go there...


 I am also supportive of the idea of having generics, but I am not sure
 that the work it would take is worth it.



 --
 Etienne Kneuss
 http://www.colder.ch

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php


 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-11-05 Thread Sara Golemon
Sorry to be late to the conversation, but fwiw, HipHop is adding
Generics (and some other cool things) to our PHP implementation.  We
plan to provide a PHP equivalent implementation in the form of a
pre-processor extension which can live in PECL.  The implementation
would of course be cleaner if done directly in the engine, but with
APC the performance hit of doing an extra transformation pass should
disappear. Hopefully this satisfies both the want for Java/C++-like
syntax without polluting the language.

-Sara

On Tue, Oct 23, 2012 at 4:21 AM, Etienne Kneuss col...@php.net wrote:
 Hi,

 On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison morrison.l...@gmail.com 
 wrote:
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...

 This would require O(n) runtime tests, I would definitely not go there.

 Actually, it does not require O(n) runtime tests.  The solution is
 simple: store the type when it is created. Whenever an element is
 added, make sure it matches the correct type.  All this does is add
 some flat overhead.

 If you test every time you add one element, that's still O(n) tests
 where n is the size of the array, the only benefit is that it is not
 checked for each calls to a function. But now we are talking about
 attaching non-trivial types to variables, and non-trivial checks in a
 lot of places (think references etc..), let's not go there...


 I am also supportive of the idea of having generics, but I am not sure
 that the work it would take is worth it.



 --
 Etienne Kneuss
 http://www.colder.ch

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-23 Thread Etienne Kneuss
Hi,

On Tue, Oct 23, 2012 at 4:17 AM, Levi Morrison morrison.l...@gmail.com wrote:
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...

 This would require O(n) runtime tests, I would definitely not go there.

 Actually, it does not require O(n) runtime tests.  The solution is
 simple: store the type when it is created. Whenever an element is
 added, make sure it matches the correct type.  All this does is add
 some flat overhead.

If you test every time you add one element, that's still O(n) tests
where n is the size of the array, the only benefit is that it is not
checked for each calls to a function. But now we are talking about
attaching non-trivial types to variables, and non-trivial checks in a
lot of places (think references etc..), let's not go there...


 I am also supportive of the idea of having generics, but I am not sure
 that the work it would take is worth it.



-- 
Etienne Kneuss
http://www.colder.ch

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Amaury Bouchard
Nobody wants to turn PHP into Java.

But, even if I agree for generics (or templates), I would like to know
where is the border line.

Classes, exceptions, interfaces, traits, type hinting in parameters = OK
Type hinting in object properties, type hinting of returned values, type
templating = KO?

Maybe we'd save time if it was clearly defined (and accept my apologies if
it was already defined somewhere).


2012/10/21 Stas Malyshev smalys...@sugarcrm.com

 Hi!

  Hello, list. I want to propose generics.

 Please no. If you need Java, you know where to find it. Java has a set
 of great tools, great books, great community. And it's completely free.
 Anybody who needs Java can just do it. I see no need to turn PHP into Java.
 --
 Stanislav Malyshev, Software Architect
 SugarCRM: http://www.sugarcrm.com/
 (408)454-6900 ext. 227

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] Generics proposal

2012-10-22 Thread jpauli
On Sat, Oct 20, 2012 at 10:59 PM, Nikita inefe...@gmail.com wrote:
 Hello, list. I want to propose generics. For those, who don't know what it 
 is, here's example: say we have a Comment class, that has a method getBody. 
 Also we have Collection class, that implements Traversable. Now, if I want to 
 validate all insertions into collection of comments, I would need to create 
 CommentCollection class, extend it from Collection, and override all the 
 methods that are dealing with adding new elements to collection. Moreover, I 
 can't have any hints from my IDE about type of collection's elements, so if 
 I'll have code like this:
 foreach ($commentCollection as $comment) {
 $comment-getBody();
 }
 There will be no way for IDE to know, of what type that object will be.

 But there's how I could solve my problem with generics:
 class CollectionT implements Traversable
 {
 ...
 public function add(T $element){}
 }
 $collection = new CollectionComment();

 $collection-add(new Comment());

 $collection-add(that will be error);

 Actually, that's, again, all about type hinting. If we went so far with 
 scalar type hinting, then generics would also be a good addition.

 So, what you think?


Hah, I had the use case often, and every OO programmer has met this
use case several time I think :
Here is an example with SplObjectStorage (which is a good starting
point structure for that) :

?php
class MyClass extends SPlObjectStorage
{
public function attach(MyType $o, $data = null) { /* throws an
E_STRICT we all know about */
return parent::attach($o, $data);
}
}

Solution :

?php
class MyClass extends SPlObjectStorage
{
public function attach($o, $data = null) {
if (!$o instanceof MyType) {  /* That is both ugly and boring
to write */
throw new \RuntimeException();
}
return parent::attach($o, $data);
}
}

So, I'm +1 with the idea, but -1 with the proposed syntax.

I'm +1 with Lars, as this can be done with a TypeAsString, this is
as well ugly, and I think we need PHP to provide a way to do that :

?php
class Foo
{
public function __construct($type) { $this-type = $type; }

public function add($o)
{
if (!$o instanceof $this-type) {
throw new \RunTimeException(type {$this-type} expected);
}
/* do something with $o*/
}
}
class Bar { }
class Baz { }

$f = new Foo('bar');
$f-add(new Bar); /* OK */
$f-add(new Baz); /* KO */
$f-add(array()); /* KO */
?

IMO : this is something the language should take care of, not the
developper, but that's my opinion :)

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Anthony Ferrara
Stas,

On Sun, Oct 21, 2012 at 12:51 PM, Stas Malyshev smalys...@sugarcrm.comwrote:

 Hi!

  Hello, list. I want to propose generics.

 Please no. If you need Java, you know where to find it. Java has a set
 of great tools, great books, great community. And it's completely free.
 Anybody who needs Java can just do it. I see no need to turn PHP into Java


This is not about turning PHP into Java. Can we get over that old rhetoric
already? Instead of bashing proposals like this, can we discuss them,
instead of this hatred for all things strict?

With that aside, I have mixed feelings on this.

On the one hand, I love the functionality. The ability to have
meta-type-safety without having to pollute the environment with tons of
empty classes with nothing more than a type hint (for all collection types)
is huge. It would definitely make defensive programming much easier.
Especially if the ability was afforded to arrays as well (function
foo(arrayBar $array){})...

On the other hand, the syntax leaves a lot to be desired. It's quite
confusing and really is ugly. As far as how to fix the syntax, I'm not sure.

But I would like to voice my support for the concept...


Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Etienne Kneuss
Hi,

On Mon, Oct 22, 2012 at 9:44 PM, Anthony Ferrara ircmax...@gmail.com wrote:
 Stas,

 On Sun, Oct 21, 2012 at 12:51 PM, Stas Malyshev smalys...@sugarcrm.comwrote:

 Hi!

  Hello, list. I want to propose generics.

 Please no. If you need Java, you know where to find it. Java has a set
 of great tools, great books, great community. And it's completely free.
 Anybody who needs Java can just do it. I see no need to turn PHP into Java


 This is not about turning PHP into Java. Can we get over that old rhetoric
 already? Instead of bashing proposals like this, can we discuss them,
 instead of this hatred for all things strict?

 With that aside, I have mixed feelings on this.

 On the one hand, I love the functionality. The ability to have
 meta-type-safety without having to pollute the environment with tons of
 empty classes with nothing more than a type hint (for all collection types)
 is huge.

Let's not talk about type safety, there is nothing that is type-safe here.
What this proposal is describing is syntactic sugar for runtime type
checks (which is exactly what type hints are anyway).

The arguments for and against runtime type checks are the same that
they were 5 years ago: unlike other languages that support generics:
PHP will have: no compiler support = no static guarantees = runtime,
unnexpected errors.

The argument should really be whether the cost of having that syntax
in the language is less than the benefits of catching such errors
early (early being usually one stack frame earlier, but I have no
definite stats on that).

 It would definitely make defensive programming much easier.
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...

This would require O(n) runtime tests, I would definitely not go there.


 On the other hand, the syntax leaves a lot to be desired. It's quite
 confusing and really is ugly. As far as how to fix the syntax, I'm not sure.

 But I would like to voice my support for the concept...



-- 
Etienne Kneuss
http://www.colder.ch

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Christian Schneider
Am 22.10.2012 um 21:44 schrieb Anthony Ferrara ircmax...@gmail.com:
 This is not about turning PHP into Java. Can we get over that old rhetoric
 already? Instead of bashing proposals like this, can we discuss them,
 instead of this hatred for all things strict?
 
 With that aside, I have mixed feelings on this.

… and while it might not be about turning PHP into Java it might still be 
worthwhile to read a bit about experiences with Generics in Java: 
http://www.artima.com/weblogs/viewpost.jsp?thread=299081

Basically it means that you type more (redundant) stuff to allow the compiler 
to check some errors.
And while type hints and PPP are along the same line I think the main 
difference is that they put the burden on the declarations, not on the users of 
an API.

That said I'm not even using type hints of PPP and sometimes it would be handy 
if internal functions would be less strict about their parameters (e.g. 
debug_backtrace() not accepting two arguments in PHP  5.4 and return null in 
that case instead of silently ignoring the extra parameter).

- Chris


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Johannes Schlüter
On Tue, 2012-10-23 at 00:57 +0200, Christian Schneider wrote:
 
 Basically it means that you type more (redundant) stuff to allow the
 compiler to check some errors.

Which we can't do due to PHP's dynamic nature. For the engine to take
benefit from it we'd have to change the language.

All we do,when implementing such a feature is adding a default way so
IDEs and other tools can do their checks and to enforce specific
runtime(!) errors (while in effect all it does is swap one kind of error
(fatal error, not existing function) for another (so called catchable
error, wrong type)) at the cost of making some operations, at least
function calls, more expensive (more things to check at runtime - has a
small impact even when not used ... and that while our fcalls are
already relatively expensive ...)

johannes



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-22 Thread Levi Morrison
 Especially if the ability was afforded to arrays as well (function
 foo(arrayBar $array){})...

 This would require O(n) runtime tests, I would definitely not go there.

Actually, it does not require O(n) runtime tests.  The solution is
simple: store the type when it is created. Whenever an element is
added, make sure it matches the correct type.  All this does is add
some flat overhead.

I am also supportive of the idea of having generics, but I am not sure
that the work it would take is worth it.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Paul Dragoonis
Hi Nikita,

What you're asking for is useful in other languages, but it doesn't match
the style of PHP which is to be a quick and easy type-less scripting
language.

What you're proposing is clearly more suited to something like Java or C#,
but doesn't really belong here.

I'd also hate to see this anywhere near PHP.

Many thanks,
Paul.

On Sat, Oct 20, 2012 at 11:10 PM, Marco Pivetta ocram...@gmail.com wrote:

 On 20 October 2012 23:09, Michael Stowe mikegst...@gmail.com wrote:

  I see what you're trying to do but not a big fan of how it's being
  implemented in the example given.
 
  - Mike
 
  Sent from my iPhone
 
  On Oct 20, 2012, at 4:02 PM, Rasmus Lerdorf ras...@lerdorf.com wrote:
 
   On 10/20/2012 01:59 PM, Nikita wrote:
   Hello, list. I want to propose generics. For those, who don't know
 what
  it is, here's example: say we have a Comment class, that has a method
  getBody. Also we have Collection class, that implements Traversable. Now,
  if I want to validate all insertions into collection of comments, I would
  need to create CommentCollection class, extend it from Collection, and
  override all the methods that are dealing with adding new elements to
  collection. Moreover, I can't have any hints from my IDE about type of
  collection's elements, so if I'll have code like this:
   foreach ($commentCollection as $comment) {
  $comment-getBody();
   }
   There will be no way for IDE to know, of what type that object will
 be.
  
   But there's how I could solve my problem with generics:
   class CollectionT implements Traversable
   {
  ...
  public function add(T $element){}
   }
   $collection = new CollectionComment();
  
   $collection-add(new Comment());
  
   $collection-add(that will be error);
  
   Actually, that's, again, all about type hinting. If we went so far
 with
  scalar type hinting, then generics would also be a good addition.
  
   So, what you think?
  
   Personally I would hate to see this anywhere near PHP.
  
   -Rasmus
  
  
   --
   PHP Internals - PHP Runtime Development Mailing List
   To unsubscribe, visit: http://www.php.net/unsub.php
  
 
  --
  PHP Internals - PHP Runtime Development Mailing List
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 Well, the example just shows what I've already got used to when working
 with Java.
 I like it and it would be of great help to me (especially in reducing the
 amount of code to be tested), but there's a lot more around that, like
 multiple generic types (new MapComment, User()) and how reflection would
 deal with it...

 Marco Pivetta

 http://twitter.com/Ocramius

 http://ocramius.github.com/



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Nikita Nefedov
No, this is useful in any OOP-language where there is such thing as type,  
and people need to validate types.
I unerstand what you are saying about PHP being an easy language, but in  
opinion if you don't want to use that feature you can not use it, as you  
can not use typehinting in functions for example.




Hi Nikita,

What you're asking for is useful in other languages, but it doesn't match
the style of PHP which is to be a quick and easy type-less scripting
language.

What you're proposing is clearly more suited to something like Java or  
C#,

but doesn't really belong here.

I'd also hate to see this anywhere near PHP.

Many thanks,
Paul.

On Sat, Oct 20, 2012 at 11:10 PM, Marco Pivetta ocram...@gmail.com  
wrote:



On 20 October 2012 23:09, Michael Stowe mikegst...@gmail.com wrote:

 I see what you're trying to do but not a big fan of how it's being
 implemented in the example given.

 - Mike

 Sent from my iPhone

 On Oct 20, 2012, at 4:02 PM, Rasmus Lerdorf ras...@lerdorf.com  
wrote:


  On 10/20/2012 01:59 PM, Nikita wrote:
  Hello, list. I want to propose generics. For those, who don't know
what
 it is, here's example: say we have a Comment class, that has a method
 getBody. Also we have Collection class, that implements Traversable.  
Now,
 if I want to validate all insertions into collection of comments, I  
would

 need to create CommentCollection class, extend it from Collection, and
 override all the methods that are dealing with adding new elements to
 collection. Moreover, I can't have any hints from my IDE about type of
 collection's elements, so if I'll have code like this:
  foreach ($commentCollection as $comment) {
 $comment-getBody();
  }
  There will be no way for IDE to know, of what type that object will
be.
 
  But there's how I could solve my problem with generics:
  class CollectionT implements Traversable
  {
 ...
 public function add(T $element){}
  }
  $collection = new CollectionComment();
 
  $collection-add(new Comment());
 
  $collection-add(that will be error);
 
  Actually, that's, again, all about type hinting. If we went so far
with
 scalar type hinting, then generics would also be a good addition.
 
  So, what you think?
 
  Personally I would hate to see this anywhere near PHP.
 
  -Rasmus
 
 
  --
  PHP Internals - PHP Runtime Development Mailing List
  To unsubscribe, visit: http://www.php.net/unsub.php
 

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php


Well, the example just shows what I've already got used to when working
with Java.
I like it and it would be of great help to me (especially in reducing  
the

amount of code to be tested), but there's a lot more around that, like
multiple generic types (new MapComment, User()) and how reflection  
would

deal with it...

Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Alexey Zakhlestin

On 21.10.2012, at 0:59, Nikita inefe...@gmail.com wrote:

 Hello, list. I want to propose generics. 
skip
 So, what you think?

I'm against having this in PHP.

For IDEs, the better solution is to use generics-like syntax in docblocks.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Christian Schneider
Am 21.10.2012 um 13:33 schrieb Nikita Nefedov inefe...@gmail.com:
 No, this is useful in any OOP-language where there is such thing as type, and 
 people need to validate types.

I question the need to validate types part. I'd say you're better off using a 
completely different language if you want to use strong typing. For PHP: 
Embrace duck typing, write less boiler-plate code (thus reducing the need for 
smart IDE) and be happy :-)

 I unerstand what you are saying about PHP being an easy language, but in 
 opinion if you don't want to use that feature you can not use it, as you can 
 not use typehinting in functions for example.

That's the same as saying you can ignore most of the C++ feature and that will 
make it a simple language. That's neither true for developers nor users of the 
language.

Example on why this is are
1) Makes language harder to maintain as there is more (and more complex) code 
implementing it.
2) Makes documentation bigger so users have first to figure out what part to 
read and what part to ignore.
3) Makes it harder to write portable user-land libraries as the application and 
the different libraries might use different (clashing) paradigms. See error 
codes vs. exceptions as an example of this.
4) Makes it harder to have extensions like APC as they have to implement more 
features.
5) Makes it harder to write alternative implementations.
...

So yes, I agree with Rasmus that this is not a good fit for PHP.

- Chris


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Devis Lucato
I see what you are trying to achieve, but I hope this will never make into
PHP mainly for impact on readability.  I'd like to quote Eric Armstrong, a
passionate Java/Ruby dev:

 I decry their very existence. They are the ultimate condemnation of
static
 type checking--because their very addition has virtually destroyed both
the
 readability and elegance of the language.
 To make my case, let's start with a quasi-mathematical definition of
elegance.
 In my view, elegance is a function of power and simplicity. Power is
measured
 by how much you can do. Simplicity is the inverse of the number of
characters
 it takes to achieve the result. So more power with fewer characters
equals
 elegance

http://www.artima.com/weblogs/viewpost.jsp?thread=299081


Devis


On 21 October 2012 12:55, Alexey Zakhlestin indey...@gmail.com wrote:


 On 21.10.2012, at 0:59, Nikita inefe...@gmail.com wrote:

  Hello, list. I want to propose generics.
 skip
  So, what you think?

 I'm against having this in PHP.

 For IDEs, the better solution is to use generics-like syntax in docblocks.

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Nikita Nefedov
I actually don't have much experience with generics, so won't argue about  
their readability, but this article is all about Java's implementation of  
generics, so I don't know how much sense this article gives in that  
context.
But it's ok, I see just one person that supported proposal. I think case  
closed.


I see what you are trying to achieve, but I hope this will never make  
into
PHP mainly for impact on readability.  I'd like to quote Eric Armstrong,  
a

passionate Java/Ruby dev:


I decry their very existence. They are the ultimate condemnation of

static

type checking--because their very addition has virtually destroyed both

the

readability and elegance of the language.
To make my case, let's start with a quasi-mathematical definition of

elegance.

In my view, elegance is a function of power and simplicity. Power is

measured

by how much you can do. Simplicity is the inverse of the number of

characters

it takes to achieve the result. So more power with fewer characters

equals

elegance


http://www.artima.com/weblogs/viewpost.jsp?thread=299081

__

I question the need to validate types part. I'd say you're better off  
using a completely different language if you want to use strong typing.  
For PHP: Embrace duck typing, write less boiler-plate code (thus  
reducing the need for smart IDE) and be happy :-)


We have typehints, that was my point here.

That's the same as saying you can ignore most of the C++ feature and  
that will make it a simple language. That's neither true for developers  
nor users of the language.


PHP now is multi-paradigm language (isn't it), so... yep, that's the same  
:)


1) Makes language harder to maintain as there is more (and more complex)  
code implementing it.
2) Makes documentation bigger so users have first to figure out what  
part to read and what part to ignore.
3) Makes it harder to write portable user-land libraries as the  
application and the different libraries might use different (clashing)  
paradigms. See error codes vs. exceptions as an example of this.
4) Makes it harder to have extensions like APC as they have to implement  
more features.

5) Makes it harder to write alternative implementations.


All this points are also applicable to namespaces, [abstract,final]  
classes, interfaces, traits, access modifiers (instead of using `var`),  
etc.
If you would have said, this points in the context of... say... necessity  
of that feature, then yeah, maybe you would be right.


Anyway, as long as almost no one didn't supported, I think we can close  
this discussion.


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Lars Strojny
Hi Rasmus,

Am 20.10.2012 um 23:02 schrieb Rasmus Lerdorf ras...@lerdorf.com:
[...]
 Personally I would hate to see this anywhere near PHP.

Do you mind explaining the why? Isn’t it better than new 
Collection(TypeAsAString) and custom assertions in each and every method of 
that collection class?

cu,
Lars
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-21 Thread Stas Malyshev
Hi!

 Hello, list. I want to propose generics.

Please no. If you need Java, you know where to find it. Java has a set
of great tools, great books, great community. And it's completely free.
Anybody who needs Java can just do it. I see no need to turn PHP into Java.
-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-DEV] Generics proposal

2012-10-20 Thread Nikita
Hello, list. I want to propose generics. For those, who don't know what it is, 
here's example: say we have a Comment class, that has a method getBody. Also we 
have Collection class, that implements Traversable. Now, if I want to validate 
all insertions into collection of comments, I would need to create 
CommentCollection class, extend it from Collection, and override all the 
methods that are dealing with adding new elements to collection. Moreover, I 
can't have any hints from my IDE about type of collection's elements, so if 
I'll have code like this:
foreach ($commentCollection as $comment) {
$comment-getBody();
}
There will be no way for IDE to know, of what type that object will be.

But there's how I could solve my problem with generics:
class CollectionT implements Traversable
{
...
public function add(T $element){}
}
$collection = new CollectionComment();

$collection-add(new Comment());

$collection-add(that will be error);

Actually, that's, again, all about type hinting. If we went so far with scalar 
type hinting, then generics would also be a good addition.

So, what you think?
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-20 Thread Rasmus Lerdorf
On 10/20/2012 01:59 PM, Nikita wrote:
 Hello, list. I want to propose generics. For those, who don't know what it 
 is, here's example: say we have a Comment class, that has a method getBody. 
 Also we have Collection class, that implements Traversable. Now, if I want to 
 validate all insertions into collection of comments, I would need to create 
 CommentCollection class, extend it from Collection, and override all the 
 methods that are dealing with adding new elements to collection. Moreover, I 
 can't have any hints from my IDE about type of collection's elements, so if 
 I'll have code like this:
 foreach ($commentCollection as $comment) {
 $comment-getBody();
 }
 There will be no way for IDE to know, of what type that object will be.
 
 But there's how I could solve my problem with generics:
 class CollectionT implements Traversable
 {
 ...
 public function add(T $element){}
 }
 $collection = new CollectionComment();
 
 $collection-add(new Comment());
 
 $collection-add(that will be error);
 
 Actually, that's, again, all about type hinting. If we went so far with 
 scalar type hinting, then generics would also be a good addition.
 
 So, what you think?

Personally I would hate to see this anywhere near PHP.

-Rasmus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-20 Thread Michael Stowe
I see what you're trying to do but not a big fan of how it's being implemented 
in the example given. 

- Mike

Sent from my iPhone

On Oct 20, 2012, at 4:02 PM, Rasmus Lerdorf ras...@lerdorf.com wrote:

 On 10/20/2012 01:59 PM, Nikita wrote:
 Hello, list. I want to propose generics. For those, who don't know what it 
 is, here's example: say we have a Comment class, that has a method getBody. 
 Also we have Collection class, that implements Traversable. Now, if I want 
 to validate all insertions into collection of comments, I would need to 
 create CommentCollection class, extend it from Collection, and override all 
 the methods that are dealing with adding new elements to collection. 
 Moreover, I can't have any hints from my IDE about type of collection's 
 elements, so if I'll have code like this:
 foreach ($commentCollection as $comment) {
$comment-getBody();
 }
 There will be no way for IDE to know, of what type that object will be.
 
 But there's how I could solve my problem with generics:
 class CollectionT implements Traversable
 {
...
public function add(T $element){}
 }
 $collection = new CollectionComment();
 
 $collection-add(new Comment());
 
 $collection-add(that will be error);
 
 Actually, that's, again, all about type hinting. If we went so far with 
 scalar type hinting, then generics would also be a good addition.
 
 So, what you think?
 
 Personally I would hate to see this anywhere near PHP.
 
 -Rasmus
 
 
 -- 
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php
 

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Generics proposal

2012-10-20 Thread Marco Pivetta
On 20 October 2012 23:09, Michael Stowe mikegst...@gmail.com wrote:

 I see what you're trying to do but not a big fan of how it's being
 implemented in the example given.

 - Mike

 Sent from my iPhone

 On Oct 20, 2012, at 4:02 PM, Rasmus Lerdorf ras...@lerdorf.com wrote:

  On 10/20/2012 01:59 PM, Nikita wrote:
  Hello, list. I want to propose generics. For those, who don't know what
 it is, here's example: say we have a Comment class, that has a method
 getBody. Also we have Collection class, that implements Traversable. Now,
 if I want to validate all insertions into collection of comments, I would
 need to create CommentCollection class, extend it from Collection, and
 override all the methods that are dealing with adding new elements to
 collection. Moreover, I can't have any hints from my IDE about type of
 collection's elements, so if I'll have code like this:
  foreach ($commentCollection as $comment) {
 $comment-getBody();
  }
  There will be no way for IDE to know, of what type that object will be.
 
  But there's how I could solve my problem with generics:
  class CollectionT implements Traversable
  {
 ...
 public function add(T $element){}
  }
  $collection = new CollectionComment();
 
  $collection-add(new Comment());
 
  $collection-add(that will be error);
 
  Actually, that's, again, all about type hinting. If we went so far with
 scalar type hinting, then generics would also be a good addition.
 
  So, what you think?
 
  Personally I would hate to see this anywhere near PHP.
 
  -Rasmus
 
 
  --
  PHP Internals - PHP Runtime Development Mailing List
  To unsubscribe, visit: http://www.php.net/unsub.php
 

 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php


Well, the example just shows what I've already got used to when working
with Java.
I like it and it would be of great help to me (especially in reducing the
amount of code to be tested), but there's a lot more around that, like
multiple generic types (new MapComment, User()) and how reflection would
deal with it...

Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/