라이브러리

[PHP] LuaSandbox::callFunction - Lua 전역 변수에서 함수 호출




LuaSandbox::callFunction


LuaSandbox는 PHP에서 Lua를 실행할 수 있는 라이브러리입니다. LuaSandbox::callFunction은 Lua 함수를 호출하는 메소드입니다. 이 메소드는 Lua 함수를 호출하고, 결과를 PHP로 반환합니다.

# 사용 방법


LuaSandbox::callFunction은 다음과 같은 형식으로 사용할 수 있습니다.

#hostingforum.kr
php

$result = $lua->callFunction($functionName, $args);



* `$lua`: LuaSandbox 인스턴스
* `$functionName`: 호출할 Lua 함수의 이름
* `$args`: 호출할 Lua 함수에 전달할 인자

# 예제


다음 예제는 LuaSandbox::callFunction을 사용하여 Lua 함수를 호출하는 방법을 보여줍니다.

#hostingforum.kr
php

// Lua 코드

function add(a, b)

    return a + b

end



// PHP 코드

$lua = new LuaSandbox();

$lua->loadString('

    function add(a, b)

        return a + b

    end

');



// Lua 함수를 호출하고 결과를 출력합니다.

$result = $lua->callFunction('add', array(2, 3));

echo "2 + 3 = $result
";



// 결과: 2 + 3 = 5



# 인자 전달


LuaSandbox::callFunction은 인자를 전달할 때, PHP의 배열을 Lua의 테이블로 변환합니다. 따라서, Lua 함수에 전달할 인자는 PHP의 배열로 전달해야 합니다.

#hostingforum.kr
php

// Lua 코드

function printTable(t)

    for k, v in pairs(t) do

        print(k .. ": " .. tostring(v))

    end

end



// PHP 코드

$lua = new LuaSandbox();

$lua->loadString('

    function printTable(t)

        for k, v in pairs(t) do

            print(k .. ": " .. tostring(v))

        end

    end

');



// PHP의 배열을 Lua의 테이블로 전달합니다.

$args = array('a' => 1, 'b' => 2, 'c' => 3);

$result = $lua->callFunction('printTable', $args);

echo "printTable 결과: $result
";



// 결과: printTable 결과: (empty string)



# 에러 처리


LuaSandbox::callFunction은 에러가 발생할 경우, PHP의 예외를 발생시킵니다. 따라서, Lua 함수 호출 시 에러가 발생할 수 있는 경우, 에러를 처리하는 코드를 작성해야 합니다.

#hostingforum.kr
php

// PHP 코드

$lua = new LuaSandbox();

$lua->loadString('

    function errorFunction()

        error("에러가 발생했습니다.")

    end

');



try {

    $result = $lua->callFunction('errorFunction');

} catch (LuaSandboxException $e) {

    echo "에러 메시지: " . $e->getMessage() . "
";

}



# 참고


LuaSandbox::callFunction은 Lua 함수를 호출하는 메소드입니다. 이 메소드는 Lua 함수를 호출하고, 결과를 PHP로 반환합니다. Lua 함수 호출 시, 인자를 전달할 때 PHP의 배열을 Lua의 테이블로 변환해야 합니다. 에러 처리는 PHP의 예외를 발생시켜야 합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 425 페이지

검색

게시물 검색