In addition to implementing a 'baseItem' class as suggested, you may also want to considering developing an interface class for outlining the methods that all items should have. Then, each type of item could implement these methods differently.
For example, all items might need to have an 'equip()' method, but implement it differently based on which kind of items it is. You may not need to create a class for each individual item, but you should probably create classes which are capable of creating unique instances of items based on some sort of data structure you provide (which can be stored in the database).
A really general example might be:
class Leather_Armor extends Armor_Base implements Equippable
{
// these would probably be defined in the base class instead of here
protected $_itemName;
protected $_itemDescription;
protected $_defenseRating;
public function __construct(params)
{
// intialize properties with data from the db
}
// the Equippable interface requires us to define this function
public function equip()
{
// call a function from the base class
$this->recalculateDefenseRating($this->defenseRating)
}
}
You should probably read up on interfaces and abstract classes to fully get the idea.
Also, be aware that this is a really broad, open-ended question than can be approached a thousand different ways. You might want to ask something more specific, or provide concrete examples.