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

Форум PHP

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

 

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

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

тема: Как использовать классы в классах.
 
 автор: MadMaxxx   (21.01.2005 в 09:55)   письмо автору
 
 

у меня код следующий
<?php
class MyMenu
{
 var 
$usermsg;
 var 
$mymenu;
 var 
$DBname="testShop";
 var 
$MyTB="my_tbs";
 var 
$myconst="1104867583";


 function 
my_menu()
 {....



<?php
include('mymenu.php');
include(
'myshop.php');
class 
shoping
{
 
 var 
$m;
 var 
$s;
 
 function 
shoping()
 {
  
$m=new MyMenu;
  
$s=new MyShop;
 }

 function 
vibor($a,$b)
 {
  
$this->m->my_menu();
  
$this->m->user_in();
 .....


<?php
include('shoping.php');

$s=new shoping();
if ((isset(
$a)) && (isset($b)))
{
 
$s->vibor($a,$b);
}
else
{
 
$s->vibor(0,0);
}
......


Выдает ошибку:
Fatal error: Call to a member function on a non-object in shoping.php on line 18
т.е. в строчке:
$this->m->my_menu();


Я наверно как-то нетак классами пользуюсь. Подскажите что я нетак делаю.

   
 
 автор: cheops   (21.01.2005 в 12:45)   письмо автору
 
   для: MadMaxxx   (21.01.2005 в 09:55)
 

Дело в том, что в калссе $m и $this->m это разные переменные. Поэтому строки
<?php
  $m
=new MyMenu
  
$s=new MyShop;
?>

следует переписать следующим образом
<?php
  $this
->= new MyMenu
  
$this->= new MyShop;
?>

   
 
 автор: MadMaxxx   (23.01.2005 в 08:14)   письмо автору
 
   для: cheops   (21.01.2005 в 12:45)
 

Ой, точно, вот это лоханулся :-)
У меня ещё вопрос, почему так выводить не хочет:

<?
...
echo 
"$this->s->mymsg";
....

а так выводит:
в первом классе:

function show()
{
echo "$this->mymsg";
}

а во втором:

$this->s->show();

   
 
 автор: cheops   (23.01.2005 в 12:54)   письмо автору
 
   для: MadMaxxx   (23.01.2005 в 08:14)
 

Такие сложные конструкции всё-таки лучше заключать в фигурные скобки или соеденять точками
<?php
echo "{$this->s->mymsg}"
echo 
"  ".$this->s->mymsg."  "
?>

   
Rambler's Top100
вверх

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