포럼
TemplateHandler 의 에러 출력부분을 개선했는데 한번 봐주세요.
2011.11.27 17:47
스킨에서 에러가 나면 가장 힘든게,
Parse error: syntax error, unexpected '}' in /home/anizone/public_html/classes/template/TemplateHandler.class.php(289) : eval()'d code on line 4
이런식으로 에러가 나오는겁니다.
뭔가 } 에서 문제가 있긴한데
이게 대체 어디있는지도 모르겠고,
추적이 힘이 들지요
그래서
template compile error
file : modules/board/skins/xe_naradesignheader.html
message : syntax error, unexpected '}'
line : 4
error line
- 2 : {@$module_info->colorset = "white"}
- 3 : <!--@end-->
- 4 : <!--@end-->
- 5 :
- 6 : <!--%import("css/board.css")-->
- 7 : <!--%unload("../../../../common/css/default.css")-->
와 같은 식으로 추적을 할수있게 개선해서 구글 코드에 패치로 올려두었습니다.
http://code.google.com/p/xe-core/issues/detail?id=1089
예전부터 불편했던건데 오늘에야 좀 개선점을 내봤는데
사실 테스트를 제 한정된 상황에서 한정된 스킨에서밖에 못해서,
가능하면 좀더 다듬었으면 좋겠거든요.
코드를 보시거나, 테스트 해보시고 이상한 부분을 이야기 해주시면 고맙겠습니다.
댓글 11
-
SMaker
2011.11.27 18:38
-
銀童
2011.11.27 18:41
exception_handler 라면
.. 직접 어느 파일이 문제인지 추적하기 조금 어렵지 않을까요?
한번 연구해봐야겠네요.
-
銀童
2011.11.27 18:54
Exception handler 로 해결할 문제는 아닌거 같습니다.
저는 잘 모르겠는데, 혹시
해당 의도에 맞는 방법을 user exception handler 로 구현할수 있는 방법이 알려주시면
큰 도움이 될꺼같습니다.
-
SMaker
2011.11.27 18:57
급하게 작성하느라 잘못 적은 듯 합니다.
try {
} catch(Exception $e) {
}
구문이 PHP 5 이상에서 지원되는지라 아직 도입하기에는 곤란하다는 의미였습니다.
XE 1.7에서 PHP4 지원을 중단한다고 하는데 그 때 반영되었으면 좋겠습니다.
-
銀童
2011.11.27 18:59
아. try { } catch(e) {} 가 php5 용인가요?
[..] 진짜 처음 알았네요
어쩐지 그동안 이게 안만들어진 이유가 있었나.
PHP 5 has an exception model similar to that of other programming languages.
허허 그렇군요 [..]
뭐 php5 인 경우에 함수를 생성해서 작동하게 해도 되겠지만.
미.. 묘하네요 미묘 [..]
하도 php5 로 작업을 계속하다보니 try ~ catch 가 php4 에서 안된다는건 까맣게 까먹고 있었네요.
-
銀童
2011.11.27 19:01
php4 도 지원되게 할려면
create_function 을 써서
템플릿용 예외처리를 php5 이상일경우에만 함수로 쓰도록 작업을 해야겠네요.
[..]
코드를 그쪽으로 개선을 해봐서 테스트를 해봐야겠습니다.
-
행복한고니
2011.11.28 09:41
지금 시점에서 PHP4를 지원하는 코드를 더 추가해야 하는지는 결정하기 힘드네요. ^^;;
분명 내년 중에는 PHP5로 전향할 예정이라서 지금 추가하면 삽질하는게 아닌가 싶기도 하고, 한편으로는 그래도 그 때까지라도 편리하게 사용할 수 있도록 추가해야 하나 싶기도 하고요.
참 애매~합니다.
-
銀童
2011.11.28 11:31
이러한 템플릿 핸들러의 에러 출력 부분의 개선이 필요한게
구글 프로젝트의 이슈를 보시면 대부분이 템플릿 핸들러에서 벌어지는 에러를 리포팅 하고 있습니다.
특히 1.5로 바뀌면서는 더더욱 말이죠.
근데 사실 이게 코어의 문제인지
세부 스킨의 문제인지 잘 알아보기가 힘든데, 에러메세지를 정확히 표현해줌으로써, 사람들이 버그 리포팅에도 편리하고,
스킨 유지보수에도 압도적으로 편리할꺼라는 생각이 드네요.
지금은, 템플릿 핸들러에서 에러! 라는것밖에 알수가 없어서 상당히 불편한것도 사실입니다.
사실 이 코드를 php4 에서도 돌아가게 하는 방법을 생각해 보고있는데
그건 불가능할꺼같고.
php5 에서만 돌아가게 하는 별도의 기능으로라도 추가함으로써,
버그 리포팅등에 편의를 주는게 좋지 않을까 싶네요.
사실 1.6 버전부터 바로 php4 가 포기되어서 그냥 이러한 부분이 딱! 하고 추가되면 좋을텐데. 그건 힘들겠지요.
-
銀童
2011.11.28 11:34
예를 들면
http://code.google.com/p/xe-core/issues/detail?id=1086#c0
이런 레포트들이 매우 많은데
.. 즉각적인 개선이 필요한 부분이 아닌가 싶습니다.
-
행복한고니
2011.11.28 21:38
eval에서 발생하는 문제는 아마 try ~ catch 로도 찾아내기 어려울 것입니다.
사실 eval 문제가 발생했을 때는 한번 더 새로고침하면 문제가 되는 위치를 알 수 있습니다. ^^
-
銀童
2011.11.28 22:20
음?.. 제가 올린 패치가 eval 의 문법 에러등을 찾아낼수 있게 만든거지요.
근데 한번더 새로고침 할경우에 문제가 되는 위치를 알수있따는건 처음듣는 이야기네요.
PHP5 이상에서 Exception handler를 지원합니다.