Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как передавать параметры в функцию/класс? / 11 сообщений из 11, страница 1 из 1
13.02.2013, 09:28
    #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
15.02.2013, 17:32
    #38153245
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
И что, ничей опыт никому ничего не подсказывает как проектировать в подобных случаях?
...
Рейтинг: 0 / 0
15.02.2013, 18:13
    #38153329
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
...
Рейтинг: 0 / 0
16.02.2013, 09:39
    #38153841
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
Да накачал себе уже кучу фреймворков, смотрел их код, только так и не ответил на этот вопрос. У Симфони, кстати, самая запутанная структура папок. Может кто-нибудь на форуме лучше разобрался?
...
Рейтинг: 0 / 0
16.02.2013, 10:08
    #38153848
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
С чем?
...
Рейтинг: 0 / 0
17.02.2013, 13:35
    #38154539
Shitbox2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
С логикой фреймворков. Не знаю как перенести ее на мой случай. Задача описана выше. По сути, там два класса с набором методов и принимаемыми параметрами. Никаких наследований, полиморфизма и проч, думаю, не предвидеться. Собственно, каким образом это лучше описать в ПХП? В какие классы завернуть и т.п.?
...
Рейтинг: 0 / 0
17.02.2013, 19:27
    #38154792
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
Зачем тогда класс, если Shitbox2Никаких наследований, полиморфизма и проч, думаю, не предвидеться
...
Рейтинг: 0 / 0
18.02.2013, 14:21
    #38155661
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как передавать параметры в функцию/класс?
Kohana Framework от А до Я . Урок 9. Работа с изображениями.

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


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