Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) 1 [2] 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Простенький тест на РНР
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 11 дней
Карма: 77




AllesKlar
вставлю свои 5 копеек.
А какой смысл в функции "getTset()", зачем она вообще тут нужна ?
По мне ана тут вообще лишняя, или я что-то не понимаю ? blink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (Kusss @ 1.11.2015 - 15:11)
зачем она вообще тут нужна

да не нужна она там вовсе
удобнее держать массив отдельным файлом и просто инклюжить


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Цитата (Valick @ 1.11.2015 - 14:30)
удобнее держать массив отдельным файлом и просто инклюжить

И это ТЫ мне что-то там говорил об моем коде???
Объявлять переменную в одном файле, потом его инклюдить и использовать эту же переменную в другом файле?
Хоспади... это же угораздило с пубертатным подростком сцепиться.
Ты на GOTO не фапаешь часом?
Ладно, извини, если обидел, моя вина - вступил в перепалку с подростком. Самому было 18, сам был "самым умным", как вспомню, каким идиотом был в глазах "этих тупых старперов", аж мурашки по коже. Спасибо им за их мудрость, что терпели меня.

Цитата (Kusss @ 1.11.2015 - 14:11)

AllesKlar
вставлю свои 5 копеек.
А какой смысл в функции "getTset()", зачем она вообще тут нужна ?
По мне ана тут вообще лишняя, или я что-то не понимаю ?

Значит не понимаешь.
Если писать просто на коленках скрипт для одно-двух дневного использования, то там ничего не нужно. Наговнокодили по-быстрому, оно отработало, стерли и забыли.
Если же ты делаешь проект, который подразумевает долгую жизнь, то значит рано или поздно в код либо базу будут вноситься изменения.
И чем больше стандартов / патернов / методов хорошего тона будет соблюдено, тем больше ты себе облегчишь жизнь.
Любая сущность должна быть объявлена только лишь в одном месте.
Теперь пример ТС про тест.
В нашем случае Тест - это сущность.
На данном этапе автор не умеет(не имеет возможности / не хочет / ...) работать с базой.

Можно не использовать "единую точку выхода" smile.gif
В каких местах кода нам нужно получать данные из вне?
Как минимум в трех:
1. При выводе вопросов теста.
2. При сравнении ответов.
3. В админке, при создании / редактировании тестов.

Можно во всех трех случаях отдельно обращаться к хранилищу, брать только необходимые данные
1 - только вопросы
2 - только ответы
3 - все вместе

Но вот в будущем он перейдет на базу, или будет хранить данные в файлах, а еще позже захочет изменить структуру данных теста (в базе / файлах), например, правильных ответов может быть более одного.
И полезли по всему коду искать все вхождения чтения данных из хранилища.
Или же имеем всего одну функцию (метод) getTest() которая, в случае изменения структуры / хранилища / биоритмов / половой ориентации некоторых юношей, все так же будет выдавать корректный $test и больше нигде и ничего менять не надо, кроме внутренней логики этой одной-единственной функции.

Вот как-то так.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (AllesKlar @ 1.11.2015 - 19:03)
как вспомню, каким идиотом был в глазах "этих тупых старперов"

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

AllesKlar, чем отличается объявление переменной от объявления функции или класса?


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Valick
Я тебе уже дал несколько бесплатных уроков.
До тех пор, пока ты не научишься уважать собеседника, у меня не появится желание тебе что-то объяснять.
Цитата (Valick @ 1.11.2015 - 18:13)
чем отличается объявление переменной от объявления функции или класса?

Ошибкой выбора тобой специальности.
Это был мой последний ответ тебе.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




ути пути какие мы внезапные
ты бы притормозил лошадок своих, и не заикался про уважение к собеседнику, раз у самого рыльце в пушку, перечитай внимательно эту тему (да и остальные где ты успел наследить) и посмотри кто делает "первый ход"..
еще раз объясняю тебе бестолковому недопрограммисту... логика кода без использования БД и с использованием БД на столько отличается, что нельзя тупо подставить выборку из БД (точнее говнокодеру-то можно, но ты вроде как распальцованный спешиалист, вот моё нутро и сопротивляется твоему критинизму) вместо какой-то функции, большая часть кода по обработке информации уйдёт на сторону СУРБД


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1047
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 1 день
Карма: 14




О чем вы спорите? Сейчас программирование на любом языке не имеет смысла без использования хранилищ. Исключение разве что совсем низкоуровневые языки, типа ассемблера. Ну и JS какой-нибудь под web (фронт-енд). Даже на Си уже без БД чего-то создавать - дикость!

Я бы вообще сначала обучал базам данных, а уж потом ЯП.

Что значит перепишешь код под работу с базой? Да там всё надо переписывать абсолютно. ТС только и будет заниматься что переписыванием, вместо обучения. Сначала на БД, потом на MVC, потом на шаблонизатор, потом на фреймворк, потом еще куда-нибудь... Зачем? Это плохой, непродуктивный способ обучения. Не даром ведь лабораторок в универах сильно меньше, чем лекций. Учиться надо! А уж потом лабать.


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата (Ron @ 1.11.2015 - 20:13)
Я бы вообще сначала обучал базам данных, а уж потом ЯП

поддерживаю, я много раз об этом говорил, но ктоб меня "18-ти летнего прыщавого подростка" слушал
Цитата (Ron @ 1.11.2015 - 20:13)
Да там всё надо переписывать абсолютно.

Я со второго сообщения в теме пытаюсь достучаться, но вот Баба Яга против!!!


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
[x] Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Ron
Смотрим заглавие темы:
Простенький тест на РНР
Мой первый ответ:
Цитата
Слушай Kusss, у остальных "горе от ума".


А если же слепо следовать моде и технологиям, то однажды вместо
echo "Hello World";

можно нечаяно написать
Свернутый текст

/********************************************************************
Model-View-Controller implementation according to POSA
(Pattern-Oriented Software Architecture

http://www.hillside.net/patterns/books/Siemens/book.html)
********************************************************************/

class HelloWorldController {
private $model;
function __construct($model) {
$this->model = $model;
}

function handleEvent($args) {
$this->model->setStrategy($args[2]);
$this->model->addText($args[1]);
}
}



class HelloWorldModel {
private $text;
private $observers = array();
private $strategy;

function attach($observer) {
$this->observers[] = $observer;
}

function getData() {
$facade = new HelloWorldFacade($this->strategy);
return $facade->getHelloWorld().$this->text."
"
;
}

function addText($text='') {
$this->text = $text;
$this->notify();
}

function setStrategy($strategy) {
$this->strategy = $strategy;
}

function notify() {
foreach ($this->observers as $observer) {
$observer->update();
}
}
}


class HelloWorldView {
private $model;

function initialize($model) {
$this->model = $model;
$model->attach($this);
return $this->makeController();
}

function makeController() {
return new HelloWorldController($this->model);
}

function update() {
$this->display();
}

function display() {
echo $this->model->getData();
}
}



/*********************************************************************
"Business logic"
********************************************************************/


class HelloWorld {
function execute() {
return "Hello world";
}
}


class HelloWorldDecorator {
private $helloworld;
function __construct($helloworld) {
$this->helloworld = $helloworld;
}

function execute() {
return $this->helloworld->execute();
}
}


abstract class HelloWorldEmphasisStrategy {
abstract function emphasize($string);
}

class HelloWorldBangEmphasisStrategy extends HelloWorldEmphasisStrategy {
function emphasize($string) {
return $string."!";
}
}


class HelloWorldRepetitionEmphasisStrategy extends HelloWorldEmphasisStrategy {
function emphasize($string) {
return $string." and ".$string." again";
}
}


class HelloWorldEmphasizer extends HelloWorldDecorator {
private $strategy;
function HelloWorldEmphasizer($helloworld,$strategy) {
$this->strategy = $strategy;
parent::__construct($helloworld);
}

function execute() {
$string = parent::execute();
return $this->strategy->emphasize($string);
}
}


class HelloWorldStrategyFactory {
static function make($type) {
if ($type == 'repetition') return self::makeRepetitionStrategy();
return self::makeBangStrategy();
}

static function makeBangStrategy() {
return new HelloWorldBangEmphasisStrategy;
}
static function makeRepetitionStrategy() {
return new HelloWorldRepetitionEmphasisStrategy;
}
}


class HelloWorldFormatter extends HelloWorldDecorator {
function execute() {
$string = parent::execute();
return $string."
"
;
}
}


class HelloWorldFacade {
private $strategy;
function __construct($strategyType) {
$this->strategy = HelloWorldStrategyFactory::make($strategyType);
}

function getHelloWorld() {
$formatter = new HelloWorldFormatter(
new HelloWorldEmphasizer(
new HelloWorld,$this->strategy));
return $formatter->execute();
}
}


$model = new HelloWorldModel;
$view = new HelloWorldView;
$controller = $view->initialize($model);
$controller->handleEvent($_SERVER['argv']);



--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1047
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 1 день
Карма: 14




Цитата (AllesKlar @ 1.11.2015 - 21:41)
Смотрим заглавие темы:

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

Но мы создаем простенький тест. Пусть там будут только убогие радиобаттоны. Но простенький !== убогий по реализации.

Не хочется изучать СуБД, ну так пусть перепечатывает примеры из книги по PHP. Все-равно ничего более толкового без хранилища не создать. Или ему не для обучения? Ну пусть заплатит тысячу рублей, я ему такое говнище бестолковое на SQLite набрыляю за час. Даже разворачивать не надо будет, просто скопировать. По крайней мере никто не покраснеет от стыда за ТС, открыв код.

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


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3377
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 13 дней
Карма: 170




Всё, пацаны, я понял.
Вот ваши сигареты, вот мои сигареты, вот моя куртка, вот мои кросовки.
Можно я домой пойду? Семечки возле лавки я подмету утром, не переживайте, только машину не жгите.



--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1047
Пользователь №: 41686
На форуме: 1 год, 4 месяца, 1 день
Карма: 14




Цитата (AllesKlar @ 1.11.2015 - 22:07)
Всё, пацаны, я понял.
Вот ваши сигареты, вот мои сигареты, вот моя куртка, вот мои кросовки.
Можно я домой пойду? Семечки возле лавки я подмету утром, не переживайте, только машину не жгите.

Ай, беда-беда...


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6065
Пользователь №: 18498
На форуме: 7 лет, 4 месяца, 13 дней
Карма: 256




Цитата (AllesKlar @ 1.11.2015 - 18:03)
Цитата (Valick @ 1.11.2015 - 14:30)
удобнее держать массив отдельным файлом и просто инклюжить

И это ТЫ мне что-то там говорил об моем коде???
Объявлять переменную в одном файле, потом его инклюдить и использовать эту же переменную в другом файле?
Хоспади... это же угораздило с пубертатным подростком сцепиться.

Не нужна там переменная. wink.gif Valick все правильно говорит, просто это ты не знаешь что в переменную можно получить значение из файла(http://php.net/manual/en/function.include.php#example-157).

Массив php с тестом, хранящийся в файле, функция обрабатывающая этот массив и будет ТС-у желаемое, задача простая, как раз новичку потренироваться.


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zgd  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 14
Пользователь №: 41810
На форуме: 1 год, 3 месяца
Карма:




Да ладно вам, не ругайтесь. Сделал на JS... никакая MySQL Не понадобилась...
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




zgd, почему ты так боишься MySQL?



--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) 1 [2] 3  Ответ в темуСоздание новой темыСоздание опроса