|
|
|
|
|
для: OLi
(24.12.2011 в 15:36)
| | >Стопор в том, что не могу все эти методы правильно задействовать - последовательно.
Вы исключительно точно описали свою ошибку. Последовательно задействуются функции процедурного языка. В ООП у вас не должно быть привязки к последовательным действиям, так как модель событийная, ваш класс должен работать таким образом, чтобы перестановка методов не была фатальна, если один метод требует, чтобы он был вызван раньше другого - переделывайте структуру, объединяйте методы, думайте. В любом случае это не ООП и пользы от этого нет - только вред. ООП требует больше кода, и если вы не пользуетесь его преимуществами, вы просто программу переписываете более длинным способом без выгоды для себя. | |
|
|
|
|
|
|
| Доброго. Пытаюсь обычный стиль программирования подвести к ООП
_______________________
У меня возникло много вопросов по поводу организации логики взаимодействия методов в класс и их последовательного вывода.
________________________
<?
include_once 'rs.php';// Класс рисайза картинок
class show_bitva {
var $date_create;
var $balls_bitva;
var $count_bitva;
var $name_bitva;
var $name_partner;
function __construct() {
session_start();
}
function check_input_bitva () {
$fields=array('question','name_l','name_r','category','image');
foreach ($_POST as $key=>$id) {
echo $this->$key;
if (in_array($key,$fields)) {
if (!empty($id)&& strlen($id)>3) {
if (!is_array($_SESSION['bitvi'])) {
$_SESSION['bitvi'] = array();
}
$_SESSION['bitvi'][]=$id;
}else {
$error[]=$key;
}
}
}
return $error;
}
public function print_error() {
foreach ($error as $key) {
echo $this->$key;
}
}
/*function load_image() {
$size=1024*2*1024;
$count=4;
$path="bitvi_images/";
$path_min="bitvi_images/min/";
$error_file=array();
$valid_extensions = array(1 => 'gif', 2 => 'jpg',
3 => 'png', 4 => 'PNG',
5 => 'JPG', 6 => 'JPEG',
7 => 'gif', 8 => 'GIF'
);
function getExtension4($filename) {
return substr(strrchr($filename, '.'), 1);
}
if (count($_FILES['photo_car'])>0 && count($_FILES['photo_car']<=$count)) {
for ($i=0; $i<count($_FILES['photo_car']['name']); $i++)
{
if (!empty($_FILES['photo_car']['name'][$i])) {
if($_FILES["photo_car"]["size"][$i] > $size)
{
$error_file[]='Превышен размер файла';
}
if (!in_array(getExtension4($_FILES["photo_car"]["name"][$i]), $valid_extensions))
{
$error_file[]='Неправильно расширение файла';
}
if($_FILES['photo_car']['error'][$i] == 0)
{
if(is_uploaded_file($_FILES['photo_car']['tmp_name'][$i]))
{
$name.=$_FILES["photo_car"]["name"][$i].',';
move_uploaded_file($_FILES['photo_car']['tmp_name'][$i], $path.$_FILES["photo_car"]["name"][$i]);
$image = new SimpleImage();
$image->load($path.$_FILES["photo_car"]["name"][$i]);
$image->resizeToWidth(166);
$image->save($path_min.$_FILES["photo_car"]["name"][$i]);
} else {
$error_file[]='Ошибка загрузки файла №'.$i;
}
}
}
}
} else {$error_file[]='Загрузите хотя бы 1 изображение!';}
return $error_file;
}
*/
//function input_base_bitva() {}
}
if (isset($_POST['create_bitva'])){
$bitva = new show_bitva();
$bitva->check_input_bitva();
$bitva->load_image();
$bitva->print_error();
}
?>
<form action="#" method="post">
<input type="text" name="question"/>
<input type="text" name="name_l"/>
<input type="text" name="name_r"/>
<input type="file" name="image[]"/>
<input type="submit" name="create_bitva" value="Создать битву"/>
</form>
|
В моем случае создается класс, в котором:
1) Хочу проверить данные от $_POST, если они корректны (не пустые), то вызвать следующий метод - метод загрузки фото, а если возникает ошибка, то ее вывести $error.
Вопрос в том, правильна ли моя логика построение текущего кода?
Не могу понять как быть, если возникла ошибка - вызывать метод print_error() когда и где? И когда и как вызывать метод загрузки фото?
________
Стопор в том, что не могу все эти методы правильно задействовать - последовательно.
Буду рад вашим разъяснениям и примерам.
Спасибо | |
|
|
|
|