Re: class? package?
| From: | Nathan Nobbe | Date: | Wed, 11 Jun 2008 05:10:19 +0000 |
| Subject: | Re: class? package? | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-275216@lists.php.net to get a copy of this message | ||
On Wed, Jun 11, 2008 at 12:02 AM, Larry Garfield <larry@garfieldtech.com>
wrote:
> On Tuesday 10 June 2008, Shelley wrote:
> > Hi all,
> >
> > If you are designing with OO principles, could you give an explanation of
> > what is the difference classes and packages?
> >
> > Several principles talks about classes and packages, such as:
> > The classes in a package are reused together. If you reuse one of the
> > classes in a package, you reuse them all.
> >
> > but few explains the difference between them.
> >
> > When I was summarizing the OO principles, that question confused me:
> >
>
> http://phparch.cn/index.php/php/43-php-advanced-programming/170-principles-
> >of-object-oriented-design
> >
> > Thanks in advance. :)
>
> A class is a syntactic way of grouping behavior and data together in an
> encapsulated fashion (at least that's the PHP definition).
>
> A formal package is a syntactic way of grouping related classes together,
> either for easier distribution, somewhat tighter coupling, or syntactic
> sugar. For instance, you could have 5 classes that make up your "Database
> abstraction" package; they're all discrete, but all work in concert.
>
> PHP does not have a syntactic "package" concept. The closest thing would
> be
> namespaces as implemented in PHP 5.3, but that's not out yet. Many systems
> emulate packages with verbose class naming (eg, Database_Connection,
> Database_Query, Database_Transaction, Database_Query_Select, etc.), but I
> personally find that ugly. :-)
furthermore, in languages such as java (and likely others) packages have
access levels which are conceptually similar to ppp in classes. this allows
designers to limit access to certain classes in a given package (duh); it
turns out to be quite useful. imagine you are a library author and some of
the classes you distribute, you dont intend for your clients to use, well
then, you simply mark those classes as private.
i dont believe the php namespace concept incorporates this feature, nor do i
think its really relevant, in a source based language. however, i do find
it relevant to the discussion ;D
-nathan