라이브러리
[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의 예외를 발생시켜야 합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.