Magento is far from typical of PHP development, and what it calls is not always consistent with what other people call it. Magento splits the model layer into two parts, as you already learned, with a model that processes business logic and a part of a resource related to talking to the database - the theory is that if you decide to store data thatβs not being addressed with PDO, you could swap another resource for processing / loading and saving without any logic that surrounds these things.
Two different types of resources that magento have are Entity and Mysql4, the latter being a fairly standard table-based gateway system, where Resource maps a table in a database, the former is a bit more complicated. So that users and developers can add custom fields to things, the main parts of magento (products, customers, orders, etc.) Everything that is known as the Entity-Attribute-Value (EAV) system appears, where, rather than the presence of a typed column on the value, you have a row with the key (column name cf) and value. Entity resources handle the mapping of these eav tables into an array of fields that contains data.
To emphasize, this is far from typical of a PHP application, and if you intend to learn PHP, I would choose a different system.
source share