Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
28 / 9 / 1
Регистрация: 16.11.2011
Сообщений: 340

static свойства

13.08.2013, 10:35. Показов 2843. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, вот у меня есть абстрактный класс в котором объявляется статическое свойство к примеру protected static $dir;, и далее в классе наследники оно переопределяеться, к примеру в родители я его просто создал, а в наследнике дал ему значение "images", и вот как мне теперь обращатся к нему в классе родителе ? Если раньше я это делал через $this->$dir, и в самом скрипте создавал ссылку на объект и вызывал нужный мне метод. То щас такой вариант не подходит, и нужно без создания объекта. Я сделал через static::$dir; всё работает, но есть ли это правельно ? Может есть еще какой то вариант ? Вот сообственно сам код:

upload_class.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
abstract class Upload {
 
    protected static $dir;
    protected static $mime_type;
 
    public static function uploadFile($file) {
        if (!self::isSecurity($file)) return false;
        $uploadfile = static::$dir."/".$file['name'];
        return move_uploaded_file($file['tmp_name'], $uploadfile);
    }
    protected static function isSecurity($file) {
        $blacklist = array(".php", ".phtml", ".php3", ".php4", ".html", ".htm");
        foreach ($blacklist as $item) {
            if (preg_match("/$item\$/i", $file['name'])) return false;
        }
        $type = $file['type'];
        for ($i = 0; $i < count(static::$mime_type); $i++) {
            if ($type == static::$mime_type[$i]) break;
            if ($type == static::$mime_type[$i]) break;
            if ($i + 1 == count(static::$mime_type)) return false;
        }
        $size = $file['size'];
        if ($size > 2048000) return false;
        return true;
    }
}
upload_image.php
PHP
1
2
3
4
5
6
7
8
9
<?php
 
require_once "upload_class.php";
 
class UploadImage extends Upload {
 
    protected static $dir = "images";
    protected static $mime_type = array("image/jpeg", "image/png", "image/gif");
}
И сообственно тут уже вызываю
PHP
1
UploadImage::uploadFile($_FILES['image']);
Подскажите пожалуйста, есть ли так делать правильно ? Или возможно есть еще другой способ ? Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.08.2013, 10:35
Ответы с готовыми решениями:

Изменить значение static свойства в классе
Пытаюсь изменять значение static свойства класса, но оно не меняется. Что я делаю не так? &lt;?php class MyClass { static...

static
Приведите пример как использовать static в ООП

Non-static method
вот примерно код class news { function news() { //тут код } }

32
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.08.2013, 15:39
Студворк — интернет-сервис помощи студентам
Ну я просил, думал вы поделитесь
Цитата Сообщение от KOPOJI Посмотреть сообщение
Обоснуйте, пожалуйста
1
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 15:41
я использую пхп не потому что мне нравится.. деваться некуда.. если бы был C++ for server я бы с радостью пользовался им..
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.08.2013, 15:43
http://cppcms.com/wikipp/ru/page/main
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 15:45
Просто я начал с того что мне показалось глупым. Переопределение статических членов(их в пхп называют свойствами) Это странно.. для меня

Добавлено через 1 минуту
по ссылке не пойду, потому что форум предлагает минуту ждать
0
18.08.2013, 15:47

Не по теме:

а по ссылке сразу нажать нельзя..? O_o Ну да ладно, ваше дело. Лишь дал ссыль на веб-фреймворк на плюсах, что с этим делать - решать вам :)

0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 15:52
пых потому что бесплатный.

Добавлено через 47 секунд
хостеры указывают чем нам заниматься

Добавлено через 3 минуты
Если бы я хотел писать на любимом язык я бы должен обосновать заказчику мой выбор.. а результат будет одинаковый для пользователя при использовании любого языка.. Отказаться от жумлы это уже полдела... Спасибо что показали мне как в пыхе различаются статики и селфы
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
18.08.2013, 16:00
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
зачем
Когда кто-то говорит то, что всем другим кажется странным или глупым (особенно если до этого уже ошибся в данном вопросе), то он должен обосновать свои слова.

Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
цпп есть родитель ооп. или вы играете в свое собственное ооп..
С какого перепугу C++ родитель ООП? Посмотри, когда появился ООП, а когда С++.

Вот обычное поведение C++:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>;
 
using namespace std;
 
class A {
public:
    static void test() {
        cout << "A";
    }
    static void echo() {
        test();
    }
};
 
class B: public A {
public:
    static void test() {
        cout << "B";
    }
};
 
int main()
{
    B::echo();
    getchar();
    return 0;
}
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
еще раз перечитаю Бьярна Страустрапа и пойму что php в ооп - урод
LSB - это не особенность PHP.
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 16:04
линукс стандарт бейс это какой-то кусок чего-то общего... линукс еще не стал стандартом. если php на голову выше изобретателя ооп, я вас поздравляю
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
18.08.2013, 16:36
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
если php на голову выше изобретателя ооп
А в каком месте изобретателем ООП стал C++? ООП было задолго до его появления.

Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
Если бы я хотел писать на любимом язык я бы должен обосновать заказчику мой выбор..
Может быть проблема в том, что ты не смог обосновать это?

Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
если бы был C++ for server я бы с радостью пользовался им..
Есть. Или лично тебя забанили в гугле?
Вот только уровнем и удобством они ниже, т.к. не нужны никому. Они предоставляют лишь базовые возможности.
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 16:41
перечисли все тоже самое, только чтобы это было бесплатно. не напрягайся.. шутка
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
18.08.2013, 16:46
Цитата Сообщение от AndreyDyakonov Посмотреть сообщение
не напрягайся.. шутка
Это фразой ты хочешь сказать, что уже нашел бесплатное, или что будешь опровергать разумные доводы и продолжать говорить чушь?
0
 Аватар для AndreyDyakonov
122 / 120 / 7
Регистрация: 21.04.2013
Сообщений: 615
18.08.2013, 16:52
Цитата Сообщение от OnYourLips Посмотреть сообщение
А в каком месте изобретателем ООП стал C++?
цпп это язык. цпп ничего не изобретал

Добавлено через 1 минуту
какие доводы? пока что хрень льется

Добавлено через 43 секунды
Цитата Сообщение от OnYourLips Посмотреть сообщение
продолжать говорить чушь?
продолжаешь ты

Цитата Сообщение от OnYourLips Посмотреть сообщение
Или лично тебя забанили в гугле?
умное что-то скажи

прикольный ты чувак
0
18.08.2013, 17:49
 Комментарий модератора 
Ближе к теме.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.08.2013, 17:49

Static public и public static
В чем разница?

Доступ к методу static
Доступ к методам класса обьявленным, как static, можно получить только с помощью &quot;::&quot;. Но нельзя с помощью &quot;-&gt;&quot; Так...

static в связке с protected,private
привет.Помогите с одним вопросом. Как я понял с флагом static можно вызвать только public свойство/метод class::property. Правильно ли...

Разницы Public и Static Protected
Доброго времени суток я вот хотел уточнить Небольшой пример класса class Test { static protected $q = 1;

Всем hi форумчаный! Воопрос по static -у
Как вы думаете про этот код. Я пишу все метод и свойтву через static а есть разница (ну там по скорости) с использованием и без...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru