powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как передавать параметры в функцию/класс?
11 сообщений из 11, страница 1 из 1
Как передавать параметры в функцию/класс?
    #38148873
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
/**
* Обработка изображений
*/
abstract class Image {

    public function edit($params) {    
        // Параметры по-умолчанию
        $prm = array(                                             
            'width'        => null,
            'height'       => null,
            'ext'          => 'jpg',
            'file_input'   => 'files/',
            'file_output'  => 'files/'
        );
        $prm = array_merge($prm, $params); //Дополняем недостающие параметры

        // ...Код функции...
    }
}

/**
* Загрузка файлов
*/
class Album {

    // Параметры по умолчанию
    private $prm = array(
        'maxSize'      => '10M',
        'allowedType'  => array('jpeg', 'jpg', 'png', 'gif'),
        'copiesParams' => array()
    );

    public function __construct($request, $param) {
        foreach ($param as $k => $v) $this->prm[$k] = $v; //Дополняем параметры по умолчанию     
        $this->init($request);
    }
	
    private function init($request) {
        switch ($request['type']) { //Запускаем нужную функцию в зависимости от типа запроса
	    case 'add':    $this->add(); break;				
            case 'delete': $this->delete($request['id']); break;
        }
    }

    private function add () {
        ...
        //Берем сохраненное изображение и делаем из него несколько копий с разными размерами

        $copies = $this->prm['copiesParams']; //Кажется такое присваивание не всегда работает, если не написать выше $copies = array(). Да?
        reset($copies);

        //Оригиналы берем из папки с оригиналами, обрабатываем и сохраняем туда же
        list($original_dir, $options) = each($copies);
        Image::edit(array_merge($options, array('file_input' => $original_dir, 'file_output' => $original_dir));

        //Последующие копии делаем из оригинала и сохраняем каждую в своей папке
        while (list($file_dir, $options) = each($copies)) {
           Image::edit(array_merge($options, array('file_input' => $original_dir, 'file_output' => $file_dir));
        }
        ...
    }

    private function delete ($id) { ... }
}

/**
* Начинаем загрузку
*/
new Album($_REQUEST, array(
    'allowedType' => array('jpeg', 'jpg', 'png', 'gif'),
    'files'            => array(
            'originals/' => array(),
            'images/'  => array(
                    'width'  => 1000,
                    'height' => 1000,
                    'ext'     => 'jpeg'),
            'thumbs/' => array(
                    'width'  => 160,
                    'height' => 160,
                    'ext'     => 'png'
            ),
     );
);


Вопросы:
1. Как организовать функции по классам?
Класс Album особенно не нравится! Сложная структура. Абстрактным его не получается сделать т.к. перестанут работать приватные опции private $prm и придется таскать их по всем внутренним функциям как параметры. Как бы вы сделали?

2. Функция add(): можем ли мы гарантировать, что папка с оригиналами всегда будет задаваться первым элементом массива copies? (первым в смысле расположения его в списке параметров)
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38153245
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что, ничей опыт никому ничего не подсказывает как проектировать в подобных случаях?
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38153329
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38153841
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да накачал себе уже кучу фреймворков, смотрел их код, только так и не ответил на этот вопрос. У Симфони, кстати, самая запутанная структура папок. Может кто-нибудь на форуме лучше разобрался?
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38153848
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С чем?
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38154539
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С логикой фреймворков. Не знаю как перенести ее на мой случай. Задача описана выше. По сути, там два класса с набором методов и принимаемыми параметрами. Никаких наследований, полиморфизма и проч, думаю, не предвидеться. Собственно, каким образом это лучше описать в ПХП? В какие классы завернуть и т.п.?
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38154792
phpz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем тогда класс, если Shitbox2Никаких наследований, полиморфизма и проч, думаю, не предвидеться
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38155661
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kohana Framework от А до Я . Урок 9. Работа с изображениями.

Скачайте kohana, скачайте урок, посмотрите как там организованы классы.
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38156425
Shitbox2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А бесплатно он есть?
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38156436
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. гугл называется
...
Рейтинг: 0 / 0
Как передавать параметры в функцию/класс?
    #38156508
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shitbox2А бесплатно он есть?Есть.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как передавать параметры в функцию/класс?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]