Return class object php

PHP, return class as object

What you are looking for is called fluent interface. You can implement it by making your class methods return themselves:, What verb is used for scattering the smoke/smell off of you with waving of the hands? ,Its rather simple really, you have a series of mutator methods that all returns the original (or other) objects, that way you can keep calling functions.,Asking for help, clarification, or responding to other answers.

What you are looking for is called fluent interface. You can implement it by making your class methods return themselves:

Answer by Elisa Grant

If the object is an instance of a class which exists in a namespace, the qualified namespaced name of that class is returned. , If object is omitted when inside a class, the name of that class is returned. , Returns the name of the class of which object is an instance. Returns false if object is not an object. ,get_class — Returns the name of the class of an object

Its name is foo My name is foo 

Answer by Ernesto Booth

Classes are nothing without objects! We can create multiple objects from a class. Each object has all the properties and methods defined in the class, but they will have different property values.,Note: In a class, variables are called properties and functions are called methods!,A class is a template for objects, and an object is an instance of class.,2. Outside the class (by directly changing the property value):

Читайте также:  Номера символов в питоне

Define a Class

A class is defined by using the class keyword, followed by the name of the class and a pair of curly braces (<>). All its properties and methods go inside the braces:

Answer by Robin Roman

Here, we will demonstrate how we can return an object of a class from the function., Here, we are going to demonstrate the function returning object in PHP. Submitted by Nidhi, on November 21, 2020 ,The source code to demonstrate the function returning object is given below. The given program is compiled and executed successfully.,At last, we created the two objects and passed the object into AddObj() function and then assigned the returned object to the $Obj3 after that called the Display() method that will print the value of data members on the webpage.

The source code to demonstrate the function returning object is given below. The given program is compiled and executed successfully.

Num = $n; > function Display() < echo "Num: " . $this->Num; > > function AddObj($obj1, $obj2) < $temp = new Number(0); $temp->Num = $obj1->Num + $obj2->Num; return $temp; > $Obj1 = new Number(10); $Obj2 = new Number(20); $Obj3 = AddObj($Obj1, $Obj2); $Obj3->Display(); ?> 

Answer by Lorenzo McClain

get_class — Returns the name of the class of an object, If object is omitted when inside a class, the name of that class is returned. ,get_parent_class() — Retrieves the parent class name for object or class,get_called_class() — the «Late Static Binding» class name

Its name is foo My name is foo 

Answer by Beckham Owens

PHP 8.0 allows static as a return type for class methods.,PHP class methods can return self and parent in previous versions, but static was not allowed in PHP versions prior to 8.0. The newly allowed static return type allows to narrow down the return type to the called class.,Only class methods can declare static return type. Standard functions or closures are not allowed to declare static return type.,It is possible for a child class to return static, even if the parent methods return type is self, or parent.

PHP 8.0 allows static as a return type for class methods.

With PHP 8.0’s static return type support, it is now possible to replace DocBlock @return static statements with a return type declaration.

Excessive inheritance chains are almost always a bad idea, and leads to unmanageable code. The snippet below is just for demonstration.

class Foo < public function getInstance(): mixed <>> class Bar extends Foo < public function getInstance(): object|null <>> class Baz extends Bar < public function getInstance(): object <>> class Qux extends Baz < public function getInstance(): parent <>> class Quux extends Qux < public function getInstance(): self <>> class Corge extends Quux < public function getInstance(): static <>>

Attempting to «widen» the return type scope with self , parent , or any other return type will cause error:

class Corge < public function getInstance(): static <>> class Grault extends Corge < public function getInstance(): parent <>>
class Corge < public function getInstance(): static <>> class Grault extends Corge < public function getInstance(): parent <>>
Fatal error: Declaration of Grault::getInstance(): Corge must be compatible with Corge::getInstance(): static in . on line . 

Only class methods can declare static return type. Standard functions or closures are not allowed to declare static return type.

function get_instance(): static <>
function get_instance(): static <>
Fatal error: Cannot use "static" when no class scope is active in . on line . 

Code with static return type will not be backwards-compatible with older PHP versions prior to 8.0. Doing so will result in a parse error:

Parse error: syntax error, unexpected 'static' (T_STATIC) in . on line . 

Answer by Anderson Taylor

The get_class() function is an inbuilt function in PHP which is used to return the class name of an object.,Return Value: This function returns the class name of which object is an instance. It returns FALSE if the object is not an object. If the object is omitted when inside the class then the class name is returned.,Parameters: This function accepts single parameter $object which holds the object that need to be tested. The value of this parameter can be omitted inside the class.,Below programs illustrate the get_class() function in PHP:

string get_class( object $object )

Answer by Isabel Foley

The get_class() function returns the name of the class of an object. It returns FALSE if object is not an object. If object is excluded when inside a class, the name of that class is returned.,The get_class() function gets the name of the class of an object. It returns FALSE if object is not an object. If object is excluded when inside a class, the name of that class is returned.,$object::class in PHP 8 and get_class($object) in PHP,object − The tested object. You can avoid this parameter inside the cass.

Syntax

 function name() < echo "Internal call: " , get_class($this) , "\n"; >> // create an object $two = new Demo(); // external call echo "External call: " , get_class($two) , "\n"; // internal call $two->name(); ?>

Output

External call: Demo Internal call: Demo

Источник

Return class object php

Значения возвращаются при помощи необязательного оператора возврата. Возвращаемые значения могут быть любого типа, в том числе это могут быть массивы и объекты. Возврат приводит к завершению выполнения функции и передаче управления обратно к той строке кода, в которой данная функция была вызвана. Для получения более детальной информации ознакомьтесь с описанием return .

Замечание:

Если конструкция return не указана, то функция вернёт значение null .

Использование выражения return

Пример #1 Использование конструкции return

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

Пример #2 Возврат нескольких значений в виде массива

function small_numbers ()
return [ 0 , 1 , 2 ];
>
// Деструктуризация массива будет собирать каждый элемент массива индивидуально
[ $zero , $one , $two ] = small_numbers ();

// До версии 7.1.0 единственной эквивалентной альтернативой было использование конструкции list().
list( $zero , $one , $two ) = small_numbers ();

Для того, чтобы функция возвращала результат по ссылке, вам необходимо использовать оператор & и при описании функции, и при присвоении переменной возвращаемого значения:

Пример #3 Возврат результата по ссылке

Для получения более детальной информации о ссылках обратитесь к разделу документации Подробно о ссылках.

User Contributed Notes 10 notes

PHP 7.1 allows for void and null return types by preceding the type declaration with a ? — (e.g. function canReturnNullorString(): ?string)

However resource is not allowed as a return type:

function fileOpen ( string $fileName , string $mode ): resource
$handle = fopen ( $fileName , $mode );
if ( $handle !== false )
return $handle ;
>
>

$resourceHandle = fileOpen ( «myfile.txt» , «r» );
?>

Errors with:
Fatal error: Uncaught TypeError: Return value of fileOpen() must be an instance of resource, resource returned.

Developers with a C background may expect pass by reference semantics for arrays. It may be surprising that pass by value is used for arrays just like scalars. Objects are implicitly passed by reference.

# (1) Objects are always passed by reference and returned by reference

function obj_inc_x ( $obj ) $obj -> x ++;
return $obj ;
>

$obj2 = obj_inc_x ( $obj );
obj_inc_x ( $obj2 );

print $obj -> x . ‘, ‘ . $obj2 -> x . «\n» ;

# (2) Scalars are not passed by reference or returned as such

function scalar_inc_x ( $x ) $x ++;
return $x ;
>

$x2 = scalar_inc_x ( $x );
scalar_inc_x ( $x2 );

# (3) You have to force pass by reference and return by reference on scalars

$x2 =& scalar_ref_inc_x ( $x ); # Need reference here as well as the function sig
scalar_ref_inc_x ( $x2 );

# (4) Arrays use pass by value sematics just like scalars

function array_inc_x ( $array ) $array < 'x' >++;
return $array ;
>

$array = array();
$array [ ‘x’ ] = 1 ;

$array2 = array_inc_x ( $array );
array_inc_x ( $array2 );

print $array [ ‘x’ ] . ‘, ‘ . $array2 [ ‘x’ ] . «\n» ;

# (5) You have to force pass by reference and return by reference on arrays

$array = array();
$array [ ‘x’ ] = 1 ;

$array2 =& array_ref_inc_x ( $array ); # Need reference here as well as the function sig
array_ref_inc_x ( $array2 );

print $array [ ‘x’ ] . ‘, ‘ . $array2 [ ‘x’ ] . «\n» ;

Be careful about using «do this thing or die()» logic in your return lines. It doesn’t work as you’d expect:

function myfunc1 () return( ‘thingy’ or die( ‘otherthingy’ ));
>
function myfunc2 () return ‘thingy’ or die( ‘otherthingy’ );
>
function myfunc3 () return( ‘thingy’ ) or die( ‘otherthingy’ );
>
function myfunc4 () return ‘thingy’ or ‘otherthingy’ ;
>
function myfunc5 () $x = ‘thingy’ or ‘otherthingy’ ; return $x ;
>
echo myfunc1 (). «\n» . myfunc2 (). «\n» . myfunc3 (). «\n» . myfunc4 (). «\n» . myfunc5 (). «\n» ;
?>

Only myfunc5() returns ‘thingy’ — the rest return 1.

With 7.1, these are possible yet;

function ret_void (): void // do something but no return any value
// if needs to break fn exec for any reason simply write return;
if (. ) return; // break
// return null; // even this NO!
>

$db -> doSomething ();
// no need return call anymore
>

function ret_nullable () ? int if (. ) return 123 ;
> else return null ; // MUST!
>
>
?>

Functions which return references, may return a NULL value. This is inconsistent with the fact that function parameters passed by reference can’t be passed as NULL (or in fact anything which isnt a variable).

if ( testRet () === NULL )
echo «NULL» ;
>
?>

parses fine and echoes NULL

PHP 7 return types if specified can not return a null.
For example:
declare( strict_types = 1 );

function add2ints ( int $x , int $y ): int
$z = $x + $y ;
if ( $z === 0 )
return null ;
>
return $z ;
>
$a = add2ints ( 3 , 4 );
echo is_null ( $a ) ? ‘Null’ : $a ;
$b = add2ints (- 2 , 2 );
echo is_null ( $b ) ? ‘Null’ : $b ;
exit();

Output :
7
Process finished with exit code 139

Be careful when introducing return types to your code.

Only one return type can be specified (but prefacing with ? allows null).

Return values of a type different to that specified are silently converted with sometimes perplexing results. These can be tedious to find and will need rewriting, along with calling code.

Declare strict types using «declare(strict_types=1);» and an error will be generated, saving much head-scratching.

You may specify child return type if there is no parent:

class A public function f ( $a )
return 1 ;
>
>

class B extends A public function f ( $a ): int // + return type, OK
return 1 ;
>
>

class C extends A public function f ( int $a ) // + argument type, WARNING
return 1 ;
>
>
?>

Note: the function does not have «alternative syntax» as if/endif, while/endwhile, and colon (:) here is used to define returning type and not to mark where the block statement begins.

Declaring a collection of objects as return type is not implemented and forbidden:
class Child <>

function getChilds (): Child [] return [(new Child ()), (new Child ())];
>

var_dump ( getChilds ());
// Returns: Parse error: syntax error, unexpected ‘[‘, expecting ‘ ?>

We have to use:
class Child <>

function getChilds (): array
return [(new Child ()), (new Child ())];
>

var_dump ( getChilds ());
// Returns:
/*
array (size=2)
0 =>
object(Child)[168]
1 =>
object(Child)[398]*/
?>

Idem for function parameter:
function setChilds ( Child [] $childs )<>
// Not allowed

function setChilds (array $childs )<>
// Allowed
?>

Источник

Оцените статью