Для многих программистов на PHP объектно-ориентированное программирование - пугающая концепция, полная сложного синтаксиса и других препятствий. Как подробно описано в моей книге Pro PHP и jQuery , вы узнаете концепции объектно-ориентированного программирования (ООП) - стиля кодирования, в котором связанные действия группируются в классы, чтобы облегчить создание более компактного и эффективного кода.

Понимание объектно ориентированного программирования

Объектно-ориентированное программирование - это стиль кодирования, который позволяет разработчикам группировать схожие задачи в классы . Это помогает сохранить код в соответствии с принципом «не повторяйся» (DRY) и простым в обслуживании.

«Объектно-ориентированное программирование - это стиль кодирования, который позволяет разработчикам группировать схожие задачи в классы ».

Одним из основных преимуществ программирования по принципу DRY является то, что если в вашей программе изменяется часть информации, обычно требуется только одно изменение для обновления кода. Одним из самых больших кошмаров для разработчиков является поддержание кода, в котором данные объявляются снова и снова, а это означает, что любые изменения в программе становятся похожими на бесконечную игру Where"s Waldo ?

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

Понимание объекты и классы

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

Узнаем различия между объектами и классами

Фотографии от Instant Jefferson и John Wardell

Когда разработчики начинают говорить об объектах и классах, то они кажутся взаимозаменяемыми. Хотя на самом деле это не так.

Сразу же у нас возникает путаница в ООП: опытные разработчики начинают говорить об объектах и классах, и они кажутся взаимозаменяемыми. Это не так, хотя разницу на первый взгляд и тяжело уловить.

Класс, например, это как проект для дома . Он определяет форму дома на бумаге, при этом отношения между различными частями дома так же четко определены и спланированы, хотя дома еще не существует.

Таким образом, объект подобен фактическому дому , построенному в соответствии с этим планом. Данные, хранящиеся в объекте, подобны дереву, проводам и бетону, которые составляют дом: не будучи собранными в соответствии с планом, это всего лишь куча материала. Однако, когда все это объединяется, это становится организованным и полезным домом.

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

Структурирование классов

Синтаксис для создания класса довольно прост: объявить класс с помощью ключевого слова class , за которым следует имя класса и набор фигурных скобок ({}):

После создания класса новый экземпляр может быть создан и сохранен в переменной с использованием ключевого слова new:

$obj = new MyClass;

Чтобы увидеть содержимое класса, используйте var_dump ():

Var_dump($obj);

Попробуйте выполнить этот процесс, разместив весь предыдущий код в новом файле test.php в [локальной] папке для тестирования:

Загрузите страницу в браузере по адресу http: //localhost/test.php , и на экране должно появиться следующее:

Object(MyClass)#1 (0) { }

В своей простейшей форме вы только что завершили свой первый ООП-скрипт.

Определение свойств класса

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

Чтобы добавить свойство в MyClass , добавьте следующий код в свой скрипт:

Ключевое слово public определяет видимость свойства, о котором вы узнаете чуть позже в этой главе. Затем свойство присваивается с использованием стандартного синтаксиса переменных и присваивается значение (хотя свойствам классов не требуется начальное значение).

Echo $obj->prop1;

Поскольку могут существовать несколько экземпляров класса, если отдельный объект не ссылается, то сценарий не сможет определить, с какого объекта следует читать свойство. Использование стрелки (->) является конструкцией ООП, которая обращается к содержащимся в нем свойствам и методам данного объекта.

prop1; // Output the property ?>

I"m a class property!

Определение методов класса

Методы являются специфичными для класса функциями. Отдельные действия, которые объект сможет выполнить, определены внутри класса как методы.

Например, чтобы создать методы, которые будут устанавливать и получать значение свойства класса $prop1 , добавьте в свой код следующее:

prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } $obj = new MyClass; echo $obj->prop1; ?>

Примечание . ООП позволяет объектам ссылаться на себя, используя $this . При работе внутри метода используйте $this таким же образом, как вы использовали бы имя объекта вне класса.

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

prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } $obj = new MyClass; echo $obj->getProperty(); // Get the property value $obj->setProperty("I"m a new property value!"); // Set a new one echo $obj->getProperty(); // Read it out again to show the change ?>

Перезагрузите браузер, и вы увидите следующее:

I"m a class property! I"m a new property value!

"Сила ООП становится очевидной при использовании нескольких экземпляров
одного класса."

prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } // Create two objects $obj = new MyClass; $obj2 = new MyClass; // Get the value of $prop1 from both objects echo $obj->getProperty(); echo $obj2->getProperty(); // Set new values for both objects $obj->setProperty("I"m a new property value!"); $obj2->setProperty("I belong to the second instance!"); // Output both objects" $prop1 value echo $obj->getProperty(); echo $obj2->getProperty(); ?>

Когда вы загружаете результаты в свой браузер, они отобразят следующее:

I"m a class property! I"m a class property! I"m a new property value! I belong to the second instance!

Как вы можете видеть, ООП хранит объекты как отдельные сущности , что позволяет легко разделять различные фрагменты кода на небольшие связанные пакеты.

Волшебные методы в ООП

Чтобы упростить использование объектов, PHP также предоставляет ряд магических методов или специальных методов, вызываемых, когда определенные общие действия происходят внутри объектов. Это позволяет разработчикам выполнять ряд полезных задач с относительной легкостью.

Использование конструкторов и деструкторов

Когда создается экземпляр объекта, часто желательно сразу же установить несколько вещей. Чтобы справиться с этим, PHP предоставляет магический метод __construct() , который вызывается автоматически всякий раз, когда новый объект
создается.

В целях иллюстрации концепции конструкторов добавьте конструктор в MyClass , который будет выводить сообщение всякий раз, когда создается новый экземпляр класса:

"; } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } // Create a new object $obj = new MyClass; // Get the value of $prop1 echo $obj->
"; ?>

Примечание . __CLASS__ возвращает имя класса, в котором оно вызывается; Это то, что известно как волшебная константа . Существует несколько доступных магических констант, о которых вы можете прочитать в руководстве по PHP.

The class "MyClass" was initiated! I"m a class property! End of file.

Чтобы вызвать функцию, когда объект разрушен, доступен магический метод __destruct() . Это полезно для очистки класса (например, закрытие соединения с базой данных).

Вывести сообщение, когда объект уничтожен, определяя магический метод
__destruct() в MyClass:


"; } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } // Create a new object $obj = new MyClass; // Get the value of $prop1 echo $obj->getProperty(); // Output a message at the end of the file echo "End of file.
"; ?>

При определенном деструкторе перезагрузка тестового файла приводит к следующему выводу:

The class "MyClass" was initiated! I"m a class property! End of file. The class "MyClass" was destroyed.

«Когда достигнут конец файла, PHP автоматически освобождает все ресурсы».

Чтобы явно вызвать деструктор, вы можете уничтожить объект, используя
функцию unset() :

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } // Create a new object $obj = new MyClass; // Get the value of $prop1 echo $obj->getProperty(); // Destroy the object unset($obj); // Output a message at the end of the file echo "End of file.
"; ?>

Теперь при загрузке в вашем браузере результат будет выглядеть следующим образом:

The class "MyClass" was initiated! I"m a class property! The class "MyClass" was destroyed. End of file.

Преобразование в строку

Чтобы избежать ошибки, если скрипт пытается вывести MyClass в виде строки, используется другой магический метод, называемый __toString() .

Без __toString() попытка вывода объекта в виде строки приводит к фатальной ошибке . Попытка использовать echo для вывода объекта без использования магического метода:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "

"; ?>

Это приводит к следующему результату:

The class "MyClass" was initiated! Catchable fatal error: Object of class MyClass could not be converted to string in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 40

Чтобы избежать этой ошибки, добавим метод __toString() :

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } // Create a new object $obj = new MyClass; // Output the object as a string echo $obj; // Destroy the object unset($obj); // Output a message at the end of the file echo "End of file.
"; ?>

В этом случае попытка преобразовать объект в строку приведет к вызову метода getProperty(). Загрузите тестовый скрипт в свой браузер, чтобы увидеть результат:

The class "MyClass" was initiated! Using the toString method: I"m a class property! The class "MyClass" was destroyed. End of file.

Совет . В дополнение к магическим методам, обсуждаемым в этом разделе, доступно еще несколько других. Полный список магических методов приведен на странице руководства PHP .

Использование наследования

Классы могут наследовать методы и свойства другого класса с помощью ключевого слова extends . Например, чтобы создать второй класс, который расширяет MyClass и добавить метод, вы должны добавить следующее в свой тестовый файл:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } class MyOtherClass extends MyClass { public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } } // Create a new object $newobj = new MyOtherClass; // Output the object as a string echo $newobj->newMethod(); // Use a method from the parent class echo $newobj->getProperty(); ?>

После перезагрузки тестового файла в вашем браузере выводится следующее:

The class "MyClass" was initiated! From a new method in MyOtherClass. I"m a class property! The class "MyClass" was destroyed.

Перезапись унаследованных свойств и методов

Чтобы изменить поведение существующего свойства или метода в новом классе, вы можете просто перезаписать его, объявив его снова в новом классе:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } class MyOtherClass extends MyClass { public function __construct() { echo "A new constructor in " . __CLASS__ . ".

"; } } // Create a new object $newobj = new MyOtherClass; // Output the object as a string echo $newobj->newMethod(); // Use a method from the parent class echo $newobj->getProperty(); ?>

Это изменяет вывод в браузере на:

A new constructor in MyOtherClass. From a new method in MyOtherClass. I"m a class property! The class "MyClass" was destroyed.

Сохранение оригинальной функциональности метода при перезаписи методов

Чтобы добавить новые функции к унаследованному методу, сохранив исходный метод нетронутым, используйте ключевое слово parent с оператором разрешения области видимости (::):

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } public function getProperty() { return $this->prop1 . "
"; } } class MyOtherClass extends MyClass { public function __construct() { parent::__construct(); // Call the parent class"s constructor echo "A new constructor in " . __CLASS__ . ".
"; } public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } } // Create a new object $newobj = new MyOtherClass; // Output the object as a string echo $newobj->newMethod(); // Use a method from the parent class echo $newobj->getProperty(); ?>

Это выведет результат как родительского конструктора, так и конструктора нового класса:

The class "MyClass" was initiated! A new constructor in MyOtherClass. From a new method in MyOtherClass. I"m a class property! The class "MyClass" was destroyed.

Указание видимости свойств и методов

Для дополнительного контроля над объектами методам и свойствам можно указать видимость. Это определяет, как и откуда можно получить доступ к свойствам и методам. Существует три ключевых слова: public , protected и private . В дополнение к своей видимости метод или свойство могут быть объявлены static , что позволяет им получать доступ без экземпляра класса.

«Для дополнительного контроля над объектами методам и свойствам указывается их видимость."

Примечание . Видимость - новая функция в PHP, начиная с версии 5. Информацию о совместимости ООП с PHP 4 смотрите на странице руководства PHP.

Публичные свойства и методы

Все методы и свойства, которые вы использовали до сих пор, были общедоступными. Это означает, что к ним можно получить доступ в любом месте, как внутри класса, так и извне.

Защищенные свойства и методы

Если свойство или метод объявлен как protected , доступ к нему можно получить только внутри самого класса или в классах-потомках (классы, которые расширяют класс, содержащий защищенный метод).

Объявите метод getProperty() как защищенный в MyClass и попытайтесь получить к нему доступ непосредственно извне класса:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } protected function getProperty() { return $this->prop1 . "

"; } public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } } // Create a new object $newobj = new MyOtherClass; // Attempt to call a protected method echo $newobj->getProperty(); ?>

При попытке запустить этот сценарий появляется следующая ошибка:

The class "MyClass" was initiated! A new constructor in MyOtherClass. Fatal error: Call to protected method MyClass::getProperty() from context "" in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 55

Теперь создайте новый метод в MyOtherClass для вызова метода getProperty() :

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } protected function getProperty() { return $this->prop1 . "
"; } } class MyOtherClass extends MyClass { public function __construct() { parent::__construct(); echo "A new constructor in " . __CLASS__ . ".
"; } public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } public function callProtected() { return $this->getProperty(); } } // Create a new object $newobj = new MyOtherClass; // Call the protected method from within a public method echo $newobj->callProtected(); ?>

Это приведет к желаемому результату:

The class "MyClass" was initiated! A new constructor in MyOtherClass. I"m a class property! The class "MyClass" was destroyed.

Приватные свойства и методы

Свойства или методы, объявленные как private , доступны только внутри класса, который их определяет . Это означает, что даже если новый класс расширяет класс, определяющий приватное свойство , это свойство или метод не будут доступны в дочернем классе.

Чтобы продемонстрировать это, объявите getProperty() как private в MyClass и попытайтесь вызвать callProtected() из
MyOtherClass:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } private function getProperty() { return $this->prop1 . "

"; } public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } public function callProtected() { return $this->getProperty(); } } // Create a new object $newobj = new MyOtherClass; // Use a method from the parent class echo $newobj->callProtected(); ?>

Перезагрузите браузер, и появится следующая ошибка:

The class "MyClass" was initiated! A new constructor in MyOtherClass. Fatal error: Call to private method MyClass::getProperty() from context "MyOtherClass" in /Applications/XAMPP/xamppfiles/htdocs/testing/test.php on line 49

Статические свойства и методы

Доступ к методу или свойству, объявленному static , возможен без создания экземпляра класса; Вы просто указываете имя класса, оператор разрешения области и имя свойства или метода.

«Одним из основных преимуществ использования статических свойств является то, что они сохраняют свои значения в течение всего срока действия скрипта».

Чтобы продемонстрировать это, добавьте статическое свойство $count и статический метод с именем plusOne() в MyClass . Затем установите цикл do ... while для вывода приращенного значения $count , пока значение меньше 10:

"; } public function __destruct() { echo "The class "", __CLASS__, "" was destroyed.
"; } public function __toString() { echo "Using the toString method: "; return $this->getProperty(); } public function setProperty($newval) { $this->prop1 = $newval; } private function getProperty() { return $this->prop1 . "
"; } public static function plusOne() { return "The count is " . ++self::$count . ".
"; } } class MyOtherClass extends MyClass { public function __construct() { parent::__construct(); echo "A new constructor in " . __CLASS__ . ".
"; } public function newMethod() { echo "From a new method in " . __CLASS__ . ".
"; } public function callProtected() { return $this->getProperty(); } } do { // Call plusOne without instantiating MyClass echo MyClass::plusOne(); } while (MyClass::$count < 10); ?>

Примечание . При доступе к статическим свойствам знак доллара
($) идет после оператора разрешения области видимости .

Когда вы загружаете этот скрипт в своем браузере, выдается следующее:

The count is 1. The count is 2. The count is 3. The count is 4. The count is 5. The count is 6. The count is 7. The count is 8. The count is 9. The count is 10.

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

Для начала, давайте рассмотрим основные преимущества объектно-ориентированного подхода, дабы понять, почему же он получил такое широкое распространение.

Код объектно-ориентированного подхода достаточно прост в понимании и чтении и отлично подходит для реализации масштабных и очень непростых проектов.

Приложения, написанные с использованием рассматриваемого подхода в программировании, легко модернизируются и расширяются.

Правильно спроектированные приложения, состоят из отдельных модулей, а значит, при необходимости могут быстро дорабатываться и обновляться, что на несколько порядков увеличивает скорость разработки.

Теперь, когда основные сильные стороны рассматриваемого стиля кодирования определены, можно переходить непосредственно к сути данного урока.

Итак, в основе объектно-ориентированного программирования в PHP, лежит принцип связывания данных и функций, манипулирующих ими в соответствующие объекты. Что несколько отличается от привычного процедурного подхода, где аналогичные элементы определены отдельно друг от друга. То есть объекты вмещают в себя некоторую информацию, которая сохранена в его свойствах (так называют переменные объектов) и определенный набор действий, которые описываются в его методах (по сути, обычные функции). При этом методы, как правило, в своей работе оперируют данными хранящимися в свойствах, что подразумевает как считывание, так и запись и изменение.

Соответственно, можно сказать, что основой методологии объектно-ориентированного программирования на PHP, является работа с объектами, или же использование их для манипуляции над данными.

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

class Customer { public $name; protected $orders; public function __construct($name, $orders) { $this->name = $name; $this->orders = $orders; } public function getName() { return $this->name; } } $customer = new Customer("Ben", array("id" => 10)); echo $customer->getName();

class Customer {

public $ name ;

protected $ orders ;

public function __construct ($ name , $ orders ) {

$ this -> name = $ name ;

$ this -> orders = $ orders ;

public function getName () {

return $ this -> name ;

$ customer = new Customer ("Ben" , array ("id" = > 10 ) ) ;

echo $ customer -> getName () ;

При реализации экземпляра класса (то есть создание нового объекта, используя определенный интересующий класс), формируется новый объект, а так же определяются описанные в классе свойства. Кроме того запускается на исполнение специальный метод, под названием __construct(), если конечно он описан в структуре класса. Как Вы видите для создания объекта, используется ключевое слово new, за которым следует имя класса. В скобках при необходимости передаются аргументы для вышеуказанного метода, в котором, как правило, определяются некоторые начальные данные для будущего объекта.

В примере выше, помимо создания объекта, осуществляется вызов метода getName() и вывод на экран значения, возвращаемого им. Конечно, в результате работы скрипта мы увидим вывод имени пользователя — “Ben”, потому как, именно оно передается в качестве первого аргумента методу конструктору, где и записывается в свойство класса под именем name. Соответственно вышеуказанный метод возвращает в качестве результата своей работы значение данного свойства.

При этом ни кто Вам не запрещает сформировать еще один подобный объект из ранее описанного класса:

$customer2 = new Customer("Sem", array("id" => 15)); echo $customer2->getName();

$ customer2 = new Customer ("Sem" , array ("id" = > 15 ) ) ;

echo $ customer2 -> getName () ;

В этом случае на экране мы увидим имя уже совсем другого пользователя – “Sem”. Таким образом мы, по сути создали совсем другой объект из одного и того же шаблона – класса. При этом у данного объекта, совсем другие начальные данные, которые все так же формируются методом конструктором, а значит и его поведение, определяемое методами, так же будет другим.

Обратите внимание, что свойства класса и его методы, могут использоваться только с конкретным объектом — как раз это и видно на примере, и без него, они абсолютно бесполезны, в плане работы за пределами класса, потому как внутри класса, конечно же, они могут использоваться в коде его методов. Причем доступ к вышеуказанным элементам объекта, осуществляется через специальный набор знаков “->”(стрелочку) , перед которой необходимо указать интересующий объект,или же указатель объекта – ключевое слово $this. Указатель объекта $this, используется в коде методов, непосредственно внутри класса для обращения к его свойствам или же методам.

И опять же мы с Вами видим, что основа разработки ООП на PHP — это работа с объектами, причем прелесть заключается в том, что мы один раз описываем класс, а значит, формируем некий набор данных и необходимый функционал. А далее создаем объекты, каждый из которых в зависимости от начальных данных, по сути, будет абсолютно уникальным.

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

Собственно, вот мы с Вами кратко и рассмотрели основы объектно-ориентированного программирования в PHP. Конечно, данный вид программирования требует большего внимания, нежели одна статья, если Вы хотите действительно хорошо разобраться в нем и использовать его в своих наработках. Более подробно данная тема рассмотрена в премиум курсе .

Всего Вам доброго у удачного кодирования!!!

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

И не все современные вычислительные машины могут предоставить такие ресурсы. А чтобы оценить возможности своего ПК, можно и нужно прибегать к различным тестам, которые отображают реальное состояние производительности системного блока или ноутбука.

Выполнить процедуру проверки мощности компьютера способен любой человек. В этом нет ничего сложного. Здесь не потребуется особых навыков и приемов.

Уровень вычислительной мощности любого персонального компьютера сильно влияет на его сообразительность и скорость обработки поставленной перед ним задачи . Когда ПК не в силах справиться с возложенными на него обязанностями, он может немного притормаживать или даже зависнуть на какое-то время. Подобные случаи бывают у всех компьютеров и ноутбуков. Одно дело, когда это происходит со стареньким устройством, которое давно пора заменить, но когда подобное случается с только что купленной техникой, то сразу же возникает желание выяснить, по какой же причине все тормозит.

Как только возникают трудности в работе компьютера, первое, что необходимо сделать, - это сразу же протестировать его производительность. Осуществить такую проверку можно несколькими способами. Либо с помощью предустановленных программ, либо прибегнув к специальным онлайн-сервисам. Подобный тест даст возможность понять, из-за чего возникли проблемы вашего «железного друга». Еще таким тестом стоит воспользоваться при покупке устройства, чтобы точно понимать, на какие возможности он рассчитан.

Проверка будет полезна, так как:

  • даст возможность найти слабые компоненты, которые стоит заменить или улучшить;
  • покажет способности устройства и скорость его работы;
  • поможет сравнить несколько тестируемых машин и выбрать лучший вариант для решения поставленных задач;
  • укажет на самые «тяжелые» для ПК программы;
  • найдет сбои и ошибки в операционной системе.

Устаревшие устройства, которым уже более 7 лет, могут работать медленно всего лишь из-за того, что они старые. В таком случае лучше поменять их на более современные модели. Так как их производительность в любом случае будет намного слабей новых компьютеров. И даже значительные усовершенствования компонентов не смогут дать того потенциала, который будет в новеньком ПК.

С чего начать

Первым делом для выяснения производительности устройства нужно определить, правильно ли работают все его компоненты, имеются ли физические дефекты и неисправности.

Если компьютер перегревается, то в таком состоянии тесты будут неправильными. А в самом процессе диагностики и тестирования материнская плата может получить повреждения из-за перегрева компонентов , таких как: графический процессор или чипсет. При проверке ноутбука необходимо проследить за тем, чтобы аккумулятор был полностью заряжен , а блок питания подключен в сеть и заряжал устройство.

Это необходимые условия для получения точной информации о мощности тестируемого оборудования. Кроме того, нужно убедиться в исправности самой операционной системы . Такие признаки, как самопроизвольная перезагрузка, торможение, внезапное появление «синего экрана смерти», говорят о том, что с Windows не все в порядке.

Откройте приложение CCleaner и выполните очистку временных и ненужных данных с системного носителя. Затем завершите все работающие программы, такие как:

  • антивирусы;
  • загрузчики торрентов;
  • приложения, имеющие синхронизацию через интернет;
  • P2P программы.

Кроме того, нужно убедиться в том что система полностью обновлена.

Проверка производительности онлайн

Диагностика устройства и его компонентов начинается с выяснения подробностей об их характеристиках. Такие подробности позволяют выбрать правильный режим работы, в том случае когда что-то мешает запуску теста. Или говорят о том или ином оборудовании, драйвера которого необходимо обновить.

Чтобы получить необходимые данные о компьютере, всю диагностику можно осуществить через интернет. Стоит только набрать адрес: ma-config.com, и перейти по нему на страницу сервиса. Чтобы ресурс смог проанализировать и выдать всю информацию, нужно будет добавить дополнительное расширение для браузера, скачанное на этом же сайте.

Из полученного отчета можно будет узнать такую информацию:

  • объем оперативной памяти;
  • частота и другие данные процессора;
  • версия BIOS;
  • модель и производитель материнской платы;
  • версия чипсета;
  • имеющиеся на борту типы соединений и коннекторов.

А для проверки скорости сети нужно зайти на другой ресурс: speedtest. net. Который также протестирует и предоставит необходимую информацию о возможностях сетевого соединения.

Тестирование скорости Windows

Windows 7 или 8

Проверка мощности ПК с помощью встроенной системной утилиты проводится следующим образом.

Найдите в меню «Пуск» пункт «Панель управления», откройте раздел «Система и безопасность». Далее перейдите в подраздел «Система». В новом открывшемся окне выберите строку с названием «Индекс производительности Windows». Откроется еще одно окно, где будут отображены данные о производительности компьютера. Общая оценка основывается на самом низком показателе всех протестированных компонентов. Здесь важно, чтобы эта оценка не была равна единице.

Windows 8.1 или 10

Графическая оболочка, предназначенная для тестирования производительности ПК, в новых версиях ОС не встроена. Поэтому получать данные о мощности компьютера нужно с помощью консоли PowerShell.

Не стоит сразу же пугаться ее непонятного вида. Несмотря на то, что она выглядит непривычно, это все равно очень удобный инструмент, и пользоваться им довольно просто. Итак, найдите через поиск и запустите от имени администратора утилиту PowerShell. В командной строке введите команду Winsat Formal и нажмите Enter. Запустится процесс тестирования системы. Нужно будет дождаться окончания проверки, в конце которой появятся все оценки производительности, определенные программой. Если проверяется ноутбук, то не забудьте подключить его к адаптеру.

Программы и приложения для проверки

Конечно же, есть и дополнительные программы, установив которые можно будет проверить мощность ПК. С помощью таких приложений можно получить огромное количество различных данных о комплектующих компьютера, его ПО и, конечно же, производительности. Вот некоторые из подобных программ:

  1. AIDA64 . Это довольно популярное приложение, созданное в помощь профессионалам. Оно дает возможность проверить мощность и работоспособность всех компонентов компьютера. Aida64 проводит диагностику материнских плат, мониторов, оперативной памяти, видеоадаптера, процессора. Кроме физических элементов, приложение способно проверить и программную часть компьютера, протестировав его операционную систему, а также оценить актуальность драйверов и программ.
  2. 3dmark . Этот продукт служит помощником в проверке мощности видеокарт. Имеет в своем арсенале большой набор различных тестов, определяющих производительность видеоадаптера в 2D и 3D режимах. Протестировав видеосистему ПК, приложение выдает оценку в виде количества кадров, прорисованных видеокартой за период теста. За счет того, что программа выжимает из видеокарты все ее возможности, напрягая ее на все 100%, многие специалисты любят использовать ее для проверки стабильности и выносливости видеосистемы.
  3. SiSoftware Sandra . Еще один популярный вариант проверки состояния компьютера и его производительности. Он также имеет большой набор инструментов для выполнения диагностики ПК.
  4. PCMark . Это небольшая программка, созданная для узкого применения. Ее назначение - тестирование скорости компьютера и его компонентов. И она позволяет сравнить показатели, полученные от своей машины со средними показателями мощности, собранными по всему миру.

Любую из этих программ можно свободно найти в интернете, скачать и использовать для определения производительности персонального компьютера.

Если Вы интересуетесь такими вопросами как проверка скорости Вашего Интернет-соединения, тестирование монитора или поддержка стерео звука динамиками устройства, то наша статья поможет Вам произвести нужные тесты быстро и без установки какого-либо софта!

Знать всё о своём компьютере - дело довольно важное. Во-первых, это позволяет лучше понять потенциальные возможности Вашего ПК, а во-вторых, сравнивать результаты своей системы с результатами других пользователей.

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

Что нельзя тестировать и почему

Сколь бы ни были могучи современные Интернет-ресурсы, то, что они работают только в среде браузера, накладывает на них ряд ограничений. Конкретно, с их помощью мы никак не можем получить прямого доступа к системе и её параметрам. Соответственно, не существует, например, сервисов тестирования оперативной памяти или видеокарты онлайн.

Правда, есть несколько порталов, которые нашли, как обойти данное ограничение. Они предлагают установить специальный плагин-клиент, который собирает данные о Вашем ПК, передаёт их на сервер, где они обрабатываются и выдаются в виде готового результата в окне браузера. Это не чистый онлайн-сервис, но всё же. Из подобных русскоязычных сайтов рекомендую DriversCloud.com :

После нажатия на кнопку "Начать анализ" должен автоматически скачаться загрузчик плагина, который в установленном виде занимает чуть больше 11 мегабайт (если скачивание не началось, можно скачать вручную на странице "Как мне удалить плагин?"). Если же всё уже установлено, то запустится тестирование, результатом которого будет примерно такая сводная таблица:

Мы получим обобщённые сведения практически обо всех компонентах ПК. Однако, это далеко не все данные! Справа от каждого модуля описания имеется кнопка "Плюс", нажав которую, Вы сможете выбрать ряд дополнительных характеристик в каждой категории.

Но и это ещё не всё :) Как нетрудно догадаться из названия, DriversCloud позволяет также для всех основных узлов Вашего компьютера! Для того, чтобы ознакомиться с предложенным списком обновлений, нажмите кнопку "Найти драйверы" под таблицей характеристик Вашего ПК.

Словом, сервис DriversCloud довольно толковый, но, увы, не полностью независим от стороннего ПО. Полностью же онлайн при помощи обычного браузера мы можем тестировать только то, что касается мультимедийных возможностей или сетевых параметров:

  • работа микрофона (требует наличия ) и динамиков;
  • настройки монитора (размеры дисплея, параметры цветности, яркости, контрастности и т.п.);
  • работа с файлами;
  • параметры сетевого соединения (скорость, используемый браузер, IP-адрес и т.п.).

Предлагаю Вам всё, что мне удалось найти:).

Проверка скорости Интернета

Наверное, самым первым и самым логичным, что просится на проверку, является скорость Интернет-соединения. Не будем же нарушать логику:)

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

Вот список наиболее удачных сервисов тестирования скорости Интернета:

Суть у всех них одна: Ваш компьютер соединяется с каким-либо сервером, скачивает оттуда определённые тестовые файлы, а затем отправляет их обратно. На основе того, как быстро происходит получение и выгрузка данных, на сервере вычисляется средняя скорость Вашего Интернет-соединения. Полученные данные отображаются в виде красивых картинок или простого текста.

Из вышеперечисленного списка одним из самых точных и красивых сервисов проверки скорости Интернета является SpeedTest.net:

Характерной особенностью данного сервиса является то, что перед началом тестирования Вы можете выбрать на карте любой доступный сервер в любом городе! Если Вы этого не сделаете, SpeedTest выберет тот, который ближе всего находится к Вашему текущему местоположению, которое вычисляется по IP-адресу.

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

Самым же информативным, на мой взгляд, является тест скорости Интернета от Яндекса:

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

Остальные упомянутые сервисы работают практически идентично. Стоит обратить внимание на то, что из них, самым быстрым является InetZamer.ru, MainSpy.ru позволяет видеть динамику изменения скорости на разных этапах тестирования, а 2ip.ru имеет ещё ряд полезных и даже развлекательных сервисов, которые могут Вам понравиться.

Тестирование монитора

При покупке монитора многие пользователи даже не думают, что его можно и нужно настраивать. Обычно работа монитора оценивается нами по критерию: "показывает-не показывает" :) Так и стоит он у нас годами без калибровки по цветам, яркости и т.п. А, проверять настройки монитора, между прочим, рекомендуют пару раз в году!

Как и в предыдущем случае, предлагаю Вам ряд сервисов для тестирования и коррекции параметров Вашего дисплея:

Каждый сервис позволяет нам определить:

  1. Однородность цветопередачи и отсутствие "битых" пикселей.
  2. Частоту обновления экрана (особенно актуально для ЭЛТ-дисплеев).
  3. Резкость изображения.
  4. Яркость и контрастность дисплея.
  5. Правильность геометрических пропорций экрана.

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

Однако, для ЖК-мониторов тестов, как правило, требуется меньше, поскольку они не так подвержены сбиванию настроек, как их ЭЛТ-аналоги. В первую очередь стоит обратить внимание на однородность цветопередачи при заливке экрана одним цветом. Если на однотонном фоне Вы обнаружите одну или несколько точек иного цвета - это "битые" пиксели...

Иногда от них можно избавиться путём "прогрева" матрицы динамически изменяющимся изображением (например, белым шумом) в течении пары часов. Для точечного "лечения" битых пикселей можно воспользоваться сервисом JScreenFix.com .

Второй часто встречаемой ошибкой в настройках ЖК-мониторов является неправильная настройка яркости и контрастности. Для её коррекции обычно используют тестовые картинки с градациями серого цвета вплоть до самых светлых его тонов, переходящих почти в белый. Если Вы видите все градации, значит всё верно, если нет, пробуйте менять параметры яркости и контраста.

Думаю, теперь Вам будет проще разобраться, для чего и как использовать предлагаемые онлайн тесты монитора. Поэтому, теперь немного поговорим о каждом из них. И первым в списке идёт сервис Monteon.ru:

Это русскоязычный сервис, который содержит весь набор классических тестов монитора. Все тесты лучше запускать в полноэкранном режиме, нажав для этого кнопку F11 на клавиатуре или специальную кнопку на нижней панели инструментов. Для ЭЛТ-дисплеев желательно провести все тесты. А для ЖК можете выборочно проверить цветопередачу и параметры яркости/контрастности.

Любителям сделать всё по-быстрому, а также почитателям котиков по душе придётся другой русскоязычный сервис от создателей онлайн CatLair:

Здесь не так много тестов, как на предыдущем ресурсе, однако во всех тестах присутствуют изображения котов на пиктограммах кнопок:). Чтобы скрыть котов и все панели с подсказками нужно просто кликнуть по экрану. Повторный клик вернёт всё на свои места. Естественно, проводить тестирование лучше тоже в полноэкранном режиме.

Последний сервис в нашем списке является англоязычным, однако, он предоставляет в наше распоряжение ряд весьма интересных и полезных (особенно для ЭЛТ-мониторов) тестов:

Все тесты здесь поделены на три большие подгруппы: "Color range" (цветопередача), "Trailing" (динамичность) и "Homogenuity" (однородность). Особенный интерес представляет второй раздел, который позволяет проверить возможности дисплея динамически менять положение объектов на экране без искажения их формы. Имеются настройки цветов фона и объектов, а также скорости движения.

Единственный недостаток сервиса - для работы на компьютере должен быть установлен флеш-плеер не ниже 8-й версии.

Проверка звука

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

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

Нам достаточно зайти на сайт, подключить наушники к компьютеру и нажать кнопку проверки канала (например, "Left" для левого). Если Вы услышите звук в левом наушнике, значит, вы вставили их в уши правильно, в противном случае придётся поменять их местами:)

Сервис, увы, англоязычный, но знающие люди на нём могут отыскать много полезностей. Здесь собраны и тесты для определения частотных характеристик, и для проверки динамического диапазона, и даже, онлайн тест слуха! Список всех тестов можно найти на страничке https://www.audiocheck.net/soundtestsaudiotesttones_index.php .

Проверка на вирусы

Последнее, что можно проверить онлайн на нашем компьютере - файлы. Они гигабайтами лежат на жёстких дисках наших ПК и некоторые из них могут быть весьма небезопасны! Если Вы скачали что-то из Интернета и оно не вызывает у Вас доверия, проверьте его при помощи признанного онлайн антивирусного сканера VirusTotal.com :

Данный сервис позволяет тестировать любые типы данных размером до 128 мегабайт при помощи более чем 50 антивирусных движков с самыми последними базами данных. Всё, что от Вас требуется, выбрать на компьютере тестируемый файл, передать его на анализ и дождаться результатов. Если Ваш файл ранее уже тестировался, то результаты могут быть практически мгновенными!

Подобным образом работает ещё ряд популярных сервисов, вроде, VirusScan.Jotti.org (до 5 файлов не более 50 МБ одновременно), VirScan.org (до 20 файлов не более 20 МБ) или Metascan Online (1 файл до 140 МБ). Однако, Вирус Тотал наиболее известный и авторитетный. Стот, однако, сказать, что 100% сказать, опасен ли файл не может никто. Сканеры вирусов только предполагают угрозу, а решать Вам:)

Если же Вы желаете просканировать весь компьютер, а не только конкретные файлы, то есть и такая возможность. Правда, для этого придётся использовать Internet Explorer и специальное расширение к нему. Однако, если это Вас не смущает, тогда предлагаю Вашему вниманию ESET Onlie Scanner :

Это сервис от разработчиков популярного антивируса NOD32. Он позволяет использовать реальную базу данных ESET для выявления опасного ПО на Вашем компьютере при помощи специального плагина для IE. Всё, что Вам нужно сделать - открыть сервис, нажать кнопку "Запустить ESET Onlie Scanner" и подтвердить установку дополнения, а затем его запуск.

Стоит, однако, сразу сказать, что вылечить найденные вирусы при помощи сервиса Вы, увы, не сможете. Сканер только определяет их наличие и предлагает скачать и установить пробную версию антивирусного пакета ESET Smart Security. Однако, Список небезопасных файлов Вы получаете и ничто не мешает Вам вручную удалить всё, что Вы считаете необходимым!

Выводы

Современные Интернет-сервисы, как мы могли убедиться, дошли практически до предела своих возможностей, которые ограничиваются только особенностями работы браузеров. А некоторые даже пытаются "перескочить" установленные ограничения за счёт использования собственных онлайн-клиентов и плагинов.

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

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.