Lisphp_Runtime_From::apply PHP Метод

apply() публичный Метод

public apply ( Lisphp_Scope $scope, Lisphp_List $arguments )
$scope Lisphp_Scope
$arguments Lisphp_List
    public function apply(Lisphp_Scope $scope, Lisphp_List $arguments)
    {
        $tmp = new Lisphp_Scope();
        $use = new Lisphp_Runtime_Use();
        $ns = (string) $arguments->car();
        $simpleNames = iterator_to_array($arguments[1]);
        foreach ($simpleNames as $name) {
            $name = substr($name, 1, -1);
            $names[] = Lisphp_Symbol::get("<{$ns}\\{$name}>");
        }
        $retval = $use->apply($tmp, new Lisphp_List($names));
        foreach ($simpleNames as $i => $name) {
            $scope->let($name, $retval[$i]);
        }
        return $retval;
    }

Usage Example

Пример #1
0
 public function testFrom()
 {
     $from = new Lisphp_Runtime_From();
     $env = Lisphp_Environment::sandbox();
     $scope = new Lisphp_Scope($env);
     $values = $from->apply($scope, self::lst('Foo (<Bar> <Baz>)'));
     $this->assertEquals('Foo\\Bar', $values[0]->class->getName());
     $this->assertEquals('Foo\\Bar', $scope['<Bar>']->class->getName());
     $this->assertEquals('Foo\\Baz', $values[1]->class->getName());
     $this->assertEquals('Foo\\Baz', $scope['<Baz>']->class->getName());
 }
All Usage Examples Of Lisphp_Runtime_From::apply
Lisphp_Runtime_From