[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Простенький тест на РНР
Страницы: 1, 2, 3
Kusss
AllesKlar
вставлю свои 5 копеек.
А какой смысл в функции "getTset()", зачем она вообще тут нужна ?
По мне ана тут вообще лишняя, или я что-то не понимаю ? blink.gif
Valick
Цитата (Kusss @ 1.11.2015 - 15:11)
зачем она вообще тут нужна

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

_____________
Стимулятор ~yoomoney - 41001303250491
AllesKlar
Цитата (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 и больше нигде и ничего менять не надо, кроме внутренней логики этой одной-единственной функции.

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

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

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

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


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

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


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

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

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

Что значит перепишешь код под работу с базой? Да там всё надо переписывать абсолютно. ТС только и будет заниматься что переписыванием, вместо обучения. Сначала на БД, потом на MVC, потом на шаблонизатор, потом на фреймворк, потом еще куда-нибудь... Зачем? Это плохой, непродуктивный способ обучения. Не даром ведь лабораторок в универах сильно меньше, чем лекций. Учиться надо! А уж потом лабать.
Valick
Цитата (Ron @ 1.11.2015 - 20:13)
Я бы вообще сначала обучал базам данных, а уж потом ЯП

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

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

_____________
Стимулятор ~yoomoney - 41001303250491
AllesKlar
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']);



_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.