검색결과 리스트
글
php5 autoload 활용하기
PHP5 autoload 함수 활용하기
PHP5 부터는 __autoload 라는 특별한 함수를 지원한다.
기존의 클래스 파일을 사용하기 위해서는
include '/classes/db/DbMysqli.class.php';
$db = new DbMysqli();
이와 같이 include 먼저 하고나서
클래스를 선언하여 사용해야 했다.
엄청 불편하다
자바처럼 그냥 new 로 생성해서 사용하면 편한데 말이다. ^^
그래서 나온것이 바로 요놈 __autoload 이다
이놈을 사용하게 되면
그냥 include 를 수동으로 코딩하지 않아도
__autoload 이놈이 알아서 include 해준다.
그러므로 이제부터는 그냥
$db = new DbMysqli();
이렇게만 선언해서 사용하면 된다.
아래 소스는 __autoload 를 정의 해 놓은 것이다
소스는 이렇다
@ __autoload Source
# 절대 경로 define('_ROOT_PATH_', '/www/설치경로'); # 클래스 자동 인클루드 function __autoload($class_name) { # 클래스명중 경로 추출 $tmp_args = explode(' ', preg_replace( '/([a-z0-9])([A-Z])/', "$1 $2",$class_name)); $class_path_name = sprintf("%s/{$class_name}",strtolower($tmp_args[0])); # 체크 if(!class_exists($class_path_name,false)) { # classes 폴더 if(file_exists(_ROOT_PATH_.'/classes/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/classes/'.$class_path_name.'.class.php'; } # modules 폴더 else if(file_exists(_ROOT_PATH_.'/modules/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/modules/'.$class_path_name.'.class.php'; } # 기타 만든 클래스 폴더 [첫대문자만 폴더로 지원] # ( /my/MyTest.class.php -> MyTest.class.php) else if(file_exists(_ROOT_PATH_.'/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/'.$class_path_name.'.class.php'; } } }
자 이젠 __autoload 함수 정의 해 놓은 것을 설명할 차례군요
먼저, 아래와 같은 폴더 구조에 클래스 파일들이 있다고 가정을 합니다.
|----------------------------------------------------------------
| 파일경로 및 클래스 파일명 | 클래스명
|-----------------------------------+----------------------------
/classes/db/DbMysqli.class.php // class DbMysqli{ }
/classes/req/ReqForms.class.php // class
ReqForms { }
/classes/tpl/TplFusion.class.php // class
TplFusion {}
/modules/bbs/BbsModel.class.php // class BbsModel{ }
/modules/mem/MemModel.class.php // class MemModel{ }
/my/MyTest.class.php // class MyTest{ }
1. __autoload($class_name) 는 new 라는 명령만 떨어지면 자동으로 호출이 됩니다.
$db = new DbMysqli();
new -> __autoload 를 호출하고
$class_name -> DbMysqli 클래스 명이 되는거죠
2. 클래스명에서 클래스가 위치 하고 있는 경로를 추출합니다. 기준은 첫번째 대문자로 시작하고
다음 대문자가 나오기 전까지의 클래스명의 문자는 폴더를 가리킵니다.
DbMysqli 이건 폴더 db 를 가리키고
ReqForms 이건 폴더 req 를 가리키고
BbsModel 이건 폴더 bbs 를 가리키고
MemModel 이건 폴더 Mem 를 가리키고
MyTest 이건 폴더 my 를 가리킵니다.
위와 같은 기준으로 위치 (폴더) 를 알아냅니다.
# 클래스명중 경로 추출 $tmp_args = explode(' ', preg_replace( '/([a-z0-9])([A-Z])/', "$1 $2",$class_name)); $class_path_name = sprintf("%s/{$class_name}",strtolower($tmp_args[0]));
2. 이미지 인클루드된 클래스 파일이 있는지 확인 한 후 있으면 include 안하고
없으면 하게 될겁니다.
제가 코딩 해 놓은건
일단 무조건
1. classes 폴더 밑에 클래스 이름 폴더를 찾고 없으면
2. modules 폴더 밑에 클래스 이름 폴더를 찾고 그리고 나서
3. 선언된 클래스의 이름 폴더를 찾도록 하였습니다.
전 이유가 있어서 그랬지만 1,2번을 삭제하고 바로 3번만 선언해서 사용하셔도 됩니다.
그 역할을 하는 소스 부분이 바로 이 부분
# 체크 if(!class_exists($class_path_name,false)) { # 1. classes 폴더 if(file_exists(_ROOT_PATH_.'/classes/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/classes/'.$class_path_name.'.class.php'; } # 2. modules 폴더 else if(file_exists(_ROOT_PATH_.'/modules/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/modules/'.$class_path_name.'.class.php'; } # 3. 기타 만든 클래스 폴더 [첫대문자만 폴더로 지원] # ( /my/MyTest.class.php -> MyTest.class.php) else if(file_exists(_ROOT_PATH_.'/'.$class_path_name.'.class.php') !==false){ include_once _ROOT_PATH_.'/'.$class_path_name.'.class.php'; } }
끝까지 읽어 주셔서 감사합니다.
이 방법 말고도 php.net 에 보시면 클래스도 지원합니다.
마음에 드는 방법으로 사용하세요
'PHP > 팁앱테크' 카테고리의 다른 글
php 문서 안에 HTML 문서 쉽게 넣기 (0) | 2012.06.08 |
---|---|
PHP 제어 구문과 문법 (0) | 2012.04.03 |
php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다 (0) | 2012.03.29 |
php array 함수의 마력 array_splice, array_values 활용 (0) | 2012.03.29 |
abcd1004 중 뒤의 숫자만 추출하기 (0) | 2012.03.21 |
설정
트랙백
댓글
글
ChromeMarks 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플3
ChromeMarks 구글 크롬 브라우저 북마크를 폰에서 바로 보자 3
위 아이콘과 깉은 화면이 나오면 설치 하기를 눌러서
내 안드로이드 폰에 설치를 합니다.
저 화면들이 ChromeMarks 를 통해 볼 수 있습니다.
ChromeMarks 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플3
Phone 2 Google Chrome :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플2
Chrome to Phone :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플1
'추천 어플 > 안드로이드' 카테고리의 다른 글
[추천어플] 드롭박스 :: 클라우드 편리한 세상 강력한 스마트폰 필수 어플 (0) | 2012.04.09 |
---|---|
[추천어플] Turn Off The Lights 화면 끄기 및 잠금 기능 (2) | 2012.04.04 |
Phone 2 Google Chrome :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플2 (1) | 2012.03.28 |
Chrome to Phone :: 개발자와 인터넷 서핑을 많이 하는 사용자 필수 어플1 (0) | 2012.03.21 |
n7player :: music player (0) | 2012.03.15 |
설정
트랙백
댓글
글
jquery를 활용한 select 메뉴 컨트롤 메니저
jquery 를 이용해 SELECT 메뉴를 손쉽게 컨트롤 해보자
좋은 소스를 만들어 주신 분께 먼저 감사합니다.
참 좋은 소스 인데요.
익스7, 8, 9, 오페라, 파이어폭스, 크롬, 사파리 에서 테스트 해 보았습니다.
다 잘 되더군요 역시 익스6은 안되는듯 ...
익스6은 버렸음 좋겠다 얼릉 사라졌음 하는 바램뿐
일단 jQuery 를 기반으로 만들어 졌기 때문에
jquery를 포함하고 있어야 합니다.
말보다 소스를 보시고
소스를 긁어다 테스트 해 보심이 더 빠를겁니다.
@ 자바 스크립트 /==========================================================
< script src="http://code.jquery.com/jquery.min.js" type="text/javascript"> < script type="text/javascript" > var receiverMan = { itemList: null, // select option baseOption: { itemListSelector : 'select#itemList' }, init: function(pOption) { this.baseOption = $.extend(this.baseOption, pOption); this.itemList = $(this.baseOption.itemListSelector); }, selectedOptions: function() { return this.itemList.find("option:selected"); } , add: function(data) { this.itemList.append($("").attr("value", data.value).text(data.text)); } , del: function() { // del selected all this.selectedOptions().remove(); } , clear: function() { // del all items this.itemList.find("option").remove(); } , up: function() { var selectedOptions = this.selectedOptions(); var prev = $(selectedOptions).first().prev(); $(selectedOptions).insertBefore(prev); } , dn: function() { var selectedOptions = this.selectedOptions(); var next = $(selectedOptions).last().next(); $(selectedOptions).insertAfter(next); } , selectedOne: function() { // return selected first item return { value: this.selectedOptions().first().attr("value"), text: this.selectedOptions().first().text() } } , selectedAll: function() { // return all selected item var r = []; this.selectedOptions().each(function(idx, data) { r.push({ value: $(this).attr("value"), text: $(this).text() }); }); return r; } , all: function() { // return all var r = []; this.itemList.find("option").each(function(idx, data) { r.push({ value: $(this).attr("value"), text: $(this).text() }); }); return r; } } $(document).ready(function() { $('#receiverAdd').click(function() { receiverMan.add({text: 'test:'+(new Date().getTime()), value: '0001' }) }); $('#receiverDel').click(function() { receiverMan.del(); }); $('#receiverClear').click(function() { receiverMan.clear(); }); $('#receiverUp').click(function() { receiverMan.up(); }); $('#receiverDown').click(function() { receiverMan.dn(); }); receiverMan.init({ // itemListSelector : "your SELECT selector" itemListSelector : "select#itemList" }); $('#itemList').change(function(){ var args= receiverMan.selectedOne(); alert(args['value']+' '+args['text']); }); // 자동 등록 레이어 테스트 for(var i=0; i<7; i++){ receiverMan.add({text: 'test:'+(new Date().getTime()), value: '000'+i }) } }); < /script >
< style text="text/css" > .receiverInputBox { width: 500px; } .itemList { width:300px; height:20px; font-size:100%; color:blue; background-color:#ffffff; border:0px solid #ffffff; } < /style >
< div> < div> < select name="itemList" id="itemList" class="itemList"> < a href="#" id="receiverAdd">Add/ < a href="#" id="receiverDel">Delete/ < a href="#" id="receiverClear">Clear/ < a href="#" id="receiverUp">Up/ < a href="#" id="receiverDown">Down < /div> < /div>
'js API > jquery' 카테고리의 다른 글
jQuery 레이어 창 만들기 (0) | 2012.04.20 |
---|---|
jquery 정규식 표현 문자 검색 등 (0) | 2012.04.19 |
체크박스 checkbox 체크 된 목록 값만 가져오기 (2) | 2012.04.18 |
jquery 활용 js 파일 include 하기 (1) | 2012.04.03 |
jquery json IE, Opera 등 parse error 발생 할때 (0) | 2012.03.15 |
설정
트랙백
댓글
글
php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다
php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다
PHP의 매력 ㅎㅎㅎ
뭐 말하려니 입이 아프네요 ㅎㅎㅎ
오늘은 배열 값 중에서 가장 큰 값을 찾는 것과
그 값이 가리키는 키값을 찾는 걸 해볼까 합니다.
알면 유용하니 잘 보아 두세요.
@ 다음과 같은 배열이 있습니다.
$tmp_v_args = // 결과 Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17] => 0 [18] => 0 [19] => 58 [20] => 33 [21] => 58 [22] => 57 [23] => 9 [24] => 16 [25] => 102 [26] => 115 [27] => 138 [28] => 22 [29] => 0 [30] => 0 )
@ 배열중 가장 큰 값을 추출 하겠습니다.
$max_int_v = max($tmp_v_args); #배열중 가장 큰 값 추출 // 결과 138
@ 추출한 값이 가리키는 배열의 키를 추출하겠습니다.
$max_int_v_key = array_search($max_int_v, $tmp_v_args); #값이 가리키는 키값 추출 // 결과 27
@ 위 코드를 한번에 작성하면 다음과 같이 되겠죠
$max_int_v = max($tmp_v_args); #배열중 가장 큰 값 추출 $max_int_v_key = array_search($max_int_v, $tmp_v_args); #값이 가리키는 키값 추출
끝까지 읽어 주셔서 감사합니다.
'PHP > 팁앱테크' 카테고리의 다른 글
php 문서 안에 HTML 문서 쉽게 넣기 (0) | 2012.06.08 |
---|---|
PHP 제어 구문과 문법 (0) | 2012.04.03 |
php5 autoload 활용하기 (0) | 2012.04.03 |
php array 함수의 마력 array_splice, array_values 활용 (0) | 2012.03.29 |
abcd1004 중 뒤의 숫자만 추출하기 (0) | 2012.03.21 |
설정
트랙백
댓글
글
php array 함수의 마력 array_splice, array_values 활용
php array 함수의 마력 array_splice, array_values 활용
PHP는 가볍고 속도가 빠른것으로 유명하다
실제 프로그래밍을 해봐도 그렇다
확장성 또한 띄어나다
그중의 하나인 array 함수 들 중
array_splice 자르기, array_values 값만 추출하여 숫자로 인덱싱 해주는
이 놀라운 함수로 원하는 데이타를 추출해 보겠다
@ 먼저 다음과 같은 배열값이 있다고 하자
# 변수명 $args = Array ( [uid] => 1 [regi_ym] => 201203 [ads_url_info_uid] => 1 [totals] => 602 [d1] => 0 [d2] => 0 [d3] => 0 [d4] => 0 [d5] => 0 [d6] => 0 [d7] => 0 [d8] => 0 [d9] => 0 [d10] => 0 [d11] => 0 [d12] => 0 [d13] => 0 [d14] => 0 [d15] => 0 [d16] => 0 [d17] => 0 [d18] => 0 [d19] => 0 [d20] => 58 [d21] => 33 [d22] => 58 [d23] => 57 [d24] => 9 [d25] => 16 [d26] => 102 [d27] => 115 [d28] => 138 [d29] => 16 [d30] => 0 [d31] => 0 )
@ array_splice 로 d1 ~ d31 까지만 값이 필요하므로 그 부분만 따로 다른 변수에 담도록 하겠다
$row_splice = array_splice($args,4); print_r($row_splice); // 결과 Array ( [d1] => 0 [d2] => 0 [d3] => 0 [d4] => 0 [d5] => 0 [d6] => 0 [d7] => 0 [d8] => 0 [d9] => 0 [d10] => 0 [d11] => 0 [d12] => 0 [d13] => 0 [d14] => 0 [d15] => 0 [d16] => 0 [d17] => 0 [d18] => 0 [d19] => 0 [d20] => 58 [d21] => 33 [d22] => 58 [d23] => 57 [d24] => 9 [d25] => 16 [d26] => 102 [d27] => 115 [d28] => 138 [d29] => 16 [d30] => 0 [d31] => 0 )
내가 원하는 값만 추출 했다.
d1 위치가 4번째 배열위치에 있었으므로 4번째 배열부터 끝배열까지 자르라는 의미였다.
@ 이젠 array_values 를 통해 d1,d2 키를 없애고 [0]=>1, [1]=>2 숫자 인덱스 값을 갖는 배열로 바꿔보겠다.
$row_values = array_values($row_splice); print_r($row_values); // 결과 Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17] => 0 [18] => 0 [19] => 58 [20] => 33 [21] => 58 [22] => 57 [23] => 9 [24] => 16 [25] => 102 [26] => 115 [27] => 138 [28] => 22 [29] => 0 [30] => 0 )
올 내가 딱 원하는 형태로 데이타 형태가 바뀌었다
이 놀라운 PHP의 세계를 경험해 보라
위 단계를 다음과 한줄로 코딩해도 됩니다.
그래도 같은 결과가 나옵니다.
print_r( array_values(array_splice($row,4)) );
끝까지 읽어 주셔서 감사합니다.
'PHP > 팁앱테크' 카테고리의 다른 글
php 문서 안에 HTML 문서 쉽게 넣기 (0) | 2012.06.08 |
---|---|
PHP 제어 구문과 문법 (0) | 2012.04.03 |
php5 autoload 활용하기 (0) | 2012.04.03 |
php array 값중 가장 큰 값을 추출(max)하고 그 값이 가리키고 있는 키값(array_search)을 추출한다 (0) | 2012.03.29 |
abcd1004 중 뒤의 숫자만 추출하기 (0) | 2012.03.21 |