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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Классы...

Сообщения:  [1-8] 

 
 автор: BobiKK   (29.07.2006 в 20:53)   письмо автору
 
   для: null   (29.07.2006 в 20:46)
 

А почему бы по-простому через наследование не сделать?

   
 
 автор: null   (29.07.2006 в 20:46)
 
   для: Holsten Bier   (29.07.2006 в 19:58)
 

Большое спасибо за помощь...

   
 
 автор: Holsten Bier   (29.07.2006 в 19:58)   письмо автору
 
   для: null   (29.07.2006 в 19:27)
 

1.
Классу Test нужно добавить метод возвращающий ссылку на объект.

<?
...

function &
get_ref() {
  return 
$this;
}


А получаемую при помощи этого метода ссылку передавать конструктору класса Test2. (так же как и в случае с полем string)


<?
...
$this->load = new test2($this->get_ref());
...
?>

Гавное класс test2 должен иметь поле для хранения этой ссылки.

По поводу второго вопроса (оправдан ли такой способ): особых недостатков в нем не вижу. Такой способ вполне оправдан, если из класса Main нужно получить доступ к полям класса, в котором создается объект класса Main.

   
 
 автор: null   (29.07.2006 в 19:27)
 
   для: Holsten Bier   (29.07.2006 в 18:49)
 

Спасибо, то что нужно. Появилось еще 2 вопроса:
1. А если нужно сделать доступным метод класса Test для класса Test2 при этом не используя наследование?
2. Есть класс, хотя скорее своеобразная "библиотека" с переменными и функциями. Для доступа к ним в каждом классе, который в этом нуждается, я использую:

$this->main = new Main();

Насколько целесообразно использование данного решения с точки зрения быстродействия?

   
 
 автор: Holsten Bier   (29.07.2006 в 18:49)   письмо автору
 
   для: Holsten Bier   (29.07.2006 в 18:46)
 

Следующий код демонстрирует работу ссылок. Здесь объект test2 менет значение поля string объекта test.

<?php

class test 
        var 
$string
        var 
$load

        function 
test() { 
                
$this->string "Hello World!"
                
$this->load = new test2($this->get_string()); 
                echo 
$this->string;
        }
    function &
get_string() {
        return 
$this->string;
    }


class 
test2 
        var 
$cont
        var 
$testString;

        function 
test2(&$aString
        { 
                
$this->testString =& $aString;
                print 
$this->testString
                
$this->testString "Good Bye World!";
        } 


$view = new test(); 
?>

   
 
 автор: Holsten Bier   (29.07.2006 в 18:46)   письмо автору
 
   для: null   (29.07.2006 в 18:19)
 

Функция get_string() возвращает ссылку на поле string класса Test.
Поле $testString класса Test2 хранит ссылку на поле $string объекта класса Test.

Можно сделать и несколько иначе но общий принцип заключается в передаче объекту класса Test2 ссылки на поле $string объекта класса Test.

   
 
 автор: Holsten Bier   (29.07.2006 в 18:41)   письмо автору
 
   для: null   (29.07.2006 в 18:19)
 

Я использовал оператор взятия ссылки и все сработало.
У меня вывелось Hello World! Я так понимаю нужен именно такой результат.


<?php

class test 
        var 
$string
        var 
$load

        function 
test() { 
                
$this->string "Hello World!"
                
$this->load = new test2($this->get_string()); 
        }
    function &
get_string() {
        return 
$this->string;
    }


class 
test2 
        var 
$cont
        var 
$testString;

        function 
test2(&$aString
        { 
                
$this->testString =& $aString;
                print 
$this->testString
        } 


$view = new test();
?>

   
 
 автор: null   (29.07.2006 в 18:19)
 
 

Есть конструкция:
class test {
        var $string;
        var $load;

        function test() {
                $this->string = "Hello World!";
                $this->load = new test2();
        }
}

class test2 {
        var $cont;

        function test2()
        {
                print $this->string;
        }
}

$view = new test();

Вопрос: как сделать доступным для класса test2 обьект string класса test?

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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