Пытаюсь войти в MVC, тут делаю скрипт который переводит из одной системы счиления в другую с процессом решения, и заcтрял...
Хочу в контроллере проверять какая имена кнопка нажата, но как? ума не хватает.
Далее в зависимости от результата запускать определённый метод из модели.
И ещё - а у меня всё правильно?) если смотреть по правильности архитектуры MVC.
Думаю все слова которые в модели походу процесса заносить в массив, потом всё в вид, и из контроллера вызывать?
Немного хромаю со свойстами класса. Как быть с переменной из формы? Ей присваивать спецификатор доступа, или-же прямо так использовать? Как быть если нужно передать методу приватное свойство класса?
Так не катит
<?php
class Test
{
private $var;
public function($this->var)
}
?>
Сам скрипт, застрял на swicth'e
<?php
class Model
{
private $residue = array();
private $process = array();
private $count = array();
private $reply;
private $powPlusReply;
private $source;
//функция перевода из 10 системы счисления в любую другую С.С
public function of10inX($number, $base)
{
$this->source = $number;
for($i=0,$counter = 1; $number > $base; $i++,$counter++)
{
$this->reply = $number;
//делим число на новое основание и записываем остаток в массив
$this->residue[$i] = $number % $base;
//процесс решения
$this->process[$i] = "<b>$counter</b>. Делим число {$number} на основание {$base}, получаем ";
//делим число на новое основание и пишем ответ в переменную $number;
$number = $number/$base;
//округляем в целое число в меньшую сторону
$number = floor($number);
//далнейший процесс решения
$this->process[$i] .= "{$number}, остаток {$this->residue[$i]}";
//счётчик
$this->count[$i] = $i;
}
//последний ответ дополняем в массив
$this->residue[] = floor($number);
$this->count = max(array_keys($this->count)) + 2;
//пишем в процесс решения последний делитель
$this->process[] = "<b>{$this->count}</b>. Последний ответ равный $number записываем первым, а затем все остатки<br />";
//сортируем в обратном порядке
$this->residue = array_reverse($this->residue);
//выводим процеcс решения
foreach($this->process as $key => $value)
{
echo "$value\n";
}
//выводим ответ
echo "Ответ: $this->source<sub>10</sub> равно ";
foreach($this->residue as $val)
{
echo "$val";
}
echo "<sub>$base</sub>";
}
//функция для перевода из числа с основание X в десятичное число
public function ofXin10($number, $base)
{
$this->source = $number;
//сделаем число строкой для разбиения числа на цифры
$this->reply = strval($number);
//заносим каждую цифру в массив под новым индексом
for($i=0; $i<strlen($this->reply); $i++)
{
$this->residue[] = $this->reply[$i];
}
//сортируем массив в обратном порядке
$number = array_reverse($this->residue);
for($i=0; $i<max(array_keys($number)) + 1; $i++)
{
$this->reply = pow($base, $i).'<br />';
$this->powPlusReply[] = $this->reply * $number[$i];
$this->process[] = '('."$number[$i]".' * '."$base".'<sup>'."$i".'</sup>)';
}
echo "$this->source<sub>$base</sub> = ";
echo implode($this->process, " + " )." = ".array_sum($this->powPlusReply)."<sub>10</sub>";
}
}
class Controller extends Model
{
private $error = array();
function validation($number)
{
$number = $_POST['number'];
$base = $_POST['number'];
if(!$number && !is_int($number))
$this->error[] = "Вы не ввели число или введено неккоректное число" ;
if(count($this->error) == 0)
return true;
}
function select()
{
switch()
{
case $_POST['of10inX'] :
break;
case $_POST['ofXin10'] :
break;
default:
View::of10inX();
View::ofXin10();
break;
}
}
}
class View extends Controller
{
public function of10inX()
{
echo'
<table border="0" cellpadding="0" cellspacing="10">
<form action="" method="post">
<tr>
<td><i>Число </i><input type="text" name="number" /></td>
<td>
из <b>10</b>
</td>
<td>
в
</td>
<td>
<select name="base">
<option>2
<option>8
<option>16
</select>
</td>
</tr>
<tr align="center">
<td>
<input type="submit" name="of10inX" value="Вычислить" />
</td>
</tr>
</form>
</table>
';
}
public function ofXin10()
{
echo'
<table border="0" cellpadding="0" cellspacing="10">
<form action="" method="post">
<tr>
<td><i>Число </i><input type="text" name="number" /></td>
<td>
из
<select name="base">
<option>2
<option>8
<option>10
<option>16
</select>
</td>
<td>
в <b>10<b />
</td>
</tr>
<tr align="center">
<td>
<input type="submit" name="ofXin10" value="Вычислить" />
</td>
</tr>
</form>
</table>
';
}
}
?>
Делая всё больше и больше программу, осознаешь почему нужны магические методы)
Спустя 23 минуты, 47 секунд (8.02.2011 - 17:08) T1grOK написал(а):
На счет кнопки. Задаешь каждой кнопке свое имя и в контролелере проверяешь
MVC. Желательно вынести html разметку. А вообще разновидностей MVC архитектуры огромное множество, главное сама идея даного подхода.
if ($_POST['имя кнопки']){
.....
}elseif($_POST['имя кнопки']){
....
}
MVC. Желательно вынести html разметку. А вообще разновидностей MVC архитектуры огромное множество, главное сама идея даного подхода.
Спустя 4 минуты, 16 секунд (8.02.2011 - 17:12) fallow написал(а):
T1grOK
Оо спасибо:)
а как насчёт первого примера?
Оо спасибо:)
а как насчёт первого примера?
Спустя 24 минуты, 21 секунда (8.02.2011 - 17:37) T1grOK написал(а):
Если нужно передать методу приватное свойство класса. Конечно, ваш сбособ не является правильным, потому как приватные свойства могут быть использованы только в методах данного класса(объекта).
Думаю тут объяснения не требуются.
class Test
{
private $var;
private function($value){
.....
}
public function2(){
$this->function($this->var);
}
}
Думаю тут объяснения не требуются.