Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов метода в методе ...
 
 автор: Виктор-тот   (15.07.2007 в 05:42)   письмо автору
 
 

Вопрос в следующим:
есть родительский класс Class_form_elements для классов text и form
А мне нужно в классе form в методе display() вызвать метод display() класса text.
eсли создан объект класса text.
Т.е. в методе форм выводятся теги <form > и </form >
а между ними нужно вывести метод display() класса text.
eсли создан объект класса text.
Можно конечно создать для класса form два метода display_1() и display_2()
а между двумя методами уже вызвать метод display() класса text.
Но это будет не очень красиво :(
Может есть более элегантный способ проверки входящих параметров, нежели применил я:

<?php
if (isset($this->style))            {echo ' style="'.$this->style.'"';} 
?> 

можно в принципе не проверять а выводить пустыми но это опять же лишний html-код.
Да и потом появиться такая задача где нужно будет вообще не выводить параметры если они не заданы.


<?php
$form
=new form();
$text=new text();
$text->value3;
$text->name"name";
$form->display();
?>


вместо


<?php
$form
=new form();
$form->display_1();
$text=new text();
$text->value3;
$text->name"name";
$text->display();
$form->display_2();
?>




реализация классов :

<?php
// Класс Form_elements
 
class Class_form_elements
{
    
// Члены класса Form_elements
    
var $style;
    var 
$class ;
    var 
$lang;
    var 
$name;
    var 
$id;
    var 
$accesskey;
    var 
$tabindex;
    var 
$dir;
    var 
$title;    
    
// метод display
    
function display()    
    {
        if (isset(
$this->style))            {echo ' style="'.$this->style.'"';}  
        if (isset(
$this->class))            {echo ' class="'.$this->class.'"';}      
        if (isset(
$this->lang))            {echo ' lang="'.$this->lang.'"';}      
        if (isset(
$this->name))            {echo ' name="'.$this->name.'"';}      
        if (isset(
$this->id))                {echo ' id="'.$this->id.'"';}    
        if (isset(
$this->accesskey))        {echo ' accesskey="'.$this->accesskey.'"';}  
        if (isset(
$this->tabindex))        {echo ' tabindex="'.$this->tabindex.'"';}      
        if (isset(
$this->dir))            {echo ' dir="'.$this->dir.'"';}      
        if (isset(
$this->title))            {echo ' title="'.$this->title.'" ';}          
    }
    
}

class 
text extends Class_form_elements
{    
    var 
$value;
    var 
$align;
    var 
$size ;
    var 
$maxlength;
    var 
$readonly ;    
    function 
display()    
    {
        echo 
'<input type="text"';
        
Class_form_elements :: display();
        if (isset(
$this->value))        {echo ' value="'.$this->value.'"';}  
        if (isset(
$this->align))        {echo ' align="'.$this->align.'"';}      
        if (isset(
$this->size))        {echo ' size="'.$this->size.'"';}      
        if (isset(
$this->maxlength))    {echo ' maxlength="'.$this->maxlength.'" ';}      
        if (isset(
$this->readonly))    {echo ' readonly="'.$this->readonly.'" ';}
        echo 
' />';          
    }    
}


class 
form extends Class_form_elements
{
    var 
$action;
    var 
$method="POST";
    var 
$target;
    var 
$enctype;
    function 
display()    
    {
        echo 
'<form ';    
        
Class_form_elements :: display();
        if (isset(
$this->action))        {echo ' action="'.$this->action.'"';}  
        if (isset(
$this->method))        {echo ' method="'.$this->method.'"';}      
        if (isset(
$this->target))        {echo ' target="'.$this->target.'"';}      
        if (isset(
$this->enctype))        {echo ' enctype="'.$this->enctype.'"';} 
        echo 
' >';     
        
text :: display();
        echo 
'</form>';
    }
}
?>


тут наверно нужно применить абстрактные методы или интерфейсы, я пока что то не въехал ...

   
 
 автор: bronenos   (15.07.2007 в 08:58)   письмо автору
 
   для: Виктор-тот   (15.07.2007 в 05:42)
 

global $text;
$text->display();

   
 
 автор: Виктор-тот   (15.07.2007 в 09:25)   письмо автору
 
   для: bronenos   (15.07.2007 в 08:58)
 

<?php
$form=new form();
$text=new text();
$text->value= 3;
$text->name= "name";
$form->display();
?>
мне без $text->display(); надо
что бы все поля и саму форму вывести одним методом $form->display();

Тобишь метод с данными из одного объекта должны попасть в другой метод.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования