Press "Enter" to skip to content

[글쓴이:] comago

PHP에서 콜백함수 사용하기

간단하게 호출하기

<?php
function cbExclaim($str)
{
return print($str."!\n");
}
function cbAsk($str)
{
return print($str."?\n");
}
function callCallback($str, $cbFunc)
{
// $cbFunc로 콜백 함수 호출
$cbFunc($str);
}
// $cbFunc 파라미터에 "cbExclaim", "cbAsk" 입력하여 콜백함수 호출
callCallback("안녕", "cbExclaim");
callCallback("안녕", "cbAsk");
?>
<?php function cbExclaim($str) { return print($str."!\n"); } function cbAsk($str) { return print($str."?\n"); } function callCallback($str, $cbFunc) { // $cbFunc로 콜백 함수 호출 $cbFunc($str); } // $cbFunc 파라미터에 "cbExclaim", "cbAsk" 입력하여 콜백함수 호출 callCallback("안녕", "cbExclaim"); callCallback("안녕", "cbAsk"); ?>
<?php
function cbExclaim($str) 
{
  return print($str."!\n");
}

function cbAsk($str) 
{
  return print($str."?\n");
}

function callCallback($str, $cbFunc) 
{
  // $cbFunc로 콜백 함수 호출
  $cbFunc($str);
}

// $cbFunc 파라미터에 "cbExclaim", "cbAsk" 입력하여 콜백함수 호출
callCallback("안녕", "cbExclaim");
callCallback("안녕", "cbAsk");
?>

출력

안녕!
안녕?

인스턴스의 함수를 파라미터와 함께 호출하기

<?php
// $obj는 클래스의 인스턴스. function_name 이라는 함수를 가지고 있다.
$cbfunc = array(&$obj, "function_name");
$param = array("param1", "param2", true);
// $obj->function_name 함수를
// 파라미터 3개("param1", "param2", true)를 대입하여 호출한다.
$rtn = call_user_func_array($cbfunc, $param);
?>
<?php // $obj는 클래스의 인스턴스. function_name 이라는 함수를 가지고 있다. $cbfunc = array(&$obj, "function_name"); $param = array("param1", "param2", true); // $obj->function_name 함수를 // 파라미터 3개("param1", "param2", true)를 대입하여 호출한다. $rtn = call_user_func_array($cbfunc, $param); ?>
<?php
    // $obj는 클래스의 인스턴스. function_name 이라는 함수를 가지고 있다.
    $cbfunc = array(&$obj, "function_name");
    $param = array("param1", "param2", true);

    // $obj->function_name 함수를 
    // 파라미터 3개("param1", "param2", true)를 대입하여 호출한다.
    $rtn = call_user_func_array($cbfunc, $param);
?>

전기차용 밧데리 관련주

전기차용 밧데리 제조사들이 요즘 핫한거 아시죠?
휘발유, 경유, LPG 같은 화석연료로 가는 자동차가 앞으로는 친환경 전기차로 싸악! 다 바뀔 거라는거는 기정사실입니다.

그렇다면, 주식투자를 하는 우리는 어떻게 움직여야 할까요? 앞으로 10여년 뒤에는 필수품이 되는 밧데리를 생산하는 기업의 주식을 사 모아둬야겠지요.

밧데리 관련 망하지 않을 튼튼한 주식 어떤 것들이 있는지 알아보도록 하겠습니다.

  • LG화학(051910)

명실상부 밧데리 관련 초우량 대장주입니다.
2020년 12월 배터리 사업 부문을 분할하여 LG에너지솔루션을 자회사로 설립했고 100% 지분을 보유하고 있습니다. 현재는 LG에너지솔루션이 비상장이므로 상장될경우 LG화학은 알짜회사가 되겠죠.
2021년11월5일 기준 786,000원입니다.

  • 삼성SDI(006400)

돈되는 사업에 삼성이 손을 안댈 수 없죠.
당연히 삼성이 하고 있는 배터리 회사입니다. 이름만 들어도 든든하지요.
2021년11월5일 기준 755,000원입니다.

  • SK이노베이션(096770)

세계적인 시장점유율과 미국/중국에 공장을 가지고 있는 회사입니다.
미국에도 공장이 있어 미/중 무역분쟁에서도 비켜갈 수 있습니다.
적극적인 투자와 특허도 기업가치를 극대화 하고 있습니다. 주당 가격도 싸서 접근하기 좋습니다.
2021년11월5일 기준 233,500원입니다.

  • 포스코케미칼(003670)

배터리 제조사는 아니고 배터리 자재를 생산하는 회사입니다.
배터리 제조사에 자재를 공급하는 역할을 하는 필수 회사입니다.
2021년11월5일 기준 149,500원입니다.

  • 솔브레인(357780)

이 회사도 배터리 자재를 공급하는 회사입니다.
생소한 회사지만 이런 회사들이 빛을 내는 알짜회사가 될 가능성이 높습니다.
2021년11월5일 기준 247,800원입니다.

연말 배당주에 투자해 볼까!!!

과거 배당을 기준으로 2021년 기대되는 종목을 뽑아봤습니다.

종목명을 두껍게 한 리드코프, 대신증권우(대신증권, 대신증권2우B), 동부건설 되겠습니다.

대신증권의 경우 우선주가 가격이 낮고 배당액이 높으므로 치고 빠지려면 우선주를 매수하시는 것이 좋아 보입니다.

종목명배당락배당금지불일수익율2021.11.5 현재가2021결산 예상 수익율
서울가스2020년 12월 31일17501.80%165,5001.06
2020년 09월 30일150002020년 10월 19일19.34%9.06
2019년 12월 31일17502020년 04월 01일2.27%1.06
한국패러랠2021년 09월 29일952021년 10월 15일4.47%2,1204.48
 2021년 06월 29일952021년 07월 16일4.65%4.48
 2021년 03월 30일852021년 04월 16일4.22%4.01
 2020년 12월 29일2352021년 01월 15일12.02%11.08
리드코프2021년 06월 29일8002021년 08월 11일8.15%9,6708.27
2020년 12월 29일8002021년 04월 21일8.53%8.27
대신증권우2020년 12월 29일12502021년 04월 02일6.65%18,6506.70
2019년 12월 27일10502020년 03월 30일10.55%5.63
대신증권2우B2020년 12월 29일12002021년 04월 02일6.56%18,1506.61
2019년 12월 27일10002020년 03월 30일10.58%5.51
동부건설2020년 12월 29일9002021년 04월 23일6.12%14,5006.21
2019년 12월 27일7002020년 04월 24일5.83%4.83
메리츠증권2020년 12월 29일3202021년 03월 31일6.87%4,6106.94
2019년 12월 27일2002020년 03월 25일5.67%4.34
NH투자증권우2020년 12월 31일7502021년 03월 25일8.10%12,4506.02
2019년 12월 31일5502020년 03월 25일5.90%4.42
이베스트투자증권2020년 12월 29일5502021년 04월 23일6.10%8,9403.79
2019년 12월 27일3452020년 04월 24일4.71%3.86
메리츠화재2020년 12월 29일12802021년 04월 07일4.35%29,5504.33
2019년 12월 27일8502020년 03월 25일5.84%2.88
동아타이어2020년 12월 29일8002021년 03월 31일6.11%13,5005.93
2019년 12월 27일5002020년 04월 03일4.95%3.70
대신증권2020년 12월 29일12002021년 04월 02일5.90%20,2505.93
2019년 12월 27일10002020년 03월 30일7.19%4.94
대신증권우2020년 12월 29일12502021년 04월 02일6.65%18,6506.70
2019년 12월 27일10502020년 03월 30일10.55%5.63
대신증권2우B2020년 12월 29일12002021년 04월 02일6.56%18,1506.61
2019년 12월 27일10002020년 03월 30일10.58%5.51
2021년 배당 추천주

PHP v5.6 이상에서 mcrypt_encrypt() 함수 사용 시 발생하는 에러 해결

mcrypt_encrypt(): Key of size 6 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in test.php on line 128

암/복호화시 사용하는 mcrypt_encrypt() 함수가 PHP 5.6 이상에서 제약사항이 있습니다.
암/복호화시 사용하는 key의 길이를 16, 24, 32 에 맞게 사용해야 한다는 것입니다.
자릿수가 맞지 않으면 위와 같은 에러메시지를 출력하고 정상적으로 암/복호화 되지 않습니다.

그러면 php v5.6 미만에서 자유로운 길이로 사용하던 key 를 v5.6이상에서 어떻게 처리해야 할까?
다구나 키를 바꾸면 기존에 사용하던 암/복호화 된 문자열을 쓰기가 골치 아파집니다.
요렇게 해봅시다. 짧은 키도 그대로 사용할 수 있습니다.

// 암호화
function ase_encrypt($plainText)
{
$key = 'mykeys';
$key = str_pad($key, 16,chr(0)); // Key 자릿수 채우기
$mode = MCRYPT_MODE_ECB;
$enc = MCRYPT_RIJNDAEL_128;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);
return strtoupper(bin2hex(mcrypt_encrypt($enc, $key, $plainText, $mode, $iv)));
}
// 암호화 function ase_encrypt($plainText) { $key = 'mykeys'; $key = str_pad($key, 16,chr(0)); // Key 자릿수 채우기 $mode = MCRYPT_MODE_ECB; $enc = MCRYPT_RIJNDAEL_128; $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND); return strtoupper(bin2hex(mcrypt_encrypt($enc, $key, $plainText, $mode, $iv))); }
// 암호화
function ase_encrypt($plainText)
{
    $key = 'mykeys';
    $key = str_pad($key, 16,chr(0));  // Key 자릿수 채우기
    $mode = MCRYPT_MODE_ECB;
    $enc = MCRYPT_RIJNDAEL_128;
    $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);

    return strtoupper(bin2hex(mcrypt_encrypt($enc, $key, $plainText, $mode, $iv)));
}
// 복호화
function ase_decrypt($encText)
{
$key = 'mykeys';
$key = str_pad($key, 16,chr(0)); // Key 자릿수 채우기
$mode = MCRYPT_MODE_ECB;
$enc = MCRYPT_RIJNDAEL_128;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);
$encText = mcrypt_decrypt($enc, $key, pack("H*", $encText), $mode, $iv);
return rtrim($encText, $encText[strlen($encText)-1]);
}
// 복호화 function ase_decrypt($encText) { $key = 'mykeys'; $key = str_pad($key, 16,chr(0)); // Key 자릿수 채우기 $mode = MCRYPT_MODE_ECB; $enc = MCRYPT_RIJNDAEL_128; $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND); $encText = mcrypt_decrypt($enc, $key, pack("H*", $encText), $mode, $iv); return rtrim($encText, $encText[strlen($encText)-1]); }
// 복호화
function ase_decrypt($encText)
{
    $key = 'mykeys';
    $key = str_pad($key, 16,chr(0));  // Key 자릿수 채우기
    $mode = MCRYPT_MODE_ECB;
    $enc = MCRYPT_RIJNDAEL_128;
    $iv = mcrypt_create_iv(mcrypt_get_iv_size($enc, $mode), MCRYPT_RAND);

    $encText = mcrypt_decrypt($enc, $key, pack("H*", $encText), $mode, $iv);

    return rtrim($encText, $encText[strlen($encText)-1]);
}