Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6

Вызов статического метода

07.01.2017, 06:14. Показов 5460. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, господа!
Метод вызывается так:
PHP
1
2
3
4
5
6
7
8
class nameClass {
    public function metod($r) {
        // что-то тут...
    }
}
 
$class = new nameClass();
$class->metod($r);
Всё правильно?
А покажите пример, как работать с классом, где все методы статические? Только, ради Бога не посылайте меня читать мануал до полного просветления, мне это не поможет.
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2017, 06:14
Ответы с готовыми решениями:

Вызов статического метода класса в другом классе
Как вызвать статический метод из одного класса в другом? вот этот код не работает class A{ static function vivod($msg){ ...

Метод при вызове статического метода
Подскажите можно ли вызывать определенный метод при каждом вызове любого статического метода класса?

Вызов метода из другого класса
Добрый день, умные люди! Я только начала разбираться в ООП, вот появились вопросы, а не знаю к кого спросить совета. В общем,...

11
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.01.2017, 09:40
Цитата Сообщение от Печатная плата Посмотреть сообщение
Всё правильно?
Ну нестатический да.
Цитата Сообщение от Печатная плата Посмотреть сообщение
А покажите пример, как работать с классом, где все методы статические? Только, ради Бога не посылайте меня читать мануал до полного просветления, мне это не поможет.
Хотел сначала просто дать пример, потом дочитал до фразы "мануал мне не поможет" и решил все-таки дать ссылку на мануал. Потому как Вы не правы. http://php.net/manual/ru/language.oop5.static.php

PHP
1
2
3
4
5
6
7
8
<?php
class Foo {
    public static function aStaticMethod() {
        // ...
    }
}
 
Foo::aStaticMethod();
Что тут может быть непонятного? В этом мануале...
0
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6
07.01.2017, 10:09  [ТС]
// Что тут может быть непонятного? В этом мануале...
Вот не пойму, чтобы обратиться к статическому методу, не надо делать так: $class = new nameClass();:
PHP
1
2
$class = new nameClass();
$class::metod($r);
А можно сразу так:
PHP
1
nameClass::metod($r);
То есть без этого $class = new nameClass();?

Добавлено через 5 минут
Если так, то я вообще ни чего не пойму. Как тогда подключать скрипт понимает в каком файле находится класс с статическими методами?

Добавлено через 2 минуты
Вот я например использую функцию загрузки классов LoadClass(). В этой функции есть пути к файлам классов, там же есть $class = new ClassName();.
Как мне работать с статическими методами?
Спасибо.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.01.2017, 11:30
Цитата Сообщение от Печатная плата Посмотреть сообщение
Вот не пойму, чтобы обратиться к статическому методу, не надо делать так: $class = new nameClass();:
Вы бы сначала изучили сами принципы объектно ориентированного программирования. А потом уже разбирались в разнице между статическими и нестатическими методами. Вот эта махинация со словом new называется сознанием экземпляра класса (объекта).
Цитата Сообщение от Печатная плата Посмотреть сообщение
То есть без этого $class = new nameClass();?
Одно из основных отличий статического и нестатического метода в том, что второй вызывается без создания экземпляра класса.
Цитата Сообщение от Печатная плата Посмотреть сообщение
Как тогда подключать скрипт понимает в каком файле находится класс с статическими методами?
Вы подключаете файл с классом, который используете (не важно его методы, его свойства, или просто экземпляры класса создаете).

Цитата Сообщение от Печатная плата Посмотреть сообщение
Как мне работать с статическими методами?
Выше в примере указано. Если непонятно что то, показывайте конкретный код, задавайте конкретные вопросы, а не "как мне работать".
0
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6
07.01.2017, 12:09  [ТС]
Блин, Вы меня запутали... Это сложно на самом деле, правда... Теперь думаю, что вообще ни чего не знаю.
Позвольте ещё вопрос. Будет ли ошибка: чтобы обратиться к статическому методу, прежде создаем экземпляр: $class = new nameClass(); а потом уже обращаемся: nameClass::metod($r);? Или так можно делать? Просто в моём загрузчике все классы проходят через оператора new.

Добавлено через 2 минуты
Я пробую ошибки нет. Но правильно ли это?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
07.01.2017, 12:27
Цитата Сообщение от Печатная плата Посмотреть сообщение
Блин, Вы меня запутали... Это сложно на самом деле, правда... Теперь думаю, что вообще ни чего не знаю.
Для простоты можете считать, что статический метод класса это то же самое что простая функция (хотя в общем случае это не так).
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
function aFunction()
{
    echo "123";
}
class Foo {
    public static function aStaticMethod() {
        echo "123";
    }
}
 
Foo::aStaticMethod();
aFunction();
Вот тут эффект совершенно одинаковый, что от метода, что от функции. То есть ненужен тут вообще экземпляр класса. Вы можете создавать их, но вызов статического метода к ним никак не будет относиться.

А нестатический метод вызывается как бы для отдельного экземпляра класса.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
class Foo {
    public $a = 123;
    public function setA($newA) {
        $this->a = $newA;
    }
}
 
$object1 = new Foo();
$object2 = new Foo();
 
$object1->setA(456);
 
echo $object1->a."<br>\n";
echo $object2->a."<br>\n";
Code
1
2
456
123
0
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6
07.01.2017, 12:42  [ТС]
Начинаю въезжать! (В мануале так не объяснят...).
Теперь осталось понять, как подключить файл, где находятся класс с статическими методами к другому к другому классу?
Можно тупо заинклудить файл в конструкторе и всё?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
07.01.2017, 20:08
Цитата Сообщение от Печатная плата Посмотреть сообщение
Просто в моём загрузчике все классы проходят через оператора new.
при new Class и Class::method() название класса попадет в автозагрузчик
или я не так понял?
0
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6
07.01.2017, 22:39  [ТС]
Любой класс проходит через загрузчик:
PHP
1
LoadClass('NameClass')->metod($r);
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.01.2017, 23:24
Цитата Сообщение от Печатная плата Посмотреть сообщение
Любой класс проходит через загрузчик
В пхп есть стандартная автозагрузка классов, удобнее использовать ее, необходимости в своих загрузчиков уже нет.
0
-21 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 6
08.01.2017, 08:14  [ТС]
Jewbacabra, движок писал не я и мне не резонно исправлять 1000 файлов под новый загрузчик, мне проще разобраться с самой функцией загрузки.

Сам разберусь.
0
Заблокирован
08.01.2017, 21:22
Цитата Сообщение от Печатная плата Посмотреть сообщение
А можно сразу так:
Цитата Сообщение от Печатная плата Посмотреть сообщение
Любой класс проходит через загрузчик
nameClass::metod($r);
для статических только так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.01.2017, 21:22
Помогаю со студенческими работами здесь

Вызов метода по имени из переменной
собственно код: &lt;?php $gg = new init(); $gg -&gt; call(); //class1 class init { function call() { $cmd=$_GET; ...

Вызов метода класса, по нажатию на submit
&lt;? include(&quot;class/class.User.php&quot;); ?&gt; . . . &lt;form method=&quot;POST&quot; action=&quot;#&quot;&gt; ... &lt;input type=&quot;submit&quot;...

Вызов нестатического метода внутри класса
Здравствуйте! Подскажите пожалуйста, как вызвать внутри класса из одной функции - другую. Вот код: class reg { private $template; ...

Не работает вызов метода PDO в дочернем классе
Есть класс: class Device { public static $device = array('id', 'name', 'type', 'buyDate', 'sealPeriod', ...

Вызов метода одного класса через другой
Необходимо вызвать метод класса ч/з другой класс. Методов класса много, сами классы тоже много. Поэтому делаю один класс, который будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru