Haroop Webagency team BICTOR 원격 및 파견 개발팀분들을 위한 하룹소속 개발자전용 빅터 오픈소스 커뮤니티입니다 이곳은 하룹 개발팀 소속 직원들에 전체 개발기술력 및 전체 평균 능력치 강화를 위한, 빅터팀 리드개발자들에 오픈소스 개발 커뮤니티 공간입니다, 만약 고객이시라면 여기를 이용해주세요. 제목 안녕하세요 혹시 람다에서 php를 c++로 불러올수있을까요? 작성자 퍼널 작성일 2022-05-05 21:28 조회 185 답변완료 혹시 C++ 람다함수를 콜백으로 사용하려하는데 대략적으로 힌트만 주실수있을까요ㅠ 좋아요 0 싫어요 0 인쇄 전체 2 추천순 작성순 최신순 Haroop 2022-05-05 22:34 안녕하세요 퍼널님 아래 코드를 참고하시면 이해가 되실거같습니다. 이해가 안되시면 답변남겨주시면 좀 더 상세히 설명해드릴수있도록 하겠습니다. 1.콜백함수를 이용합니다. function my_array_map($array, $callback) { $result = array(); foreach ($array as $index => $item) { $result[$index] = $callback($item); } return $result; } 2.C++를 콜백으로 이용가능합니다. #include void run_test() { Php::Function multiply_by_two([](Php::Parameters ¶ms) -> Php::Value { if (params.empty()) return nullptr; Php::Value param = params[0]; return param * 2; }); Php::Value four = multiply_by_two(2); Php::Value value = multiply_by_two; Php::Value six = value(3); Php::Value array; array[0] = 1; array[1] = 2; array[2] = 3; array[3] = 4; Php::Value result = Php::call("my_array_map", array, multiply_by_two); } extern "C" { PHPCPP_EXPORT void *get_module() { static Php::Extension extension("lambda", "1.0"); extension.add("run_test",run_test); return extension; } } 이렇게만 실행시키면, segmentation fault(core dumped)가 나올수있는데, 위부분 소스를 참고하여 구성하면 충분히 원하시는것을 구현하실수있으실거라 생각합니다. 참고하시어 원하시는부분 잘 해결하시길 바라겠습니다 🙂 답글 좋아요 0 싫어요 0 퍼널 2022-05-06 09:53 감사합니다 ㅠ 잘되네요ㅠㅠ 삭제 편집 답글 좋아요 0 싫어요 0 작성자 비밀번호 사진 첨부파일 « 환자후기 이름 자동 가리기부분 개발도움 요청 웹디자인 프론트엔드 문의 » 목록보기 답글쓰기 글수정 글삭제
안녕하세요 퍼널님 아래 코드를 참고하시면 이해가 되실거같습니다.
이해가 안되시면 답변남겨주시면 좀 더 상세히 설명해드릴수있도록 하겠습니다.
1.콜백함수를 이용합니다.
function my_array_map($array, $callback) {
$result = array();
foreach ($array as $index => $item) {
$result[$index] = $callback($item);
}
return $result;
}
2.C++를 콜백으로 이용가능합니다.
#include
void run_test()
{
Php::Function multiply_by_two([](Php::Parameters ¶ms) -> Php::Value {
if (params.empty()) return nullptr;
Php::Value param = params[0];
return param * 2;
});
Php::Value four = multiply_by_two(2);
Php::Value value = multiply_by_two;
Php::Value six = value(3);
Php::Value array;
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
Php::Value result = Php::call("my_array_map", array, multiply_by_two);
}
extern "C" {
PHPCPP_EXPORT void *get_module()
{
static Php::Extension extension("lambda", "1.0");
extension.add("run_test",run_test);
return extension;
}
}
이렇게만 실행시키면, segmentation fault(core dumped)가 나올수있는데, 위부분 소스를 참고하여 구성하면
충분히 원하시는것을 구현하실수있으실거라 생각합니다. 참고하시어 원하시는부분 잘 해결하시길 바라겠습니다 🙂
감사합니다 ㅠ 잘되네요ㅠㅠ