PHP code example of mtchabok / objects_relation

1. Go to this page and download the library: Download mtchabok/objects_relation library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

mtchabok / objects_relation example snippets


use \Mtchabok\ObjectsRelation\Relation;
class myObjectUseTraitClass{
    use Relation;
    
    public $name = '';
    
    public function __construct()
    {
        $this->addRelationType('parent', 'child');
        $this->addRelationType('child', 'parent');
    }
}

use \Mtchabok\ObjectsRelation\RelationObject;
class myObjectExtendsClass extends RelationObject{
    public $name = '';
    
    public function __construct()
    {
        $this->addRelationType('parent', 'child');
        $this->addRelationType('child', 'parent');
    }
}

use \Mtchabok\ObjectsRelation\Relation;
use \Mtchabok\ObjectsRelation\RelationChild;
use \Mtchabok\ObjectsRelation\RelationParent;
class myObjectParentChildTraitClass{
    use Relation;
	use RelationParent{ RelationParent::__construct as __parentConstruct; }
	use RelationChild{ RelationChild::__construct as __childConstruct; }
	
    public $name = '';
    
    public function __construct()
    {
        $this->__parentConstruct();
        $this->__childConstruct();
    }
}

$ObjectUseTraitClass1 = new myObjectUseTraitClass();
$ObjectUseTraitClass2 = new myObjectExtendsClass();

$ObjectUseTraitClass1->name = 'Cambyses';
$ObjectUseTraitClass2->name = 'Cyrus';

$ObjectUseTraitClass1->addRelation($ObjectUseTraitClass2, 'child');

echo "{$ObjectUseTraitClass2->name} (parent: {$ObjectUseTraitClass2->getRelation('', 'parent')->name})"; // print Cyrus (parent: Cambyses)
echo PHP_EOL;
echo "{$ObjectUseTraitClass1->name} (child: {$ObjectUseTraitClass1->getRelation('', 'child')->name})"; // print Cambyses (child: Cyrus) 

$ObjectUseTraitClass1 = new myObjectParentChildTraitClass();
$ObjectUseTraitClass2 = new myObjectParentChildTraitClass();

$ObjectUseTraitClass1->name = 'Cambyses';
$ObjectUseTraitClass2->name = 'Cyrus';

$ObjectUseTraitClass1->setChild($ObjectUseTraitClass2);

echo "{$ObjectUseTraitClass2->name} (parent: {$ObjectUseTraitClass2->getParent()->name})"; // print Cyrus (parent: Cambyses)
echo PHP_EOL;
echo "{$ObjectUseTraitClass1->name} (child: {$ObjectUseTraitClass1->getChild()->name})"; // print Cambyses (child: Cyrus) 

use \Mtchabok\ObjectsRelation\Relation;

class myObjectFamily{
	use Relation;

	public $sex = '';
	public $name = '';

	public function __construct($name, $sex)
	{
		$this->addRelationType(['father','mother','husband','wife','son','daughter'], [$this, '_relationReturnType']);
		$this->name = $name;
		$this->sex = $sex;
	}

	protected function _relationReturnType($type, $relation)
	{
		switch ($type){
			case 'father': case 'mother':
				return $relation->sex=='male' ?'son' :'daughter';
				break;
			case 'son':case 'daughter':
				return $this->sex=='male' ?'father' :'mother';
				break;
			case 'husband':
				return 'wife';
				break;
			case 'wife':
				return 'husband';
				break;
		}
		return '';
	}
}

$Cambyses1  = new myObjectFamily('Cambyses1', 'male');
$Mandane    = new myObjectFamily('Mandane', 'female');
$Cyrus      = new myObjectFamily('Cyrus', 'male');
$Cassandane = new myObjectFamily('Cassandane', 'female');
$Cambyses2  = new myObjectFamily('Cambyses2', 'male');
$Atossa     = new myObjectFamily('Atossa', 'female');
$Bardiya    = new myObjectFamily('Bardiya', 'male');
$Roksana    = new myObjectFamily('Roksana', 'female');

// add $Mandane by type(wife) into $Cambyses1
$Cambyses1->addRelation($Mandane, 'wife');
// add $Cyrus by type(son) into $Cambyses1
$Cambyses1->addRelation($Cyrus, 'son');

// add $Cyrus by type(son) into $Mandane
$Mandane->addRelation($Cyrus, 'son');

// add $Cassandane by type(wife) into $Cyrus
$Cyrus->addRelation($Cassandane, 'wife');
// add $Cambyses2 and $Bardiya by type(son) into $Cyrus
$Cyrus->addRelation([$Cambyses2, $Bardiya], 'son');
// add $Atossa and $Roksana by type(daughter) into $Cyrus
$Cyrus->addRelation([$Atossa, $Roksana], 'daughter');

// add $Cambyses2 and $Bardiya by type(son) into $Cassandane
$Cassandane->addRelation([$Cambyses2, $Bardiya], 'son');
// add $Atossa and $Roksana by type(daughter) into $Cassandane
$Cassandane->addRelation([$Atossa, $Roksana], 'daughter');

echo "Cyrus (father: {$Cyrus->getRelation('', 'father')->name}, mother: {$Cyrus->getRelation('', 'mother')->name})".PHP_EOL; // print Cyrus (father: Cambyses1, mother: Mandane)
echo "Cyrus wife: {$Cyrus->getRelation('', 'wife')->name}".PHP_EOL; // print Cyrus wife: Cassandane
echo 'Cyrus childes:';
foreach ($Cyrus->getRelations(['daughter','son']) as $child)
	echo " $child->name,";
echo PHP_EOL; // print Cyrus childes: Atossa, Roksana, Cambyses2, Bardiya,