함수의 매개변수 갯수
본문
영카트4 입니다.
질문) 아래 해당 파일의 정의부에 나와있는 함수를 부르는것 같은데
함수 호출부는 latest("banner_main", mainbanner, 1, 24)
처럼 파라미터가 4개 인데
함수 정의부 보면 function latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
처럼 파라미터가 5개 인데
그것때문에 undefined function 이라는 에러가 발생하는 것 입니까?
5번째 파라미터에 변수값이 안들어오면 디폴트값 가지는 것으로 알고있는데
아닌가요?
( ! ) Fatal error: Call to undefined function latest() in /var/www/html/mydomain_com/public_html/sub_dir/index.php on line 15 |
||||
---|---|---|---|---|
Call Stack |
||||
# |
Time |
Memory |
Function |
Location |
1 |
0.0008 |
241464 |
{main}( ) |
.../index.php:0 |
해당 /var/www/html/mydomain_com/public_html/sub_dir/index.php 파일 내용
=================================
<?
include_once("./_common.php");
include_once("$g4[path]/lib/latest.lib.php");
define("_INDEX_", TRUE);
$g4[title] = "";
include_once("$g4[path]/head.php");
?>
<script language="JavaScript" src="<?=$g4[path]?>/js/shop.js"></script>
<table border="0"><tr><td height=4></td></tr></table>
<?=latest("banner_main", mainbanner, 1, 24);?> <-- 여기가 바로 문제의 15 줄입니다.
<br>
--------------------------(해당 파일의 정의부 )----------------------------------------------
function latest($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
global $g4;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름
$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $rows ";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
답변 1
Fatal error: Call to undefined function latest()
이런 식으로 치명적인 에러가 나는 건 함수가 없어서 그런 겁니다.
latest() 함수가 있는 파일을 정상적으로 인클루드 하시면 됩니다.
그리고 <?=latest("banner_main", mainbanner, 1, 24);?> 여기에 mainbanner 이건 문자열이어서 "" 감싸야 해요.