Пожалуйста, взгляните на этот класс, я знаю, что фрагмент кода вне приложения мало что говорит о том, что должен делать, но я думаю, что вы понимаете, что в основном должно делать и для чего используется.
<?php
class Customer
{
const DB_TABLE = 'customers';
public $id = NULL;
//all other properties here
function __construct($associative_array = NULL)
{
//fills object properties using values provided by associative array
}
static function load($customer_id)
{
$obj = new static(); //PHP 5.3 we use static just in case someone in future wants to overide this in an inherited class
//here we would load data from DB_TABLE and fill the $obj
return $obj;
}
static function delete($customer_id)
{
//here we just delete the row in the DB_TABLE based on $customer_id (which is the primary key of the table)
}
function save()
{
//saves $this properties into a row of DB_TABLE by either updating existing or inserting new one
}
}
Помимо любого типа комментариев, которые вы делаете в коде (которые всегда приветствуются), главный вопрос здесь таков: "прочитав так много на SO о том, насколько плохи static
методы и использование из static
в целом, в этом коде вы бы сделали два метода load/delete
не статичными? Если да, то почему, не могли бы вы объяснить на небольшом примере. "
Мне кажется странным не делать их static
, потому что я думаю, что это странно для создания нового объекта, загруженного из БД, который будет вынужден писать каждый раз:
$obj = new Customer(); //creating empty object
$obj->load(67); //loading customer with id = 67
вместо того, чтобы просто делать
$obj = Customer::load(67); //creates a new customer and loads data form DB