Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:62450 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 259 invoked from network); 24 Aug 2012 15:35:20 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Aug 2012 15:35:20 -0000 Authentication-Results: pb1.pair.com smtp.mail=dukeofgaming@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dukeofgaming@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.170 as permitted sender) X-PHP-List-Original-Sender: dukeofgaming@gmail.com X-Host-Fingerprint: 209.85.214.170 mail-ob0-f170.google.com Received: from [209.85.214.170] ([209.85.214.170:48769] helo=mail-ob0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 2F/DB-30159-73F97305 for ; Fri, 24 Aug 2012 11:35:20 -0400 Received: by obbwc18 with SMTP id wc18so5052472obb.29 for ; Fri, 24 Aug 2012 08:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=JMxTVHfjUHotnLOwcFydcxTJSZyUKUy2450EoB6+eYY=; b=GACgYgwD9CPD3LEp1y7tJv4txrygOwLlT9pKZS5OlOwi9L2oChQ41SAVilewmv4WM6 8+40GKtn6mYfJfsj3eAzS+lMAhCZleTXPsJHouAiNTKa/uCsWXnYf8rmJKGzxKzlWlbt O7mWV9BuQ8lB/NCzMWE/5vFjgY0RxGURcMIMxyH9nlGz5fw2VEUwUx66POWzknVieWmE 7jN3FInBGEiiCPDB+uQCGz0p7NfZlpShtapOyGIuDAnBTeQ0Yvt65SCyHV9VIkmhZ43r ezrtwFxq0fCre6nf92Zgm4cW7g7oAy1Px0eGeX1f+xFYEjuwdbQ6iFWUnG3tJBQVil53 QVmg== Received: by 10.60.3.35 with SMTP id 3mr4365222oez.139.1345822517268; Fri, 24 Aug 2012 08:35:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.60.4.230 with HTTP; Fri, 24 Aug 2012 08:34:56 -0700 (PDT) In-Reply-To: References: <50369892.6080106@googlemail.com> Date: Fri, 24 Aug 2012 10:34:56 -0500 Message-ID: To: Peter Nguyen Cc: Sebastian Krebs , internals@lists.php.net Content-Type: multipart/alternative; boundary=e89a8fb1ff0a12924d04c804b932 Subject: Re: [PHP-DEV] Aspect Oriented Programming in PHP From: dukeofgaming@gmail.com (dukeofgaming) --e89a8fb1ff0a12924d04c804b932 Content-Type: text/plain; charset=ISO-8859-1 AOP is the future and a very awesome complement to OOP. It is a shame that very few are doing it and I think this would attract some good attention to PHP after traits (both are horizontal reuse mechanisms). On Fri, Aug 24, 2012 at 2:01 AM, Peter Nguyen wrote: > Well, you just have to know and check for the aspects I guess, if you're > using wildcards in the joint points. It's no difference than knowing what > PHP functions/classes/variables not to overwrite/overload. Besides, you can > always debug_backtrace to find out which joint points was executed... > Another option is not to use wildcards and define the joint point > explicitly. > > 2012/8/24 Sebastian Krebs > > > 2012/8/24 Peter Nguyen > > > > > Your argument is a general issue when refactoring code. Whenever you > > > change the name of a method/class, you need to change it in all the > > places > > > that use it, even in the AOP definitions if you have it of course. The > > > advice is just a PHP callable so it works in the same way. > > > > > > I talked about refactoring the joint points, not the advises, but thats > not > > the point. If I refacter an identifier my IDE (I use PhpStorm, but the > > others should be that powerful too) supports me by searching for every > > occurence of the identifier, or even without the need to refactor stuff I > > can call "find usage". With a string like > > > > $ 'Classname::method()' > > > > or > > > > $ 'Classname->method()' > > > > I need at least text search, that should work reliable, when no dynamic > > strings occur, because with > > > > $ 'Classname::' . $method > > > > it's getting hard, if not even impossible. One default case (it's > mentioned > > in the quickstart of the extension) are the wildcards > > > > $ 'Classname::do*() > > > > I guess this would take much effort. Just "refactoring" is not that easy > > anymore. > > > > Don't get me wrong: I like AOP as idea and as concept, but I'm afraid, > that > > it could lead to scary construction, where noone can trace, what happens > > when and why. Also as I mentioned I don't even have any better idea ;) > > > > Regards, > > Sebastian > > > > > > > > > > > > 2012/8/23 Sebastian Krebs > > > > > >> Hi, > > >> > > >> From my users point of view: I would like to see it. Maybe not in this > > >> implementation/syntax, especially because it hasn't a special syntax > > (but > > >> imo it should to make the impact more obvious/prominent). With the > joint > > >> points as string and the common function call I can imagine it can get > > hard > > >> to find out, where a specific advise where attached, or which were > > attached > > >> at all, or just how many. For example I rename a method/class and I > will > > >> not recognize, that a security advise gets lost, I may realize it as > > soon > > >> as I find my data on pastebin ;) But I have no idea how it could look > > >> like.... > > >> > > >> Regards, > > >> Sebastian > > >> > > >> > > >> Am 23.08.2012 16:36, schrieb Peter Nguyen: > > >> > > >> Hi, > > >>> > > >>> AOP (http://en.wikipedia.org/wiki/**Aspect-oriented_programming< > > http://en.wikipedia.org/wiki/Aspect-oriented_programming>) > > >>> when used > > >>> correctly, can make your application really modular. I've seen > several > > >>> implementations but they all require compiling of code beforehand. > > There > > >>> is > > >>> however a PECL extension now (https://github.com/AOP-PHP/**AOP< > > https://github.com/AOP-PHP/AOP>) > > >>> that enable > > >>> AOP in PHP directly. I was wondering if there are any > > >>> interests/possibility > > >>> to include AOP into the PHP core? > > >>> > > >>> Best regards, > > >>> > > >>> Peter > > >>> > > >>> > > >> > > >> -- > > >> PHP Internals - PHP Runtime Development Mailing List > > >> To unsubscribe, visit: http://www.php.net/unsub.php > > >> > > >> > > > > > > > > > -- > > github.com/KingCrunch > > > --e89a8fb1ff0a12924d04c804b932--