XML 클래스 입니다..
아니 이게 왜 필요하냐?
그딴 이유 없음;
php5에서만 동작합니다.
사용 설명은 주석에~
최소한에 new 연산자 아는분만 쓰셈.~
<?
class xmlLoad {
/*
* 작성자 : 다프린(불바람)
* 공짜인데 이름 지우면 죽여불라~
*
*
* 사용법:
* 1번 방법
* $this->{'data'} = "<data><title></title></data>";
* 위에 처럼하면 data로 호출시 위에 데이터가 들은 DOM객체를 셋팅되고 data로 부르면 된다.
*
* 2번 방법
* $this->{'http://babo.net/나XML.xml'};
* 위에 처럼하면 http://babo.net/wow.xml로 호출시 해당 xml의 데이터가 들은 DOM객체를 반환
* 3번방법
* $this->{'wow2.xml'} = "<data><title></title></data>";
* XML 확장자를 가진 이름이면 파일이 없으면 해당 자료를을 넣은 데이터 DOM이 세팅된고 마지막 작업때 자공 저장된다.
* 해당 파일이 있으면 wow2.xml를 불러온다.
*
* !!!!이미 있는 파일 변조하고 다시 저장시.
* $this->{'나XML.xml'} = $this->{'나XML.xml'}->firstChild->ownerDocument;
*
* 이렇게 다시 Document를 넣으면 종료 될때 자동 저장된다.
* 주의:: 같은 DOM객체여야 한다. 서로 틀린 DOM 경우 전혀 안된다. 프로토콜로 시작하는 이름은 에러가 걸리니 주의 해라.
*
* 이하 메소드 설명 귀찮아서 안함.
*/
private $version='1.0', $encoding='utf-8';
private static $node = array(), $stand_by_save = array();
private $extension = array('xml', 'xsl');
public function __construct(){
}
final private function findType($key){
if(strpos($key, "http://") === 0 or strpos($key, "https://") === 0 or strpos($key, "ftp://") === 0) return 'url';
else{
$ex = end(explode(".", strtolower($key)));
return array_search($ex, $this->extension) !== false?'localhost':'normal';
}
}
final public function __get($key){
if($this->isKey($key)) return $this->loadKey($key);
else{
$type = $this->findType($key);
switch ($type) {
case 'localhost':
if(!file_exists($key)) return false;
case 'url':
$dom = $this->load($key, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
return $dom;
break;
}
}
return false;
}
final public function __set($key, $val){
if(!$this->isKey($key)){
if(get_class($var) == 'DOMDocument') {
$dom = $this->loadKey($key);
if($dom->check_code == $val->check_code) $this->stand_by_save($key);
return $dom;
}
else{
$type = $this->findType($key);
switch ($type) {
case 'normal':
$dom = $this->load($val, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
return $dom;
break;
case 'localhost':
if(!file_exists($key)){
$dom = $this->load($val, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
$this->stand_by_save($key);
return $dom;
}
break;
}
}
}
}
public function __isset($name) {
return isset(self::$node[$name]);
}
public function __unset($name) {
unset(self::$node[$name]);
}
final private function saveKey($key, $dom){
if(!self::$node[$key]){
$dom->check_code = count(self::$node);
self::$node[$key] = $dom;
return true;
}
return false;
}
final private function loadKey($key){
if(self::$node[$key]) return self::$node[$key];
return false;
}
final private function isKey($key){
if(self::$node[$key]) return true;
return false;
}
final protected function load($val='', $version='1.0', $encoding='utf-8', $type=''){
if(_debug_) $xmlLoadTime = microtime_float();
$dom = new DOMDocument($version, $encoding);
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
if($type == '') $type = $this->findType($val);
if($val != ''){
switch ($type) {
case 'normal':
$dom->loadxml("<?xml version=\"".$version."\" encoding=\"".$encoding."\" ?>".$val);
break;
case 'url':
case 'localhost':
$dom->load($val);
break;
}
}
$dom->type = $type;
if(_debug_) $GLOBALS["xmlLoadTime"] += bcsub(microtime_float(), $xmlLoadTime, 4);
return $dom;
}
final protected function save(DOMDocument $dom, $fileName){
switch ($dom->type) {
case 'localhost':
case 'normal':
$dom->save($fileName);
break;
}
}
final public function stand_by_save($key, $fileName=''){
if($this->isKey($key)){
switch ($this->loadKey($key)->type) {
case 'localhost':
self::$stand_by_save[$key] = $key;
return true;
break;
case 'normal':
self::$stand_by_save[$key] = $fileName;
return true;
break;
}
}
return false;
}
final public function __destruct(){
foreach(self::$stand_by_save as $key => $val) $this->save($this->loadKey($key), $val);
}
}<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]</div>
아니 이게 왜 필요하냐?
그딴 이유 없음;
php5에서만 동작합니다.
사용 설명은 주석에~
최소한에 new 연산자 아는분만 쓰셈.~
<?
class xmlLoad {
/*
* 작성자 : 다프린(불바람)
* 공짜인데 이름 지우면 죽여불라~
*
*
* 사용법:
* 1번 방법
* $this->{'data'} = "<data><title></title></data>";
* 위에 처럼하면 data로 호출시 위에 데이터가 들은 DOM객체를 셋팅되고 data로 부르면 된다.
*
* 2번 방법
* $this->{'http://babo.net/나XML.xml'};
* 위에 처럼하면 http://babo.net/wow.xml로 호출시 해당 xml의 데이터가 들은 DOM객체를 반환
* 3번방법
* $this->{'wow2.xml'} = "<data><title></title></data>";
* XML 확장자를 가진 이름이면 파일이 없으면 해당 자료를을 넣은 데이터 DOM이 세팅된고 마지막 작업때 자공 저장된다.
* 해당 파일이 있으면 wow2.xml를 불러온다.
*
* !!!!이미 있는 파일 변조하고 다시 저장시.
* $this->{'나XML.xml'} = $this->{'나XML.xml'}->firstChild->ownerDocument;
*
* 이렇게 다시 Document를 넣으면 종료 될때 자동 저장된다.
* 주의:: 같은 DOM객체여야 한다. 서로 틀린 DOM 경우 전혀 안된다. 프로토콜로 시작하는 이름은 에러가 걸리니 주의 해라.
*
* 이하 메소드 설명 귀찮아서 안함.
*/
private $version='1.0', $encoding='utf-8';
private static $node = array(), $stand_by_save = array();
private $extension = array('xml', 'xsl');
public function __construct(){
}
final private function findType($key){
if(strpos($key, "http://") === 0 or strpos($key, "https://") === 0 or strpos($key, "ftp://") === 0) return 'url';
else{
$ex = end(explode(".", strtolower($key)));
return array_search($ex, $this->extension) !== false?'localhost':'normal';
}
}
final public function __get($key){
if($this->isKey($key)) return $this->loadKey($key);
else{
$type = $this->findType($key);
switch ($type) {
case 'localhost':
if(!file_exists($key)) return false;
case 'url':
$dom = $this->load($key, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
return $dom;
break;
}
}
return false;
}
final public function __set($key, $val){
if(!$this->isKey($key)){
if(get_class($var) == 'DOMDocument') {
$dom = $this->loadKey($key);
if($dom->check_code == $val->check_code) $this->stand_by_save($key);
return $dom;
}
else{
$type = $this->findType($key);
switch ($type) {
case 'normal':
$dom = $this->load($val, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
return $dom;
break;
case 'localhost':
if(!file_exists($key)){
$dom = $this->load($val, $this->version, $this->encoding, $type);
$this->saveKey($key, $dom);
$this->stand_by_save($key);
return $dom;
}
break;
}
}
}
}
public function __isset($name) {
return isset(self::$node[$name]);
}
public function __unset($name) {
unset(self::$node[$name]);
}
final private function saveKey($key, $dom){
if(!self::$node[$key]){
$dom->check_code = count(self::$node);
self::$node[$key] = $dom;
return true;
}
return false;
}
final private function loadKey($key){
if(self::$node[$key]) return self::$node[$key];
return false;
}
final private function isKey($key){
if(self::$node[$key]) return true;
return false;
}
final protected function load($val='', $version='1.0', $encoding='utf-8', $type=''){
if(_debug_) $xmlLoadTime = microtime_float();
$dom = new DOMDocument($version, $encoding);
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
if($type == '') $type = $this->findType($val);
if($val != ''){
switch ($type) {
case 'normal':
$dom->loadxml("<?xml version=\"".$version."\" encoding=\"".$encoding."\" ?>".$val);
break;
case 'url':
case 'localhost':
$dom->load($val);
break;
}
}
$dom->type = $type;
if(_debug_) $GLOBALS["xmlLoadTime"] += bcsub(microtime_float(), $xmlLoadTime, 4);
return $dom;
}
final protected function save(DOMDocument $dom, $fileName){
switch ($dom->type) {
case 'localhost':
case 'normal':
$dom->save($fileName);
break;
}
}
final public function stand_by_save($key, $fileName=''){
if($this->isKey($key)){
switch ($this->loadKey($key)->type) {
case 'localhost':
self::$stand_by_save[$key] = $key;
return true;
break;
case 'normal':
self::$stand_by_save[$key] = $fileName;
return true;
break;
}
}
return false;
}
final public function __destruct(){
foreach(self::$stand_by_save as $key => $val) $this->save($this->loadKey($key), $val);
}
}<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]</div>
댓글 1개
넓은마인드
14년 전
써보고 답글 다시 적을께요.~
좋은 팁 감사합니다
좋은 팁 감사합니다
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 3430 | 14년 전 | 1985 | ||
| 3429 | 14년 전 | 1403 | ||
| 3428 |
카프카07
|
14년 전 | 1872 | |
| 3427 | 14년 전 | 1506 | ||
| 3426 | 14년 전 | 1335 | ||
| 3425 | 14년 전 | 1001 | ||
| 3424 | 14년 전 | 962 | ||
| 3423 | 14년 전 | 1179 | ||
| 3422 | 14년 전 | 1421 | ||
| 3421 | 14년 전 | 5946 | ||
| 3420 | 14년 전 | 1487 | ||
| 3419 | 14년 전 | 1199 | ||
| 3418 | 14년 전 | 1247 | ||
| 3417 | 14년 전 | 830 | ||
| 3416 | 14년 전 | 1012 | ||
| 3415 | 14년 전 | 1616 | ||
| 3414 |
elsarose
|
14년 전 | 1079 | |
| 3413 | 14년 전 | 741 | ||
| 3412 | 14년 전 | 1277 | ||
| 3411 | 14년 전 | 1345 | ||
| 3410 | 14년 전 | 1669 | ||
| 3409 | 14년 전 | 996 | ||
| 3408 | 14년 전 | 4570 | ||
| 3407 | 14년 전 | 1159 | ||
| 3406 | 14년 전 | 1131 | ||
| 3405 | 14년 전 | 1149 | ||
| 3404 | 14년 전 | 1349 | ||
| 3403 | 14년 전 | 1159 | ||
| 3402 |
네비플러스
|
14년 전 | 898 | |
| 3401 | 14년 전 | 970 | ||
| 3400 | 14년 전 | 1409 | ||
| 3399 | 14년 전 | 719 | ||
| 3398 | 14년 전 | 1291 | ||
| 3397 |
아이피마스터
|
14년 전 | 1281 | |
| 3396 | 14년 전 | 1365 | ||
| 3395 |
kimam
|
14년 전 | 4107 | |
| 3394 |
kimam
|
14년 전 | 1352 | |
| 3393 | 14년 전 | 1050 | ||
| 3392 | 14년 전 | 1473 | ||
| 3391 | 14년 전 | 1640 | ||
| 3390 |
|
14년 전 | 840 | |
| 3389 |
sooram
|
14년 전 | 2081 | |
| 3388 | 14년 전 | 2060 | ||
| 3387 | 14년 전 | 1645 | ||
| 3386 |
|
14년 전 | 1602 | |
| 3385 | 14년 전 | 1107 | ||
| 3384 | 14년 전 | 1599 | ||
| 3383 |
보헤미안7
|
14년 전 | 1533 | |
| 3382 | 14년 전 | 1236 | ||
| 3381 |
wldus
|
14년 전 | 965 | |
| 3380 |
wldus
|
14년 전 | 2709 | |
| 3379 | 14년 전 | 2028 | ||
| 3378 |
보헤미안7
|
14년 전 | 1388 | |
| 3377 | 14년 전 | 2038 | ||
| 3376 |
네비플러스
|
14년 전 | 914 | |
| 3375 | 14년 전 | 1020 | ||
| 3374 | 14년 전 | 1644 | ||
| 3373 | 14년 전 | 1750 | ||
| 3372 | 14년 전 | 1344 | ||
| 3371 |
호박둥구리
|
14년 전 | 1034 | |
| 3370 | 14년 전 | 1196 | ||
| 3369 |
열라바보숑
|
14년 전 | 1123 | |
| 3368 | 14년 전 | 1985 | ||
| 3367 | 14년 전 | 2114 | ||
| 3366 | 14년 전 | 1986 | ||
| 3365 | 14년 전 | 1118 | ||
| 3364 | 14년 전 | 1688 | ||
| 3363 | 14년 전 | 1746 | ||
| 3362 | 14년 전 | 1860 | ||
| 3361 |
|
14년 전 | 3634 | |
| 3360 |
호피무늬쫄티
|
14년 전 | 1179 | |
| 3359 |
|
14년 전 | 1967 | |
| 3358 |
DreamT
|
14년 전 | 893 | |
| 3357 | 14년 전 | 1021 | ||
| 3356 | 14년 전 | 858 | ||
| 3355 | 14년 전 | 1324 | ||
| 3354 |
sooram
|
14년 전 | 1777 | |
| 3353 | 14년 전 | 1315 | ||
| 3352 | 14년 전 | 1167 | ||
| 3351 | 14년 전 | 837 | ||
| 3350 | 14년 전 | 1810 | ||
| 3349 | 14년 전 | 1377 | ||
| 3348 | 14년 전 | 932 | ||
| 3347 | 14년 전 | 2317 | ||
| 3346 | 14년 전 | 1433 | ||
| 3345 | 14년 전 | 1356 | ||
| 3344 | 14년 전 | 888 | ||
| 3343 |
visualp
|
14년 전 | 1751 | |
| 3342 |
abetterday
|
14년 전 | 2726 | |
| 3341 |
|
14년 전 | 1225 | |
| 3340 |
|
14년 전 | 610 | |
| 3339 | 14년 전 | 2177 | ||
| 3338 |
|
14년 전 | 1947 | |
| 3337 | 14년 전 | 903 | ||
| 3336 | 14년 전 | 1476 | ||
| 3335 | 14년 전 | 1656 | ||
| 3334 | 14년 전 | 1510 | ||
| 3333 | 14년 전 | 883 | ||
| 3332 |
sooram
|
14년 전 | 844 | |
| 3331 | 14년 전 | 1141 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기