Главная   Новости   Поиск   
Азбука программиста




Яндекс.Метрика

Классы: быть или не быть

Классы: быть или не быть

Рано или поздно все программисты PHP приходят к мысли: стоит или не стоит писать скрипты с использованием классов. Здесь мнения ИТ сепциалистов разделяются. Это вопрос религии, а к религии, как известно, нужно относится уважительно.

Однозначного рецепта нет и не будет, лучше займитесь трекингом. Всё зависит от задачи и от уровня программиста. Но классы скорее нужно использовать, чем не нужно. Но грамотно. Если приложение небольшое, то "заморачиваться" на классы ну совершенно не стоит. Исключение составляет приложения, которые используют функции. Здесь уже стоит задуматься.

Дело в том, что классы в классическом их понимании порождают экземпляр объекта в памяти веб-сервера. И если посещений огромное количество, то для каждой сессии будет висеть свой экземпляр класса, а это  - оперативная память. В некоторых случаях это вполне оправдано. Например - личный кабинет. Для каждого пользователя будут свои, потенциально уникальные данные. 

Часто приходится видеть код, в котором используются классы там, где им не совсем место, например - параметры сайта. Они одни для всех сессий, но для каждого соединения их приходится "размножать". 

Получается, что в некоторых случаях мы используем классы как классы, а в други х - как общедоступное хранилище функций и переменных. И это правильно! 

Классы в PHP лучше размещать в отдельно файле. Само-собой подразумевается, что для классов существует отдельная папка. Пусть она называется classes. Получается, что класс One будет размещаться в файле /classes/One.php

Для того, чтобы уйти от геммороя с инициализацией классов в головном файле (пусть он будет index.php) нужно свтавить код автоинициализации классов:

  function __autoload($class_name) {

    include $server_dir . 'classes/' . $class_name . '.php';
  };

Этот код сам будет находить файл класса по его имени и делать все деяния над его тушкой. Теперь о внутренностях самого класса. Файл One.php будет содержать следующий базовый код, который сделает обычный php файл класом:

 

<?php
class One {
 
}
?>

Внутри данного класа будет что-то вставлять. Что именно это будет, зависит от конкретной задачи. Так, если у нас будет динамичесский класс, то есть смысл использовать конструктор класса - функцию, которая выполняется при инициализации класса:

function __construct() {

}

В случае, если мы используем класс, как хранилище функций, то функции необходимо определять как статические. В этом случае нам не нужно объявлять класс:

public static function f($id) {

}

Таким образом объявленная функция будет вызываться так:

One::f($id);

 

В заключении можно сказать, что граммотному функциональному приложению непомешают классы, но их необходимо чётко разделять на статические и динамические.



Безопасность

В этой статье приводятся методы борьбы с вирусами. Опишем типовую ситуацию, которая знакома многим пользователям ПК: установлен новый антивирус, раз в день обновляются базы, все подозрительные файлы сразу удаляются. В один ясный, солнечный день вы приходите к другу и чтобы показать новые фотки, подключаете свою флешку к его компу. Но антивирус начинает вам говорить, сколько вирусов он отыскал на вашей флешке...

Читать далее