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년 전
써보고 답글 다시 적을께요.~
좋은 팁 감사합니다
좋은 팁 감사합니다
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 3830 | 14년 전 | 929 | ||
| 3829 | 14년 전 | 1676 | ||
| 3828 | 14년 전 | 954 | ||
| 3827 |
방황하는중년
|
14년 전 | 903 | |
| 3826 |
|
14년 전 | 1638 | |
| 3825 | 14년 전 | 874 | ||
| 3824 | 14년 전 | 722 | ||
| 3823 | 14년 전 | 735 | ||
| 3822 |
level999
|
14년 전 | 830 | |
| 3821 | 14년 전 | 1015 | ||
| 3820 |
TzM위드컴
|
14년 전 | 935 | |
| 3819 | 14년 전 | 988 | ||
| 3818 |
base64
|
14년 전 | 1097 | |
| 3817 |
base64
|
14년 전 | 962 | |
| 3816 | 14년 전 | 2237 | ||
| 3815 | 14년 전 | 1865 | ||
| 3814 |
|
14년 전 | 2535 | |
| 3813 | 14년 전 | 502 | ||
| 3812 | 14년 전 | 808 | ||
| 3811 | 14년 전 | 1066 | ||
| 3810 | 14년 전 | 670 | ||
| 3809 |
스님꼬신수녀
|
14년 전 | 652 | |
| 3808 | 14년 전 | 1455 | ||
| 3807 | 14년 전 | 1265 | ||
| 3806 | 14년 전 | 2369 | ||
| 3805 | 14년 전 | 1262 | ||
| 3804 | 14년 전 | 850 | ||
| 3803 | 14년 전 | 3369 | ||
| 3802 | 14년 전 | 1591 | ||
| 3801 | 14년 전 | 1005 | ||
| 3800 | 14년 전 | 1357 | ||
| 3799 | 14년 전 | 716 | ||
| 3798 |
커피는막심
|
14년 전 | 1840 | |
| 3797 | 14년 전 | 772 | ||
| 3796 | 14년 전 | 1206 | ||
| 3795 | 14년 전 | 711 | ||
| 3794 |
방황하는중년
|
14년 전 | 1244 | |
| 3793 | 14년 전 | 1479 | ||
| 3792 | 14년 전 | 993 | ||
| 3791 | 14년 전 | 782 | ||
| 3790 | 14년 전 | 1004 | ||
| 3789 | 14년 전 | 931 | ||
| 3788 | 14년 전 | 1950 | ||
| 3787 | 14년 전 | 1113 | ||
| 3786 | 14년 전 | 814 | ||
| 3785 | 14년 전 | 710 | ||
| 3784 | 14년 전 | 1321 | ||
| 3783 | 14년 전 | 2616 | ||
| 3782 | 14년 전 | 705 | ||
| 3781 |
|
14년 전 | 2538 | |
| 3780 |
헬프데스크
|
14년 전 | 1659 | |
| 3779 |
방황하는중년
|
14년 전 | 897 | |
| 3778 |
|
14년 전 | 1098 | |
| 3777 |
|
14년 전 | 1004 | |
| 3776 |
스누피사랑
|
14년 전 | 987 | |
| 3775 |
silver31
|
14년 전 | 500 | |
| 3774 |
|
14년 전 | 714 | |
| 3773 | 14년 전 | 812 | ||
| 3772 |
|
14년 전 | 1174 | |
| 3771 | 14년 전 | 871 | ||
| 3770 | 14년 전 | 1227 | ||
| 3769 | 14년 전 | 1010 | ||
| 3768 |
Dokjin
|
14년 전 | 1111 | |
| 3767 |
Dokjin
|
14년 전 | 713 | |
| 3766 | 14년 전 | 1023 | ||
| 3765 |
|
14년 전 | 919 | |
| 3764 | 14년 전 | 800 | ||
| 3763 | 14년 전 | 689 | ||
| 3762 | 14년 전 | 1171 | ||
| 3761 |
쉽다zzz
|
14년 전 | 1581 | |
| 3760 |
gtm100
|
14년 전 | 936 | |
| 3759 |
원시인교주
|
14년 전 | 778 | |
| 3758 | 14년 전 | 3316 | ||
| 3757 | 14년 전 | 841 | ||
| 3756 | 14년 전 | 730 | ||
| 3755 | 14년 전 | 2125 | ||
| 3754 | 14년 전 | 1511 | ||
| 3753 | 14년 전 | 2025 | ||
| 3752 | 14년 전 | 592 | ||
| 3751 | 14년 전 | 853 | ||
| 3750 |
방황하는중년
|
14년 전 | 713 | |
| 3749 |
hopeone
|
14년 전 | 545 | |
| 3748 | 14년 전 | 633 | ||
| 3747 | 14년 전 | 750 | ||
| 3746 | 14년 전 | 1501 | ||
| 3745 | 14년 전 | 868 | ||
| 3744 | 14년 전 | 908 | ||
| 3743 | 14년 전 | 535 | ||
| 3742 | 14년 전 | 1069 | ||
| 3741 | 14년 전 | 1659 | ||
| 3740 |
매너천사12
|
14년 전 | 1048 | |
| 3739 |
SGFlash
|
14년 전 | 1380 | |
| 3738 |
C2HGroup
|
14년 전 | 903 | |
| 3737 | 14년 전 | 1039 | ||
| 3736 | 14년 전 | 789 | ||
| 3735 | 14년 전 | 1110 | ||
| 3734 | 14년 전 | 1003 | ||
| 3733 | 14년 전 | 417 | ||
| 3732 | 14년 전 | 557 | ||
| 3731 | 14년 전 | 637 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기