This is something I prefer to call my "programming list of shame". Although having a formal university education with courses on software engineering, enterprise software architecture & database design I have been guilty of every single one of those things at one time or another. This is completely subjective & Eclipse oriented
You are a lousy PHP programmer if you
- don't comment your code properly with something like phpDoc
- don't see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT
- have never used some form of version control like Subclipse
- don't adopt some coding & naming standards and general conventions and stick to to them at least throughout the project
- don't use a consistent methodology
- don't escape and/or validate properly input or sql queries
- don't plan your application thoroughly before starting to code
- don't use test-driven development
- don't program & test with error reporting on
- don't see the benefits of a debugger
- don't refactor your code
- don't keep the different layers seperated using something like MVC
- don't know what these stand for: KISS, DRY, MVC, OOP, REST
- don't return content but echo or print it from your functions or classes
- have never seen the advantage of unit tests or testing in general
- return HTML, not data, strings, or objects.
- hard code messages and configuration parameters
- don't optimize your sql queries
- don't use __autoload
- don't allow intelligent error handling
- use $_GET instead of $_POST for any destructive actions
- don't know how to use regular expressions
- you've never heard of sql injection or cross-site scripting
- don't allow simple configuration, can be parameters passed to a class’s constructor, set/get methods called later, or constants defined at a runtime.
- don't understand the benefits and limitations of Object Oriented Programming
- misuse OOP / everything you write , no matter how small is OOP
- you think reusable software equals/requires your code to be OOP
- don't choose intelligent defaults
- don't have one single configuration file
- don't want the file contents to be seen, but give it a .inc extension instead of .php
- don't use a database abstraction layer
- don't keep it DRY, Don't repeat yourself. If you have to copy and paste or duplicate something your design may be off.
- don't make a function/class/method do just one thing and don't make them interact.
- don't try to take advantage of OOP specific features like abstract/interface classes, inheritage polymorphism & access modifiers.
- don't optimize your application design with established design patterns
- don't allow your user to define a base directory if you have multiple files and/or directories
- pollute the global namespace, one option is to prefix the functions in your library with a common string
- don't allow a table prefix when using database tables
- use a separate template engine
- don't take a look at established php frameworks for inspiration, most of them have advanced web dev concepts and good code