Junior — Middle
Кадом қадамҳои иловагӣ барои иҷрои дурустии паттерни Singleton, ғайр аз манъ кардани конструктори умумӣ, зарур аст?
sobes.tech AI
Ҷавоб аз AI
Барои татбиқи дурусти намунаи Singleton дар PHP, ғайр аз манъ кардани конструктори умумӣ, зарур аст:
- Конструкторро
privateёprotectedкардан, то аз эҷоди намунаҳо аз берун пешгирӣ шавад. - Манъ кардани клонидани объект тавассути иҷрои методи
__cloneва гардондани онprivateё партофтани истисно. - Манъ кардани десериализатсия тавассути иҷрои метода
__wakeupва гардондани онprivateё партофтани истисно. - Эҷод кардани як методи статикӣ (масалан,
getInstance) ки танҳо як намунаи синфро эҷод ва баргардонад.
Масалан:
class Singleton {
private static $instance = null;
private function __construct() {
// конструктори хусусӣ
}
private function __clone() {
// манъ кардани клонидан
throw new \Exception("Cloning is not allowed.");
}
private function __wakeup() {
// манъ кардани десериализатсия
throw new \Exception("Unserialization is not allowed.");
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
Ин ба таъмини он кӯмак мекунад, ки танҳо як намунаи синф эҷод шавад ва он наметавонад клонида ё аз ҳолати сериалӣ барқарор карда шавад.