Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:10739 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 2645 invoked by uid 1010); 24 Jun 2004 01:08:00 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 2618 invoked from network); 24 Jun 2004 01:07:59 -0000 Received: from unknown (HELO lakermmtao08.cox.net) (68.230.240.31) by pb1.pair.com with SMTP; 24 Jun 2004 01:07:59 -0000 Received: from [192.168.2.101] (really [68.100.246.41]) by lakermmtao08.cox.net (InterMail vM.6.01.03.02 201-2131-111-104-20040324) with ESMTP id <20040624010758.CCOZ17721.lakermmtao08.cox.net@[192.168.2.101]> for ; Wed, 23 Jun 2004 21:07:58 -0400 Message-ID: <40DA29C3.1090301@velum.net> Date: Wed, 23 Jun 2004 21:09:23 -0400 User-Agent: Mozilla Thunderbird 0.6 (Windows/20040502) X-Accept-Language: en-us, en MIME-Version: 1.0 To: internals@lists.php.net Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: static/object method From: hans@velum.net (Hans Lellelid) Hi all, I have a pattern I'm trying to implement in PHP5 using a class that could be called statically or non-statically. Perhaps "pattern" gives this too much legitimacy :) I can't figure out how to do this & wanted to ask if a) it's possible at all and b) if there's been any solution discussed for such an approach. Here's what I'm trying to do, but can't figure out a way in PHP5 (or a non-hack way in PHP4): - AuthorFinder is a class that can be used statically for default behavior or instantiated if customized behavior is needed. static, default behavior, probably accounts for 80% of uses: $c = new Criteria(Author::NAME, "Leo"); $a = AuthorFinder::find($c); instantiated behavior for performing customizations: $c = new Criteria(Author::NAME, "Leo"); $af = new AuthorFinder(); $af->setLimit(5); $a = $af->find($c); Is there *any* way to accomplish that in PHP5? I can't reference $this -- even to check isset() (which would probably be misleading anyway) from inside a method declared as static. If I do not declare the method static then calling it statically triggers E_STRICT error which I want to avoid since I'm writing PHP5 code. Perhaps I'm missing an obvious solution, in which case I apologize & probably should have asked php-general. It would be *really* cool if PHP could support this type of pattern, as there have been a few cases where I've wanted to apply this in PHP5. Perhaps this has already been discussed & I just didn't notice. Thanks, Hans