Re: [PHP-DEV] API Thoughts?

2001-08-27 Thread Stig Sæther Bakken

[Sterling Hughes <[EMAIL PROTECTED]>]
> On Sun, 26 Aug 2001, Chuck Hagenbuch wrote:
> 
> > Quoting Sterling Hughes <[EMAIL PROTECTED]>:
> >
> > > Jep -- I'm writing PEAR OO wrappers for every ADT that I implement
> > > in a functional manner.  I'm think for the OO wrappers, seperate
> > > class names wouldn't be horrible, something like:
> > >
> > > $tree = new AVLTree;
> >
> > Please stick to the naming conventions, which would make this:
> >
> > $tree = new ADT_Tree_AVL();
> >
> > ... or something similar. Also, you could easily have a factory method:
> >
> > $tree = ADT::factory('tree_avl');
> >
> > or:
> >
> > $tree = ADT_Tree::factory('avl');
> >
> 
> The above are imho pretty ugly, and this is meant as more of a language
> level feature, I'm thinking of using PEAR as more of a method of
> distribution than a mindset.  I'd prefer to code the OO wrapper in
> PHP -- it stops me from having to be aware of changes to the Zend OO
> model and writing code that works with both the functional interface
> and the OO interface (some form of automatic handling of this would
> be a very cool/useful feature for Zend, imho).
> 
> The current way I have it organized is as follows:
> 
> php4/pear/ADT.php
> php4/pear/ADT/LList.php
> php4/pear/ADT/Stack.php
> php4/pear/ADT/Queue.php
> php4/pear/ADT/AVLtree.php
> php4/pear/ADT/BTree.php
> php4/pear/ADT/RBTree.php
> php4/pear/ADT/Heap.php
> php4/pear/ADT/Set.php
> 
> then you could do something like:
> 
>  require_once('ADT/Queue.php');
> 
> $sounds = new Queue;
> $sounds->push("Bing");
> $sounds->push("Bamm");
> $sounds->push("Booom");
> 
> while ($sounds->count() > 0) {
> echo $sounds->shift();
> }
> ?>
> 
> Which I think works quite nicely :)

PEAR's naming conventions applies to classes written in C too. :-)

The way you have your files organized above, the classes should be
named ADT_Queue and so on.

 - Stig

-- 
  Stig Sæther Bakken <[EMAIL PROTECTED]>
  Fast Search & Transfer ASA, Trondheim, Norway

-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-27 Thread Chuck Hagenbuch

Alright. I think I've stated this before, but, just so everyone knows: I'm 
gonna kick and scream whenever I think something is being done for expediency 
and it's the wrong thing to do from a design/engineering perspective. You're 
probably all gonna hate me, but someone has to do it.

Quoting Sterling Hughes <[EMAIL PROTECTED]>:

> The above are imho pretty ugly, and this is meant as more of a language
> level feature, I'm thinking of using PEAR as more of a method of
> distribution than a mindset.

They are only ugly because we don't have namespaces in PHP. If we had 
namespaces, then your code example (which I'll comment on below) would be fine. 
But as is, the way you are organizing the code causes namespace pollution. This 
isn't something that we can stop end-user developers from doing, but if we 
don't strictly adhere to namespace standards in the code in PEAR, _no one_ will 
do it, and we will have a mess on our hands.

Some standards are only worth having if you enforce them. I think class naming 
is one of them.

> The current way I have it organized is as follows:
> 
> php4/pear/ADT.php
> php4/pear/ADT/LList.php
> php4/pear/ADT/Stack.php
> php4/pear/ADT/Queue.php
> php4/pear/ADT/AVLtree.php
> php4/pear/ADT/BTree.php
> php4/pear/ADT/RBTree.php
> php4/pear/ADT/Heap.php
> php4/pear/ADT/Set.php

If you want the tree classes to share the same API - or even a subset of it, 
they _really_ should be subclasses of an ADT_Tree class.

> then you could do something like:
> 
>  require_once('ADT/Queue.php');
> 
> $sounds = new Queue;
[snip]

If you make that $sounds = new ADT_Queue(); ... then I'm happy.

(pet peeve: require_once and friends are statements. You don't need the 
parentheses.)

-chuck

--
Charles Hagenbuch, <[EMAIL PROTECTED]>
Some fallen angels have their good reasons.

-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-27 Thread Martin Jansen

On Mon, 27 Aug 2001 00:29:26 -0400 (EDT), Sterling Hughes wrote:

>The current way I have it organized is as follows:
>
>php4/pear/ADT.php
>php4/pear/ADT/LList.php
>php4/pear/ADT/Stack.php
>php4/pear/ADT/Queue.php
>php4/pear/ADT/AVLtree.php
>php4/pear/ADT/BTree.php
>php4/pear/ADT/RBTree.php
>php4/pear/ADT/Heap.php
>php4/pear/ADT/Set.php

Just a sidenote: All new contributions to PEAR have to be commited
to /pear, not to /php4/pear (this directory is only there until the
PEAR infrastructure is running).

- Martin



-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] RE: [Zend Engine 2] Re: [PHP-DEV] API Thoughts?

2001-08-27 Thread Harald Radi

uups, i wanted to post this to the dev-list.

> -Original Message-
> From: Harald Radi [mailto:[EMAIL PROTECTED]] 
> Sent: Monday, August 27, 2001 11:33 AM
> To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> Subject: [Zend Engine 2] Re: [PHP-DEV] API Thoughts?
> 
> 
> > I'd prefer to code the OO wrapper in
> > PHP -- it stops me from having to be aware of changes 
> to the Zend
> OO
> > model and writing code that works with both the functional
> interface
> > and the OO interface (some form of automatic handling of this
> would
> > be a very cool/useful feature for Zend, imho).
> 
> writing an oo wrapper for your functional interface in c 
> won't be a big deal and other extensions would benefit from 
> it as they could return adt-types in a oo way which they 
> can't with your attempt. they would have to create a PEAR 
> wrapper around the existing resource they get, which looks 
> quite messy.
> 
> if the only reason against this is, that you don't wan't to 
> deal with zends oo api, i'd write a lean wrapper for your 
> functions as it is really no work.
> 
> harald.
> 
> ps.: this would be another reason for your first suggestion, 
> as only tree_insert(), tree_remove(), .. need to be wrapped 
> and not all those avl_*(), rb_*(), ..
> 
> 


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Sterling Hughes

On Sun, 26 Aug 2001, Chuck Hagenbuch wrote:

> Quoting Sterling Hughes <[EMAIL PROTECTED]>:
>
> > Jep -- I'm writing PEAR OO wrappers for every ADT that I implement
> > in a functional manner.  I'm think for the OO wrappers, seperate
> > class names wouldn't be horrible, something like:
> >
> > $tree = new AVLTree;
>
> Please stick to the naming conventions, which would make this:
>
> $tree = new ADT_Tree_AVL();
>
> ... or something similar. Also, you could easily have a factory method:
>
> $tree = ADT::factory('tree_avl');
>
> or:
>
> $tree = ADT_Tree::factory('avl');
>

The above are imho pretty ugly, and this is meant as more of a language
level feature, I'm thinking of using PEAR as more of a method of
distribution than a mindset.  I'd prefer to code the OO wrapper in
PHP -- it stops me from having to be aware of changes to the Zend OO
model and writing code that works with both the functional interface
and the OO interface (some form of automatic handling of this would
be a very cool/useful feature for Zend, imho).

The current way I have it organized is as follows:

php4/pear/ADT.php
php4/pear/ADT/LList.php
php4/pear/ADT/Stack.php
php4/pear/ADT/Queue.php
php4/pear/ADT/AVLtree.php
php4/pear/ADT/BTree.php
php4/pear/ADT/RBTree.php
php4/pear/ADT/Heap.php
php4/pear/ADT/Set.php

then you could do something like:

push("Bing");
$sounds->push("Bamm");
$sounds->push("Booom");

while ($sounds->count() > 0) {
echo $sounds->shift();
}
?>

Which I think works quite nicely :)

-Sterling


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Chuck Hagenbuch

Quoting Sterling Hughes <[EMAIL PROTECTED]>:

> Jep -- I'm writing PEAR OO wrappers for every ADT that I implement
> in a functional manner.  I'm think for the OO wrappers, seperate
> class names wouldn't be horrible, something like:
> 
> $tree = new AVLTree;

Please stick to the naming conventions, which would make this:

$tree = new ADT_Tree_AVL();

... or something similar. Also, you could easily have a factory method:

$tree = ADT::factory('tree_avl');

or:

$tree = ADT_Tree::factory('avl');

-chuck

--
Charles Hagenbuch, <[EMAIL PROTECTED]>
Some fallen angels have their good reasons.

-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Andrei Zmievski

At 07:29 PM 8/26/01 -0400, Sterling Hughes wrote:
> Hey,
>
> Currently working on the Binary Tree implementations for the ADT
> extension and was wondering what people thought as more intuitive,
> something like:
>
> $tree = tree_new(AVL_TREE);
> tree_insert($tree, $element, "compare_func");
> // ...

I like this better, but please prefix constants with "ADT".

-Andrei


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Sterling Hughes

On Sun, 26 Aug 2001, Jon Parise wrote:

> On Sun, Aug 26, 2001 at 07:29:59PM -0400, Sterling Hughes wrote:
>
> > Hey,
> > extension and was wondering what people thought as more intuitive,
> > something like:
> >
> > $tree = tree_new(AVL_TREE);
> > tree_insert($tree, $element, "compare_func");
> > // ...
>
> I prefer this notation.  There's more room for future expansion
> without encroaching on namespace.
>
> I think it would be neat to be able to do this, though:
>
> $tree = new Tree(AVL_TREE);
> $tree->insert($element, 'compare_func');
>
> But such a wrapper shouldn't be too difficult to write.
>
>

Jep -- I'm writing PEAR OO wrappers for every ADT that I implement
in a functional manner.  I'm think for the OO wrappers, seperate
class names wouldn't be horrible, something like:

$tree = new AVLTree;

-Sterling



-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Jon Parise

On Sun, Aug 26, 2001 at 07:29:59PM -0400, Sterling Hughes wrote:

> Hey,
> extension and was wondering what people thought as more intuitive,
> something like:
> 
> $tree = tree_new(AVL_TREE);
> tree_insert($tree, $element, "compare_func");
> // ...

I prefer this notation.  There's more room for future expansion
without encroaching on namespace.

I think it would be neat to be able to do this, though:

$tree = new Tree(AVL_TREE);
$tree->insert($element, 'compare_func');

But such a wrapper shouldn't be too difficult to write.
 
-- 
Jon Parise ([EMAIL PROTECTED])  .  Rochester Inst. of Technology
http://www.csh.rit.edu/~jon/  :  Computer Science House Member

-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP-DEV] API Thoughts?

2001-08-26 Thread Markus Fischer

On Sun, Aug 26, 2001 at 07:29:59PM -0400, Sterling Hughes wrote : 
> Currently working on the Binary Tree implementations for the ADT
> extension and was wondering what people thought as more intuitive,
> something like:
> 
> $tree = tree_new(AVL_TREE);
> tree_insert($tree, $element, "compare_func");
> // ...
> 
> Or:
> 
> $tree = avl_tree_new();
> avl_tree_insert($tree, $element, "compare_func");
> 
> Basically the difference between a generalized tree api, where you
> pass a constant to the constructor (if you allow me to use that term
> :), or where every form of the tree has a different set of functions
> (currently planned are Red-black tree's, AVL tree's, Simple Binary
> Search Tree's and Btree's).
> 
> Thoughts?  I'm currently leaning towards the first one...

+1

-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] API Thoughts?

2001-08-26 Thread Sterling Hughes

Hey,

Currently working on the Binary Tree implementations for the ADT
extension and was wondering what people thought as more intuitive,
something like:

$tree = tree_new(AVL_TREE);
tree_insert($tree, $element, "compare_func");
// ...

Or:

$tree = avl_tree_new();
avl_tree_insert($tree, $element, "compare_func");

Basically the difference between a generalized tree api, where you
pass a constant to the constructor (if you allow me to use that term
:), or where every form of the tree has a different set of functions
(currently planned are Red-black tree's, AVL tree's, Simple Binary
Search Tree's and Btree's).

Thoughts?  I'm currently leaning towards the first one...

-Sterling


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]