That is the definition of a cop out answer. You and others don’t need it because you’re implementing janky work arounds that are much better solved with namespacing. The Whole ModuleBlahWatever really long class name thing is so php 4 which is where you apparently want to be stuck. That is fine but don’t go preaching that namespacing is useless because you lack the motivation and foresight to use it in your own code.
This argument again? Look, when you boil it down, it’s very simple.
If Tony wants to stay on the blue line, let him. We’ll be on the red line, enjoying the ability to run many projects in parallel, to upgrade them on a whim, to use cutting edge language updates, and to generally grow as developers.
How does one even find PHP4 hosting these days? That version of the language is positively medieval.
Needing PHP4 isn’t really the issue here. Boasting your code still can be run with PHP4 is.
The fact the PHP devs have tried to keep BC up so much over the years is why the rare one-off dev can stay in the stone age and even try to fight against progress. “It worked like it did before, why does it have to change now?” It is like the group of Neanderthals who didn’t like using fire, because it burned them.
keeping BC all the time is a bad idea for a language (or any piece of software for that matter) because any software that is used more than once (like any framework or a language) must stay modern and up-to-date to win against its competition (if you actually call it that).
I also realize, breaking BC too often can also be crippling for popularity and having a dev crying because he doesn’t want to change his work to meet modern progress is a lot better for the language than the language loosing its whole following. However, a web development language (along with frameworks) today must be very consistent, modular and still relatively easy to use. That is what makes them popular.
The concept of shared and reusable software is quite paradoxical actually. But, to sit there and argue against the things that actually support the progress of such software, especially when it is already made, just so you can, in your mind, justify your reasons for not changing, is just fooling yourself
With an api (SOAP/REST) isn’t any major framework ‘enterprise ready’ ?
I would say that hardware/network infrastructure is more important than the framework you choose. Can’t really see the point in getting Phalcon to run on HHVM if im only going to run it on my laptop using a 56k modem.
Your analogy is completely inappropriate and misleading. Even though houses which are built today use different materials from those used in the past, it is not a viable option to completely rebuild everything simply because a new technique or material has been invented. Why are some people still living in houses which are over 100 years old? Because they are still inhabitable, and the cost of knocking them down and rebuilding them is just too much. If it ain’t broke don’t fix it.
It is the same with software development. If I write a piece of code which works, then why should I refactor it in order to do exactly the same thing but in a different manner? Where is the cost justification? What is the ROI?
Just because a new feature is added to the language is no reason to rush out and employ that new feature if it does not add any value to the software.
Who said anything about “rushing out”? I build software every day, I’ll start using new features in new projects.
I disagree. If you bothered to look at why namespaces were added to PHP you would see that they were implemented as a solution to a particular problem. But if I don’t have that problem then why should I implement that solution?
Making the effort to convert my framework, and the applications that I have already built using this framework, to use namespaces would be a total waste of time as I don’t have the problem for which namespaces are the solution. The ROI on such an effort would be zero, and any competent person would tell you that if the ROI is zero then the effort is a total waste of time.
So all you do is build new projects every day and never have to go back and maintain them? That is not how I work. I released my framework in 2006 and I have maintained it for customers who run on a variety of different versions of PHP. This means that I cannot start using a new feature that becomes available in the latest PHP version simply because my software would be unusable for those customers who are still running older PHP versions.
If nobody has anything new to say is there any reason to keep this topic open?
The only part out of all your posts, I agree with, is that sometimes developers refactor to the latest design pattern/framework fad, without thinking of the Return on Time Invested.
Yes, I could upgrade a legacy app, but if it is going to take thousands of pounds of development hours, without any return, it is a complete waste of time, unless you have nothing better to do.
That being said, I disagree with your frankly archaic opinions on PHP development and I think you should realise you post with an air of authority and could be doing more harm than good.
Not at all, but around 20% of my time is spent on new projects. Because my code uses DI and is fully interchangeable I can write a new implementation for one of the features while on a new project with some enhancements and easily backport it to old projects. Do I do this? Not often. Only when I need a new feature in an old project.
Stuff does occasionally need re factoring. I realise the design can be improved or it doesn’t meetthe needs of my new project. Instead of ending up with 9000 line classes, I’ll refactor it. As I refactor it I’ll use new language features that make tasks easier. For instance, there are so many cases where closures are a real time saver and spending the time to replace the hacky alternatives
So when do I refactor code? Only when I need to work on it. If I’m working on a class, I’ll refactor it as I need to my new needs using new features, otherwise I’ll leave it as is. The benefit? I can then move it to my other projects as necessary.
I have never “boasted” that my code can still run with PHP4. It is simply a statement of fact that I made years ago. In the days when customers were in the process of migrating from PHP4 to PHP5 there were several frameworks which were written for PHP5 only, which immediately made them unusable for those still running the older version. I also noticed some frameworks which had different downloads for PHP4 and PHP5. I specifically built my framework to run under either version, and to automatically switch from using the PHP4 extensions to the PHP extensions without any intervention. The fact that I could achieve this while others could not indicates that the “others” were lacking in ability.
Just to clarify, you are not currently running any applications on PHP4?
The discussion isn’t about refactoring or rebuilding. It is about this comment you made.
They are very useful. Keeping with the analogy, they are modern and help build buildings with a better structure faster. That is their purpose. Your calling the modern technologies used in today’s frameworks “evil”, your calling the devs that use them “mindless monkeys” and your calling the frameworks themselves “useless” is the issue Tony. You should simply stop it, because you are completely wrong.
Oh, but you have. On Linkedin, when you were arguing against the deprecation of PHP4 constructors in PHP7.
No. As soon as all the clients who pay for support migrated to PHP 5 I upgraded both my development PCs (a desktop and a laptop) to PHP 5, and I have never used PHP 4 since. But I never did anything to my code to stop it from running in PHP 4. My open source framework may still run under PHP 4, but I have no means to check it one way or the other. The commercial applications which I wrote using my framework, and which I still actively support, run on several PHP versions, from 5.2 upwards, but my development PC is always using the latest version (currently 5.6.7)
I said that I still use PHP4 constructors even though I am using PHP5, not that I still use PHP4. The two are entirely different.
That is precisely what I do, yet you continually claim that I should refactor more often for no other reason than to make use of new features in the languages, such as namespaces and autoloaders, even when I have no use for them.
If you honestly cannot see why an autoloader is useful then you have no business discussing programming concepts.