2012-05-21 3 views
0

Вот ситуация, когда я передаю объект через несколько php-функций. Я ищу лучшую производительность, поэтому мне было интересно, сериализует хороший способ сделать это или сериализация не нужна?Передача объекта из функции в другую функцию

+1

Во-первых, это не достаточно информации здесь этот вопрос, чтобы получить полностью учтены полезный ответ. Во-вторых, я был бы очень удивлен, если бы сериализация была хорошей идеей здесь. Вы добавляете бессмысленные накладные расходы. – DaveRandom

+2

Зачем вам нужно сериализовать объект, чтобы передать его из одной функции в другую? Можете ли вы показать пример того, что вы делаете? – David

+0

Пожалуйста, покажите, что вы пробовали ?? –

ответ

1

Если вы передаете объект через несколько «функций», то вам не нужно сериализация - это будет в памяти в PHP парсер и сериализация будет просто пустая трата времени.

Если вам нужно передать значение с одной страницы сценария другому, то сериализация является опцией, так как переменные в первом скрипте будут недоступны во втором скрипте.

Большую часть времени вам не нужно это делать - что именно вы пытаетесь сделать?

+0

. Хороший вопрос о несколько страниц. –

+0

Tnx этот ответ дает мне все ясно. – DownDown

0

Сериализация - одна из худших вещей, которые вы можете сделать. Объекты в php 5 передаются по ссылке, и таким образом объем данных, передаваемых между функциями, минимален (только указатель, который является целым числом).

+0

Кроме того, если вы несериализуете объект внутри вызываемой функции, это будет не исходный объект, а клоун, поэтому любые изменения, внесенные в этот объект внутри функции, будут выполняться с клоном, а не с исходным экземпляром. –

1

Просто сдайте объект. Сериализации не требуется.

function foo() { 
    return new Foo; 
} 

function bar($obj) { 
    return $obj; 
} 

function baz($obj) { 
    $obj->foo(); 
} 

baz(bar(foo())); 
0

Я считаю, что нет никаких проблем передачи объектов вокруг, как это:

$obj=new myclass; 
$result=mufunk($obj); 

function myfunk($myfobj) 
    { 
    $myreturn=new anotherclass; 
    return $myreturn; 
    }