Хотелось бы узнать, стоит ли разбить большой класс на разные разделы и использовать их только при необходимости. Если да, то какой будет лучший вариант?Разделить большие классы или загрузить их полностью для вызова одной функции?
Я просто хочу сказать, что я работаю в Интернете в течение нескольких часов, и я не совсем уверен, что искать, поэтому, если у кого-то есть хорошая, безопасная альтернатива всему этому мусору, пожалуйста, скажите мне! Я еще не совсем эксперт PHP ... Я также не уверен в влиянии ресурсов на использование большого класса в PHP-файле, что очень ограничивает его использование при кэшировании. Может быть, это просто не стоит, независимо от того, насколько большой класс?
У меня было две модели в виду ... это должно было бы влиять на переменные «родителя». Я полностью понимаю, что этот код не работает, я просто решил, что я буду вводить его в PHP + pseudo, чтобы объяснить это, а не только псевдокод.
class User {
public $id;
public $password;
public $password_hash;
public $post_count;
public function __construct($id) {
$this->id = $id;
}
}
subclass Password of User {
public function set($password) {
parent::$password = $password; }
public function generateHash() {
parent::$password_hash = hash("sha256", parent::$password, true); }
public function validate($password) {
return (hash("sha256", $password, true) === parent::$password_hash); }
}
subclass Post of User {
public function count() {
$db = ConnectionFactory::getFactory()->getConnection();
$sql = $db->prepare("SELECT 1 FROM `Forum_Posts` WHERE `User_ID`=:user");
$sql->execute(array('user' => parent::$id));
parent::$post_count = $sql->rowCount();
return parent::$post_count;
}
}
$some_bloke = new User(3);
$bob = new User(4);
$bob->Password->set('idonthaveaverygoodpassword');
$bob->Password->generateHash();
$lucy = new User(5);
echo $lucy->Post->count();
Я также думал об использовании нескольких черт, но это не очень подходит, и я боюсь, что это приведет к увеличению использования памяти бесцельно:
class User {
use BaseUser;
}
class User_Password {
use BaseUser;
use Password;
}
class User_Post {
use BaseUser;
use Post;
}
trait BaseUser {
public $id;
public $password;
public $password_hash;
public $post_count;
public function __construct($id) {
$this->id = $id;
}
}
trait Password {
//stuff
}
trait Post {
//stuff
}
$some_bloke = new User(3);
$bob = new User_Password(4);
$bob->setPassword('idonthaveaverygoodpassword');
$bob->generatePasswordHash();
$lucy = new User(5);
echo $lucy->countPosts();
Я также очень открыт для предложений, как на что переименовать этот пост. Я просто не был уверен.
Благодарю вас! Это было очень проницательно. Я серьезно опасался, что я никогда не получу ответа. x_x Кроме того, я имел в виду использование ЦП, я не знаю, почему я сказал память: p Я предполагаю, что это сводится к жертвованию, возможно, незначительного объема использования памяти/ЦП (если есть) или жертвуя легкостью кодирования/редактирования через SOLID. Вы сделали отличную отправку сообщений пользователей без входа в систему; Я хотел, чтобы некоторые действия пользователя выполнялись без необходимости входа в систему, и я просто никогда не думал о последствиях иерархической структуры, основанной на наследовании. – Xifanie