<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: phplondon08 &#8211; the &#8216;crazy guy&#8217; mail</title>
	<atom:link href="http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/feed" rel="self" type="application/rss+xml" />
	<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail</link>
	<description>Random witterings from pookey</description>
	<lastBuildDate>Fri, 12 Mar 2010 23:25:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ice yarn</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-375</link>
		<dc:creator>ice yarn</dc:creator>
		<pubDate>Mon, 16 Feb 2009 10:03:14 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-375</guid>
		<description>I think, the framework is flexible, and so it it also possible to set the page title in the controller, and also allows you to put business logic in the controller. That it&#039;s possible, does not mean it should be done.thank you very much for informing to me .good work :)</description>
		<content:encoded><![CDATA[<p>I think, the framework is flexible, and so it it also possible to set the page title in the controller, and also allows you to put business logic in the controller. That it&#8217;s possible, does not mean it should be done.thank you very much for informing to me .good work <img src='http://pookey.co.uk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leric</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-345</link>
		<dc:creator>Leric</dc:creator>
		<pubDate>Mon, 15 Dec 2008 15:08:42 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-345</guid>
		<description>Every framework is the essence of the experience of the author, I don&#039;t think it has anything to do with MVC</description>
		<content:encoded><![CDATA[<p>Every framework is the essence of the experience of the author, I don&#8217;t think it has anything to do with MVC</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Wade</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-343</link>
		<dc:creator>Wade</dc:creator>
		<pubDate>Tue, 09 Dec 2008 10:47:36 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-343</guid>
		<description>I thought I&#039;d add that I&#039;m wrestling with a badly written bespoke MVC-ish application in PHP. And learning about how people think about MVC by reading StackOverflow.

I&#039;ve come to the conclusion that attempts to do MVC in PHP should instead be called DMVC, the D meaning Data. This is because so many frameworks make the Model the Data and then where do they put the application logic? They usually mix it between the Model and Controller and that ain&#039;t pretty and loses all the advantages of data abstraction. At least if we added a letter to the description people would realize how many frameworks simply get MVC so badly wrong.</description>
		<content:encoded><![CDATA[<p>I thought I&#8217;d add that I&#8217;m wrestling with a badly written bespoke MVC-ish application in PHP. And learning about how people think about MVC by reading StackOverflow.</p>
<p>I&#8217;ve come to the conclusion that attempts to do MVC in PHP should instead be called DMVC, the D meaning Data. This is because so many frameworks make the Model the Data and then where do they put the application logic? They usually mix it between the Model and Controller and that ain&#8217;t pretty and loses all the advantages of data abstraction. At least if we added a letter to the description people would realize how many frameworks simply get MVC so badly wrong.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-323</link>
		<dc:creator>Rob</dc:creator>
		<pubDate>Thu, 09 Oct 2008 14:14:06 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-323</guid>
		<description>Referring (allbeit some months later :-)) to the comments of all application logic going into the model I think there has to be a balance.

A good example would be, if you are using an ORM engine could you switch it to another ORM engine and by changing only the model part of your app get the whole thing working again?  Probably not in 90% of cases because you have calls to the ORM layer in your controllers.

You could say then all calls to ORM must go into the model in the form of static functions, for example User::getAllActiveUsers() etc.  But then what if you want to page those users or get them in a different order than the default?  Soon enough you&#039;d either end up with a hell of alot of static functions or yet another layer in your app that abstracted the ORM technology you are using.  Now if the ORM technology in your app was a concern and likely to have to change then this probably would be the direction to take but if not then why spend all the time building it in?

As I think someone else here has said, personally i&#039;m glad that I&#039;m not forced to do things in a particular way and I think that a framework giving you some freedom like that is a good thing, it places the responsibility with the developer to get the application design right.  The only reference to the above mentioned examples I have is symfony and as far as I can see it implements &#039;model 2&#039; (the term MVC to me refers more to the classic use of it in stateful apps) perfectly and while giving you the ability to break certain &#039;best practice&#039; principles - like outputting to the view directly from the controller using the reponse object - it also allows you to adhere to those best practices just fine.</description>
		<content:encoded><![CDATA[<p>Referring (allbeit some months later <img src='http://pookey.co.uk/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) to the comments of all application logic going into the model I think there has to be a balance.</p>
<p>A good example would be, if you are using an ORM engine could you switch it to another ORM engine and by changing only the model part of your app get the whole thing working again?  Probably not in 90% of cases because you have calls to the ORM layer in your controllers.</p>
<p>You could say then all calls to ORM must go into the model in the form of static functions, for example User::getAllActiveUsers() etc.  But then what if you want to page those users or get them in a different order than the default?  Soon enough you&#8217;d either end up with a hell of alot of static functions or yet another layer in your app that abstracted the ORM technology you are using.  Now if the ORM technology in your app was a concern and likely to have to change then this probably would be the direction to take but if not then why spend all the time building it in?</p>
<p>As I think someone else here has said, personally i&#8217;m glad that I&#8217;m not forced to do things in a particular way and I think that a framework giving you some freedom like that is a good thing, it places the responsibility with the developer to get the application design right.  The only reference to the above mentioned examples I have is symfony and as far as I can see it implements &#8216;model 2&#8242; (the term MVC to me refers more to the classic use of it in stateful apps) perfectly and while giving you the ability to break certain &#8216;best practice&#8217; principles &#8211; like outputting to the view directly from the controller using the reponse object &#8211; it also allows you to adhere to those best practices just fine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Orion Delwaterman</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-242</link>
		<dc:creator>Orion Delwaterman</dc:creator>
		<pubDate>Thu, 31 Jul 2008 14:31:46 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-242</guid>
		<description>No framework, no pattern is a solution for stupid. Stupid developers will make stupid msitakes</description>
		<content:encoded><![CDATA[<p>No framework, no pattern is a solution for stupid. Stupid developers will make stupid msitakes</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: esra</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-189</link>
		<dc:creator>esra</dc:creator>
		<pubDate>Sun, 20 Apr 2008 17:37:09 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-189</guid>
		<description>MVC most likely began as an idea formulated into a concept, then a architectural programming approach which evolved into Smalltalk (a framework). In terms of an architectural pattern, MVC was designed to solve a problem and in essense is one possible solution for solving that particular problem. From a pattern point of view, Smalltalk implements a specific collection of design patterns and applies those patterns in a specific way. 

Other framework flavors of a similar nature attempt to solve the same problem in different ways. Each of these frameworks applies their own collection of design patterns, and each of those subordinate patterns was designed to solve a low-level problem, many of which could be applied or implemented in different ways (e.g., Mediator, Observer, etc.). 

MVC was described in the POSA book as an architectural pattern among the other architectural patterns described in the same book along with a semi-strict explanation of how MVC architectures should be designed to operate as an MVC design pattern (i.e., explicit collections of design patterns are mentioned along with their applied usage). 

Since MVC is one way of solving the same problem which is apparently obvious based on the proliferation of frameworks intended to solve the same problem, MVC would probably be better described as one possible implementation for solving the separation of concerns, categorized under a higher level architectural pattern classification that encompasses all other solutions for resolving the same architectural problem. 

Corraling all other architectural approaches similar to the original MVC concept which are intended to solve the same architectural problem into the pattern classification of MVC, seems to be more of a mistake made by the academic community. 

In the past, we&#039;ve seen similar arguments. For example, there was a discussion a few years back after the announcement of HMVC and how similar it was to PAC. Anyone who has used both PAC and HMVC knows that both architectures were designed to approach the same problem and both used different collections of design patterns to achieve the same goal with different handling of the separation of concerns. 

Personally, I feel that architectural patterns need to be classified more strictly based on the subordinate design patterns they apply and how those patterns are applied (which can differ considerably in some cases). Coralling all MVC-like frameworks and their underlying architectural approaches under the MVC pattern name seems like the cause of much of this discussion and a considerable source of confusion.</description>
		<content:encoded><![CDATA[<p>MVC most likely began as an idea formulated into a concept, then a architectural programming approach which evolved into Smalltalk (a framework). In terms of an architectural pattern, MVC was designed to solve a problem and in essense is one possible solution for solving that particular problem. From a pattern point of view, Smalltalk implements a specific collection of design patterns and applies those patterns in a specific way. </p>
<p>Other framework flavors of a similar nature attempt to solve the same problem in different ways. Each of these frameworks applies their own collection of design patterns, and each of those subordinate patterns was designed to solve a low-level problem, many of which could be applied or implemented in different ways (e.g., Mediator, Observer, etc.). </p>
<p>MVC was described in the POSA book as an architectural pattern among the other architectural patterns described in the same book along with a semi-strict explanation of how MVC architectures should be designed to operate as an MVC design pattern (i.e., explicit collections of design patterns are mentioned along with their applied usage). </p>
<p>Since MVC is one way of solving the same problem which is apparently obvious based on the proliferation of frameworks intended to solve the same problem, MVC would probably be better described as one possible implementation for solving the separation of concerns, categorized under a higher level architectural pattern classification that encompasses all other solutions for resolving the same architectural problem. </p>
<p>Corraling all other architectural approaches similar to the original MVC concept which are intended to solve the same architectural problem into the pattern classification of MVC, seems to be more of a mistake made by the academic community. </p>
<p>In the past, we&#8217;ve seen similar arguments. For example, there was a discussion a few years back after the announcement of HMVC and how similar it was to PAC. Anyone who has used both PAC and HMVC knows that both architectures were designed to approach the same problem and both used different collections of design patterns to achieve the same goal with different handling of the separation of concerns. </p>
<p>Personally, I feel that architectural patterns need to be classified more strictly based on the subordinate design patterns they apply and how those patterns are applied (which can differ considerably in some cases). Coralling all MVC-like frameworks and their underlying architectural approaches under the MVC pattern name seems like the cause of much of this discussion and a considerable source of confusion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: keymaster</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-185</link>
		<dc:creator>keymaster</dc:creator>
		<pubDate>Wed, 19 Mar 2008 22:06:26 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-185</guid>
		<description>It&#039;s so funny to see how people behave when faced with information which doesn&#039;t sit with their understanding of things.

There is no question Mike is right on just about everything he says - the problem is the forceful uncompromising manner in which he expresses his opinions. It just gets people&#039;s backs up.

The truth is that many of the current frameworks do not enforce the separation between layers that a good Computer Science textbook would advocate to get the right amount of encapsulation, decoupling, etc.

But, alas, they are the best we have and are certainly better than going at it alone from scratch.

Perhaps the code in these frameworks is not something one would submit for a phD thesis, but they do accomplish the goals they have set out to do, which is to get development done faster and smarter.

They are practical professional frameworks which work. They are not academic frameworks which are more &quot;correct&quot;.

Perhaps Agavi will become the be all and end all, eventually. Who knows? There are so many moving parts: the size of the community, the available addons, etc, etc.

Agavi may end up being the purest MVC implementation. If what Mike is describing is true, and if they stay true to their word, it sounds like they are going in a great direction.

But in the meantime, which is probably the next year or two, I am quite satisfied with cakePHP. It may not be perfect theoretical MVC, but it&#039;s a heck of a development framework for getting things done reasonably and quickly.

And you know what, for 95% of the web apps most of us develop and will develop, it is more than enough.</description>
		<content:encoded><![CDATA[<p>It&#8217;s so funny to see how people behave when faced with information which doesn&#8217;t sit with their understanding of things.</p>
<p>There is no question Mike is right on just about everything he says &#8211; the problem is the forceful uncompromising manner in which he expresses his opinions. It just gets people&#8217;s backs up.</p>
<p>The truth is that many of the current frameworks do not enforce the separation between layers that a good Computer Science textbook would advocate to get the right amount of encapsulation, decoupling, etc.</p>
<p>But, alas, they are the best we have and are certainly better than going at it alone from scratch.</p>
<p>Perhaps the code in these frameworks is not something one would submit for a phD thesis, but they do accomplish the goals they have set out to do, which is to get development done faster and smarter.</p>
<p>They are practical professional frameworks which work. They are not academic frameworks which are more &#8220;correct&#8221;.</p>
<p>Perhaps Agavi will become the be all and end all, eventually. Who knows? There are so many moving parts: the size of the community, the available addons, etc, etc.</p>
<p>Agavi may end up being the purest MVC implementation. If what Mike is describing is true, and if they stay true to their word, it sounds like they are going in a great direction.</p>
<p>But in the meantime, which is probably the next year or two, I am quite satisfied with cakePHP. It may not be perfect theoretical MVC, but it&#8217;s a heck of a development framework for getting things done reasonably and quickly.</p>
<p>And you know what, for 95% of the web apps most of us develop and will develop, it is more than enough.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rrainn</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-183</link>
		<dc:creator>rrainn</dc:creator>
		<pubDate>Mon, 17 Mar 2008 23:37:21 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-183</guid>
		<description>Koder, you say that no one listens to fools, but I must respectfully disagree with this opinion. At least one person has payed attention to what you had to say... me.

And if you are a PHP developer, as I guess is the case, you would better hope you have been wrong on your next statement, also.</description>
		<content:encoded><![CDATA[<p>Koder, you say that no one listens to fools, but I must respectfully disagree with this opinion. At least one person has payed attention to what you had to say&#8230; me.</p>
<p>And if you are a PHP developer, as I guess is the case, you would better hope you have been wrong on your next statement, also.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rrainn</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-182</link>
		<dc:creator>rrainn</dc:creator>
		<pubDate>Mon, 17 Mar 2008 23:25:31 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-182</guid>
		<description>I think Mike is right. The way he presented his thoughts might not have been the best one, since no one enjoys reading criticism to the frameworks they develop or use. But the principles he pleads for are very healthy. I don&#039;t know if he is right about those frameworks or not; I have no experience with them. But the fact of the matter is, there are a lot of frameworks and tools out there which trade strict rules and architectural robustness for ease of use and steep learning curves.

I acknowledge the benefits of both these approaches:
- coding by strict rules in order to get a reliable architecture which can easily adapt to changes, etc;
- making compromises in order to develope an application very fast;
Each one has its strengths and weaknesses and in the end it all comes down to what kind of application you want (and afford) to have. There is, though, in my opinion, a very serious issue with the second approach. Of course, by following it, a developer may not be forced to break healthy architectural rules. Like it has already been said in this discussion, everyone is free to chose for themselves. Unfortunately, though, even if not forced, the developer is encouraged to take the rule-breaking approach, because most (not all, but most) people, when facing a decision will almost always follow the easy way. In this case, this leads to mediocre code writing principles.

Once again, I am not talking about one or another framework in particular, but about the principle of building clean architectures and not breaking pattern rules. I hope I haven&#039;t offended anyone with my opinions and if I have, please accept my apologies. I assure you, it hasn&#039;t been intentional.

regards,
rrainn</description>
		<content:encoded><![CDATA[<p>I think Mike is right. The way he presented his thoughts might not have been the best one, since no one enjoys reading criticism to the frameworks they develop or use. But the principles he pleads for are very healthy. I don&#8217;t know if he is right about those frameworks or not; I have no experience with them. But the fact of the matter is, there are a lot of frameworks and tools out there which trade strict rules and architectural robustness for ease of use and steep learning curves.</p>
<p>I acknowledge the benefits of both these approaches:<br />
- coding by strict rules in order to get a reliable architecture which can easily adapt to changes, etc;<br />
- making compromises in order to develope an application very fast;<br />
Each one has its strengths and weaknesses and in the end it all comes down to what kind of application you want (and afford) to have. There is, though, in my opinion, a very serious issue with the second approach. Of course, by following it, a developer may not be forced to break healthy architectural rules. Like it has already been said in this discussion, everyone is free to chose for themselves. Unfortunately, though, even if not forced, the developer is encouraged to take the rule-breaking approach, because most (not all, but most) people, when facing a decision will almost always follow the easy way. In this case, this leads to mediocre code writing principles.</p>
<p>Once again, I am not talking about one or another framework in particular, but about the principle of building clean architectures and not breaking pattern rules. I hope I haven&#8217;t offended anyone with my opinions and if I have, please accept my apologies. I assure you, it hasn&#8217;t been intentional.</p>
<p>regards,<br />
rrainn</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas</title>
		<link>http://pookey.co.uk/wordpress/archives/44-phplondon08-the-crazy-guy-mail/comment-page-1#comment-180</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Sun, 16 Mar 2008 12:48:20 +0000</pubDate>
		<guid isPermaLink="false">http://pookey.co.uk/wordpress/?p=44#comment-180</guid>
		<description>you write:
&quot;Here&#039;s a great example of ignorance:
http://www.symfony-project.org/book/1_0/04-The-Basics-of-Page-Creation&quot;

Read the code carefully, before you start pointing fingers.. The &quot;forward&quot;-function in symfony is not doing a http-redirect. So your prime example of &quot;ignorance&quot; in symfony is absolutly wrong.

Congratulations!</description>
		<content:encoded><![CDATA[<p>you write:<br />
&#8220;Here&#8217;s a great example of ignorance:<br />
<a href="http://www.symfony-project.org/book/1_0/04-The-Basics-of-Page-Creation" rel="nofollow">http://www.symfony-project.org/book/1_0/04-The-Basics-of-Page-Creation</a>&#8221;</p>
<p>Read the code carefully, before you start pointing fingers.. The &#8220;forward&#8221;-function in symfony is not doing a http-redirect. So your prime example of &#8220;ignorance&#8221; in symfony is absolutly wrong.</p>
<p>Congratulations!</p>
]]></content:encoded>
	</item>
</channel>
</rss>
