People who program OOP in PHP are more likely to:
- have come from a background of other programming languages
- are more likely to explore other programming languages with more rigour
This is because many other programming languages have OOP functionality and therefore share certain concepts that people who write OO in other programming languages are already used to.
However, many languages have certain restrictions. Java, for example (which is also C-based), only allows one class per file, where the class is the same name as the file (apart from the .java obviously). After a good period of time programming in Java, you learn to appreciate the benefits of that (autoloading is much easier, organisation and debugging, again, easier).
Some practises are overall pointless habits. I like to keep my classes concise so that further functionality is made with extending those classes and making an overall more flexible system. However, 30 lines is a ridiculous limit. If a class is under 20 lines, without being an extension of another class (with those certain lines setting variables which affect the parent class behaviour), then it seems rather limited. In fact it sounds like a data-holder (such as a record or struct), which is fair enough for that case.
300 lines of code for a log in sounds like a lot. However, taking into account HTML output, form validation, session handling, database connectivity etc then Im not entirely surprised with procedural code. In OOP it takes less code because you've generally already pre-written validation code for the field-modifying methods, form-data accessing methods, you'd already have the database connection open and the update queries would already be pre-written. All you'd have left to do for the actual pages is write the form code (unless you've made a mechanism to automate that) and write a method to control what happens when the form's submitted... unless you've already made an automation for that.
I've built frameworks when forms can be automatically generated from models, and the handling and validation is built in. Complete waste of time, I spent more time customising the automatic functionality than I would have done making them from scratch.