Ticket #585 (closed defect: fixed)

Opened 23 months ago

Last modified 23 months ago

플러그인 설정에서 0이 허용되지 않는 문제

Reported by: creorix Owned by: inureyes
Priority: major Milestone: 1.5.1
Component: Core Version: 1.5
Keywords: plugin Cc: dev@…
Release:

Description

  • 현재 플러그인 설정에서 단순히 값을 empty로 비교하기 때문에 value에 0을 허용하지 않고 있습니다. (0을 넣을 경우 빈 문자로 나타남)
  • 값이 비어 있는지 확인하고 비어 있으면 기본값을 대입하는 구조가 반복되므로 이를 따로 함수로 빼는 것이 좋겠습니다.

Change History

  Changed 23 months ago by creorix

[4257]

  • 확인 부탁드립니다.

  Changed 23 months ago by inureyes

  • status changed from new to assigned

  Changed 23 months ago by inureyes

  • status changed from assigned to closed
  • resolution set to fixed

[4269] 반영했습니다.

  Changed 23 months ago by graphittie

  • status changed from closed to reopened
  • resolution fixed deleted

follow-up: ↓ 7   Changed 23 months ago by graphittie

  Changed 23 months ago by graphittie

  • status changed from reopened to closed
  • resolution set to fixed

in reply to: ↑ 5   Changed 23 months ago by creorix

Replying to graphittie:

* [4273] * [4269] 에러 수정.

자꾸 점이 빠지네요. 죄송합니다 ㅜ

follow-up: ↓ 9   Changed 23 months ago by inureyes

  • status changed from closed to reopened
  • resolution fixed deleted

이렇게 루틴을 묶으면 문제가 있습니다.

  1. treatDefaultValue에 들어가는 $value 자체가 정의가 안되는 경우들이 있습니다. 그 경우 Undefined index 워닝이 납니다.
  2. 정의가 되었는지 안되었는지 판단하는 함수를 사용할 경우 그 함수를 부르는 과정에서 판단을 위한 변수명을 넘기는 부분 자체가 warning이 됩니다.
  3. 따라서 이 부분은 하나로 묶는 것은 PHP에선 warning 없이 불가능해 보입니다.

in reply to: ↑ 8 ; follow-up: ↓ 10   Changed 23 months ago by inureyes

Replying to inureyes:

이렇게 루틴을 묶으면 문제가 있습니다. 1. treatDefaultValue에 들어가는 $value 자체가 정의가 안되는 경우들이 있습니다. 그 경우 Undefined index 워닝이 납니다. 1. 정의가 되었는지 안되었는지 판단하는 함수를 사용할 경우 그 함수를 부르는 과정에서 판단을 위한 변수명을 넘기는 부분 자체가 warning이 됩니다. 1. 따라서 이 부분은 하나로 묶는 것은 PHP에선 warning 없이 불가능해 보입니다.

creorix님 확인해 보세요

in reply to: ↑ 9 ; follow-up: ↓ 11   Changed 23 months ago by creorix

Replying to inureyes:

Replying to inureyes:

이렇게 루틴을 묶으면 문제가 있습니다. 1. treatDefaultValue에 들어가는 $value 자체가 정의가 안되는 경우들이 있습니다. 그 경우 Undefined index 워닝이 납니다. 1. 정의가 되었는지 안되었는지 판단하는 함수를 사용할 경우 그 함수를 부르는 과정에서 판단을 위한 변수명을 넘기는 부분 자체가 warning이 됩니다. 1. 따라서 이 부분은 하나로 묶는 것은 PHP에선 warning 없이 불가능해 보입니다.

creorix님 확인해 보세요

PHP에서 Undefined index는 Warning이 아니라 Notice입니다 :)

in reply to: ↑ 10 ; follow-up: ↓ 12   Changed 23 months ago by inureyes

Replying to creorix:

Replying to inureyes:

Replying to inureyes:

이렇게 루틴을 묶으면 문제가 있습니다. 1. treatDefaultValue에 들어가는 $value 자체가 정의가 안되는 경우들이 있습니다. 그 경우 Undefined index 워닝이 납니다. 1. 정의가 되었는지 안되었는지 판단하는 함수를 사용할 경우 그 함수를 부르는 과정에서 판단을 위한 변수명을 넘기는 부분 자체가 warning이 됩니다. 1. 따라서 이 부분은 하나로 묶는 것은 PHP에선 warning 없이 불가능해 보입니다.

creorix님 확인해 보세요

PHP에서 Undefined index는 Warning이 아니라 Notice입니다 :)

windows2000 / php5에서 에러로 처리된다고 합니다. ~

in reply to: ↑ 11   Changed 23 months ago by inureyes

Replying to inureyes:

windows2000 / php5에서 에러로 처리된다고 합니다. ~

에러가 아니라 에러'로그'가 남는거군요. :)

follow-up: ↓ 14   Changed 23 months ago by inureyes

[4288]

  • [4269] [4273] 관련하여 revert 및 다시 변환.
    • 기존의 구현을 더 strict하게 수정.
    • 테스트가 필요.
  • 대안이 없어보여서 도로 돌립니다~

in reply to: ↑ 13 ; follow-up: ↓ 16   Changed 23 months ago by creorix

Replying to inureyes:

[4288] * [4269] [4273] 관련하여 revert 및 다시 변환. * 기존의 구현을 더 strict하게 수정. * 테스트가 필요. * 대안이 없어보여서 도로 돌립니다~

어쩔 수 없는 것 같네요. (사실 제가 Windows 2000 + PHP5 환경에서 테스트할 수 있는 방법이 없어서-.-) 코드가 지저분하기는 하지만 대안이 없으니 티켓을 닫아도 좋을 것 같습니다 :)

  Changed 23 months ago by inureyes

  • status changed from reopened to closed
  • resolution set to fixed

in reply to: ↑ 14 ; follow-up: ↓ 17   Changed 23 months ago by gendoh

Replying to creorix:

Replying to inureyes:

[4288] * [4269] [4273] 관련하여 revert 및 다시 변환. * 기존의 구현을 더 strict하게 수정. * 테스트가 필요. * 대안이 없어보여서 도로 돌립니다~

어쩔 수 없는 것 같네요. (사실 제가 Windows 2000 + PHP5 환경에서 테스트할 수 있는 방법이 없어서-.-) 코드가 지저분하기는 하지만 대안이 없으니 티켓을 닫아도 좋을 것 같습니다 :)

  • 그냥 변수는 isset으로 테스트 가능
  • 어레이의 경우 array_key_exists로 확인 가능
  • undefined가 워닝인 이유는 심각한 문제인데 이거 에러로 처리했다간 돌아갈 프로그램이 없으니까요.
    • 해당 변수가 전달되었을 때 어떤 side effect가 일어날지 모릅니다. 사실 그 이펙트 분석할 시간에 확인 코드 넣어버리죠 -ㅅ-

in reply to: ↑ 16 ; follow-up: ↓ 18   Changed 23 months ago by creorix

Replying to gendoh:

Replying to creorix:

Replying to inureyes:

[4288] * [4269] [4273] 관련하여 revert 및 다시 변환. * 기존의 구현을 더 strict하게 수정. * 테스트가 필요. * 대안이 없어보여서 도로 돌립니다~

어쩔 수 없는 것 같네요. (사실 제가 Windows 2000 + PHP5 환경에서 테스트할 수 있는 방법이 없어서-.-) 코드가 지저분하기는 하지만 대안이 없으니 티켓을 닫아도 좋을 것 같습니다 :)

* 그냥 변수는 isset으로 테스트 가능 * 어레이의 경우 array_key_exists로 확인 가능 * undefined가 워닝인 이유는 심각한 문제인데 이거 에러로 처리했다간 돌아갈 프로그램이 없으니까요. * 해당 변수가 전달되었을 때 어떤 side effect가 일어날지 모릅니다. 사실 그 이펙트 분석할 시간에 확인 코드 넣어버리죠 -ㅅ-

http://kr2.php.net/manual/kr/function.isset.php

array도 isset으로 테스트 가능합니다.

in reply to: ↑ 17 ; follow-up: ↓ 19   Changed 23 months ago by gendoh

Replying to creorix:

Replying to gendoh:

Replying to creorix:

Replying to inureyes:

[4288] * [4269] [4273] 관련하여 revert 및 다시 변환. * 기존의 구현을 더 strict하게 수정. * 테스트가 필요. * 대안이 없어보여서 도로 돌립니다~

어쩔 수 없는 것 같네요. (사실 제가 Windows 2000 + PHP5 환경에서 테스트할 수 있는 방법이 없어서-.-) 코드가 지저분하기는 하지만 대안이 없으니 티켓을 닫아도 좋을 것 같습니다 :)

* 그냥 변수는 isset으로 테스트 가능 * 어레이의 경우 array_key_exists로 확인 가능 * undefined가 워닝인 이유는 심각한 문제인데 이거 에러로 처리했다간 돌아갈 프로그램이 없으니까요. * 해당 변수가 전달되었을 때 어떤 side effect가 일어날지 모릅니다. 사실 그 이펙트 분석할 시간에 확인 코드 넣어버리죠 -ㅅ-

http://kr2.php.net/manual/kr/function.isset.php array도 isset으로 테스트 가능합니다.

  • two depth 체크인 경우 조심해야 합니다.
    <?php
    ini_set('display_errors','on');
    $a = array('.attrib' => ' ');
    
    if (isset($a['.attrib']['value'])) echo 'c';
    else echo 'a';
    
    echo "\r\n";
    ?>
    
  • 그리고 null이 어사인 된 경우라던가 해서 약간의 동작 차이를 보입니다.
  • 관련해서 윈도우 APM 환경에서 희안하게 동작했던 기억이 있는데 재현이 안되서 패스.
    • 아무튼 그때 이후로 어레이는 array_key_exists로 하는 버릇이 생겼습니다.

in reply to: ↑ 18   Changed 23 months ago by creorix

Replying to gendoh:

* two depth 체크인 경우 조심해야 합니다. {{{ <?php ini_set('display_errors','on'); $a = array('.attrib' => ' '); if (isset($a.attrib?value?)) echo 'c'; else echo 'a'; echo "\r\n"; ?> }}} * 그리고 null이 어사인 된 경우라던가 해서 약간의 동작 차이를 보입니다. * http://www.deformedweb.co.uk/php_variable_tests.php * 관련해서 윈도우 APM 환경에서 희안하게 동작했던 기억이 있는데 재현이 안되서 패스. * 아무튼 그때 이후로 어레이는 array_key_exists로 하는 버릇이 생겼습니다.

  • 그런 문제가 있네요. 단일 배열만 생각해서인지 그런 문제를 생각하지 못했던...
  • 그럼 다중 배열을 위해서 array_key_exists_recursive를 만들어서 사용하는 것은 어떤가요? 위의 예제같은 경우
    • XML 접근시처럼 Path로
      array_key_exists_recursive('.attrib/value', $a)
      
    • 또는 func_get_arg를 이용해서
      array_key_exists_recursive($a, '.attrib', 'value')
      
  • 위와 같이 검사할 수 있도록 하면 편할 것 같습니다. 이렇게 해도 문제가 발생하나요?

  Changed 23 months ago by jparker

[4366]

  • 플러그인 설정에서 textarea의 rows, cols의 값이 제대로 반영되지 못하는 문제 발생, revert과정에서 누락됨.

  Changed 23 months ago by jparker

[4389]

  • 플러그인 초기 설정에서 Textarea 기본값 가져오지 못하는 문제 수정
Note: See TracTickets for help on using tickets.