Официальный сайт студ.городка НГТУ
Программирование и БД » [php] ООП и ещё по мелочи 

#1  14.03.08 22:00

[php] ООП и ещё по мелочи

Привет всем.
Очередной список вопросов :)
1. Как из функции вернуть ССЫЛКУ на переменную, типа как в си
2. как из объекта получить его имя
тоесть

$allah = new Tallah();
И что бы в классе Tallah была какая-то фунция которая могла вернуть allah слово или опять же ссылку на объект $allah

Так.. что-то ещё хотел узнать.
Забыл )

Offline

#2  14.03.08 22:47

Re: [php] ООП и ещё по мелочи

Код: php:

class Shit
{
  function &Shit()
  {
    $var = get_class($this);
    return $var;
  }
}
 
$some =& new Shit();


в $some получишь ссылку на $var;
$var == 'Shit';

Offline

#3  14.03.08 22:58

Re: [php] ООП и ещё по мелочи

XuMiX, благодарю

только не понял зачем перед названием функции указали & ?
И как вернётся адрес на var если var это локальная переменная в функции? )

Вот я сейчас делал примерно такое
НО работает не так как надо

Код: php:

<?
$blablah = '123123';
 
function &ahaha(){
	global $blahblah;
 
	return $blahblah;
}
 
$uhuhu = &ahaha();
 
$uhuhu = 123;
 
echo $blablah;
 
?>

Хочется чтобы на выходе было не 123123, а 123
Что в этом коде можно изменить?

Исправлено Anonimizer_me (14.03.08 23:04)

Offline

#4  14.03.08 23:24

Re: [php] ООП и ещё по мелочи

Anonimizer_me написал(а):

только не понял зачем перед названием функции указали & ?

как раз для того, чтобы вернуть ссылку, а не копию
по твоему случаю - даже хз, щас голова не соображает

Offline

#5  14.03.08 23:31

Re: [php] ООП и ещё по мелочи

XuMiX, ок

Offline

#6  15.03.08 00:19

Maq
Профиль

Re: [php] ООП и ещё по мелочи

В теории:
Returning References
Returning by-reference is useful when you want to use a function to find which variable a reference should be bound to. When returning references, use this syntax:


<?php
function &find_var ($param)
{
    /* ...code... */
    return $found_var;
}

$foo =& find_var ($bar);
$foo->x = 2;
?>

In this example, the property of the object returned by the find_var function would be set, not the copy, as it would be without using reference syntax.

Замечание: Unlike parameter passing, here you have to use & in both places - to indicate that you return by-reference, not a copy as usual, and to indicate that reference binding, rather than usual assignment, should be done for $foo.

Offline

#7  15.03.08 03:59

Re: [php] ООП и ещё по мелочи

XuMiX, в пхп 5 и так вернётся, а вот то что ты указал, ещё и варнинг вернёт:)

Offline

#8  15.03.08 11:27

Re: [php] ООП и ещё по мелочи

Antony, :) у мну есть оправдание: факир был пьян:)

Offline

#9  18.03.08 22:30

Re: [php] ООП и ещё по мелочи

А можно ли получить имя объекта из класса
Тоесть типа так

class foo{
  function getNameObject(){
return что-то
}
}

$blabla = new foo();

$str = $blabla->getNameObject();

// $str = 'blabla';

вот так

Offline

#10  19.03.08 18:50

Re: [php] ООП и ещё по мелочи

return __CLASS__
;)

Offline

#11  19.03.08 19:10

Re: [php] ООП и ещё по мелочи

A-Lex написал(а):

return __CLASS__
;)

Это вернётся имя класса.
Мне надо имя объекта получить

Offline

#12  19.03.08 19:18

Re: [php] ООП и ещё по мелочи

Anonimizer_me, get_object($obj)

Offline

#13  19.03.08 19:22

Re: [php] ООП и ещё по мелочи

XuMiX, да суть в том что мне надо получить имя из класса
Класс то не знает какой объект ему принадлежащий выполняет метод в данный момент
Тоесть мне из метода класса надо получить имя объекта

Offline

#14  19.03.08 20:52

Re: [php] ООП и ещё по мелочи

Anonimizer_me, а нафига тебе это, вообще?

Offline

#15  19.03.08 21:01

Re: [php] ООП и ещё по мелочи

XuMiX, ну короче смотри
сделал систему меток
тоесть типа как в Delphi или Си label:
тот тут так
$WLS_Label->label('имя метки');

Вот.. вызываются все фунции со списка, который создаётся так

$WLS->Label->addFunctionToLabel('имя метки', createfunction(тра та та))

Так вот
Поддерживаются плагины
Плагин это просто файл с классом
Для всех этих классов доступна система меток
Надо чтобы из класса, к примеру при __construct() уже добавлялась функция на метку, которая в движке где-то. К примеру в конце кода метка 'getStat' которая запускает функции ведения статистики

Так вот
Из класса в том же конструкт можно было б сделать так
$WLS->Label->addFunctionToLabel('имя метки', createfunction(array(&$ojbect, tratat()), $param))

НО! Я не могу получить $Object. Если бы в $object было бы имя объекта то можно было бы сделать так &$$object
Вот

писать $this смысла нет. Не работает так

Offline

Программирование и БД » [php] ООП и ещё по мелочи 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.307 сек.
Выполнено 14 запросов.