I am a beginner for Yii framework. The MVC design pattern sounds very impressive for people who don’t know much about web programming, like me.
While learning Yii, I am trying to figure how MVC can apply to other famous website I’ve seen, such as www.delicious.com.
Obviously, there is a gap between knowing MVC,Yii and capable of programming www.delicious.com.
Can you tell me how www.delicious.com is done in Yii MVC model? If Yii MVC model is capable of doing that. e.g.: Should each button be some kind of action of certain controller? what should be the controller?
I would strongly advice you to take a look at basic Yii documents and resources like “Building a Blog System using Yii”, “The Definitive Guide to Yii” and “Take the Tour”. There you’ll find not only answers to most of your questions about MVC, but also concepts of how Yii is organized and works as good as basics to start developing your own application using this framework. Maybe not as big as delicious.com at the very beginning, but in the future… who knows, who knows… :]
I’ve read this thread and felt same as its author: I’m an advanced PHP developer with good (possibly even better) OO skills/understanding but never programmed in MVC. I’ve programmed custom PHP5 OO projects and did a lot of Drupal development which is far from OO/MVC development.
There’s a big difference between reading all the manuals on Yii documentation, which are there and they are quite good, I must note, understanding and assimilating their ideas, principals, etc, then to having the ability to actually start programming in Yii.
Well, I guess that after reading the elementary tutorials one just needs to jump to the deep water and “just do it”. Over time, things will fall into the right place in one’s mind as not only his knowledge of Yii/MVC will grow, but he’ll gain new thinking ways to web site design in MVC. He’ll just start to think in MVC (he or she, of course .
I’m on the same spot now - I’ve read much of the documentation (blog tutorial, some of the “definitive guide”, Larry Ulman’s tutorials and others…) and still can’t say I know how to start implementing all this. As always - I need to jump to deep water, utilize MVC-experienced colleagues, and realize that the first project will inevitably appear lacking or even badly implemented in some aspects in the future. That’s just the way things go.
Well… I don’t know like you or others, but I had even deeper jump into water. I had not much time for reading all the good stuff, you mentioned. For me ideal solution was to follow demo application generated by yiic, try to understand it’s logic and only follow to the guide / forum with questions. It was a hard time though. What I’m trying to say is that I used demo application as a main source of information for me, while using guide (except very basic content) as a support one.
And I even had less experience that you, when starting with Yii as I wouldn’t count myself among experienced PHP/OO developers! ;]
sounds like a “tough experience”. luckily for me, I had the little time for reading the mentioned docs. I know this is not always possible, which is sad since I consider this the minimum, more or less (maybe a bit more than minimum, not much more than that). I never understood work places that didn’t understand that there are minimum resources that are needed for a developer to get acquainted with a technology to be able to start working with it.
And, OO is nice. For me, its a blessing upgrade from procedural programming (Drupal, for instance), for my weary mind, keeping it stimulated enough to provide some pleasure during work.
I agree. The only problem – private notice – is that PHP creators seems to be loving procedural way so deeply (words like “maniac” aren’t enough here) that even now, every new introduced class is always surrounded by that procedural bullsh*t. Can’t understand this. This is madness, if we assume that OO is de facto standard of professional programming like for a ten years or so?
I heard that DateTime class could be a good example here. Released not so long ago (in not to old version of PHP), when OO programming was actually the only reasonable way for doing projects bigger than "Hello World! This is my first webpage". And immediately surrounded by stuff like datetime_create. Madness, really madness! :]
I love PHP and I find this language able of easy programming nearly anything. With Yii programming in it becomes state of art. But I can’t disagree with developers of other languages saying that PHP is one whole big pile of garbage and thousands of not needed, not required functions. That is painful true. From this point of view, PHP is nothing else then just a big pile of garbage.
What we have to remember is that OOP never really come into PHP until version 5. Until then, it was half heartedly implemented. OOP has been introduced as a progression through developers requesting its features and functionality. I think a lot of ignorance exists in developers of other languages as they do not know the capabilities a modern PHP application can posses.
The success of PHP initially was its low barrier of entry, you didn’t need to know OOP, type hinting wasn’t enforced and getting up and running was just so easy. I find newcomers to PHP and MVC frameworks are struggling to learn it all at once. There is now a need to understand design patterns and proper development practices (unit testing, code profiling and analysis).
My advice is to practice, practice, practice. There is no substitute for hands on learning. Listen to what other professional PHP programmers are saying and try and understand them. View webinars on topics, attend conferences or just get involved with an Open Source project.
I agree with you, but then again comes this DateTime example. OK - maybe PHP is still learning true OOP… Maybe we’ll see true OOP in PHP 6 (will we?). But, then again… what is the reason for publishing rather new library, written purely in OOP mood and “support” it with a bunch of procedures doing exactly the same, but in procedural-approach, as it can be achieved in OOP one.
For me this is just a nonsense. Ether PHP creator fears pure-OOP or are still supporting procedural style of coding. I don’t see third reason, and both mentioned are terrifying. Doing so, as they did with DateTime brings nothing to PHP than just a new arguments for it’s antagonists, that it is really a pile of garbage code.
Practising? Watching webminars? Well… OK, but isn’t that a little bit off topic? ;] I’m not disputing here if PHP is an easy or hard language (it is fairly easy). I’m trying to get answer here (or finally understand), why PHP creators are still making it as a huge pile of sh*t-code?
I’m not saying they’re not doing a great job and never ment to say this!
I just wanted to say that I would be much more satisfied, if evolutionary would become revolutionary. And revolution means – dropping all the shit that comes in the back and focusing on what is best.
I love PHP for everything you mentioned and for many more. But this doesn’t change that it the same time a hate it for every mess that is still there (and is still being added) in favor of ease of development, instead of professionalism. And I won’t forget that my love to PHP burned with a new flame, when I met Yii for the first time - mostly because for cleaning and organising most of the shit that comes when codding in a pure PHP.
Now, that is a good one: love and hate in the very same time! :]