Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #16977

Re: PHP Warning: extract() expects parameter 1 to be array

From Jerry Stuckle <jstucklex@attglobal.net>
Newsgroups comp.lang.php
Subject Re: PHP Warning: extract() expects parameter 1 to be array
Date 2016-08-23 08:08 -0400
Organization A noiseless patient Spider
Message-ID <npheca$1dn$2@jstuckle.eternal-september.org> (permalink)
References (4 earlier) <210820161026199601%timstreater@greenbee.net> <87pop2unf0.fsf@bsb.me.uk> <10692138.PaQTzsjEax@PointedEars.de> <npg0vd$b3k$1@jstuckle.eternal-september.org> <87oa4kukc5.fsf@ahungry.com>

Show all headers | View raw


On 8/23/2016 1:26 AM, Matthew Carter wrote:
> Jerry Stuckle <jstucklex@attglobal.net> writes:
> 
>> On 8/22/2016 3:34 PM, the troll Thomas 'Pointed Head' Lahn wrote:
>>> Ben Bacarisse wrote:
>>>
>>>> […] I prefer the "more structured" version:
>>>>
>>>> if ($argc < 2)
>>>>     echo "Please, provide a path to a file\n";
>>>> else if (!file_exists($file))
>>>>     echo "Sorry, there is no such file $file\n";
>>>> else if (!is_readable($file))
>>>>     echo "$file is not readable\n";
>>>> ...
>>>> else if (($open_file = fopen($file, "r")) === false)
>>>>     echo "Sorry, couldn't open $file\n";
>>>> else {
>>>>     // All ok.  Let's get on with it...
>>>>
>>>>     while (...)
>>>>     {
>>>>     // Main work is here
>>>>     }
>>>> }
>>>
>>> This code style is a maintenance nightmare (the missing blocks and the 
>>> assignment in the “if” statement doubly so).  Do you know what the condition 
>>> on line 50 was because of which you wrote “else” on line 100?
>>>
>>
>> Yes - if the code is properly indented and commented (something you
>> wouldn't understand).
>>
>>> Also, PHP is influenced by C, but it is _not_ C.  The function should throw 
>>> (PHP Standard Library) exceptions like \InvalidArgumentException instead of 
>>> echo-ing error conditions without regard to the user’s locale.  This will 
>>> also get them a stack trace (even better if the Xdebug extension is 
>>> installed and enabled) if they do not catch the exception.  As a result, the 
>>> then-unnecessary “else” statements would vanish in a puff of program logic.
>>>
>>
>> Which would display to a user internal details of your code - a huge
>> security exposure.  But you don't understand security, either, do you?
>>
>> In addition, it will immediately stop processing of the page - resulting
>> in invalid HTML being sent to the browser.  Something else you don't
>> care about, either.
>>
>>> <http://php.net/manual/en/language.exceptions.php>
>>>
>>
>> Glad you can cut/paste a URL.  Too bad you don't understand how write
>> good PHP code.
> 
> Details of stack traces are only exposed if the environment
> (production?) is configured to match that of a developer environment
> (such as showing errors vs logging them).
> 
> It is also quite easy to wrap your outer-most layer of code input/output
> in a try/catch block and handle:
> 
> - Rendering a generic or descriptive error message for the user in the
>   catch block
> 
> - Manually logging the stack trace (part of the \Exception object) to a
>   file or sending as part of an email to the webmaster (if this is not
>   configurable in the php.ini of the server for some reason)
> 
> - Ensuring the HTML the user receives is still valid
> 
> This also allows for easier to extend code in the future, as you end up
> with a single exit point.
> 

You obviously didn't read Pointed Head's post, did you?

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
jstucklex@attglobal.net
==================

Back to comp.lang.php | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

PHP Warning:  extract() expects parameter 1 to be array Alla <modelling.data@gmail.com> - 2016-08-20 09:15 -0700
  Re: PHP Warning:  extract() expects parameter 1 to be array "R.Wieser" <address@not.available> - 2016-08-20 18:48 +0200
    Re: PHP Warning:  extract() expects parameter 1 to be array Alla <modelling.data@gmail.com> - 2016-08-20 10:16 -0700
      Re: PHP Warning: extract() expects parameter 1 to be array "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-20 19:28 +0200
        Re: PHP Warning: extract() expects parameter 1 to be array Alla <modelling.data@gmail.com> - 2016-08-20 11:00 -0700
      Re: PHP Warning:  extract() expects parameter 1 to be array "R.Wieser" <address@not.available> - 2016-08-20 21:05 +0200
    Re: PHP Warning:  extract() expects parameter 1 to be array Alla <modelling.data@gmail.com> - 2016-08-20 10:58 -0700
  Re: PHP Warning:  extract() expects parameter 1 to be array Tim Streater <timstreater@greenbee.net> - 2016-08-20 18:21 +0100
    Re: PHP Warning: extract() expects parameter 1 to be array "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-08-20 20:16 +0200
      Re: PHP Warning: extract() expects parameter 1 to be array "R.Wieser" <address@not.available> - 2016-08-20 21:26 +0200
        Re: PHP Warning: extract() expects parameter 1 to be array Tim Streater <timstreater@greenbee.net> - 2016-08-20 22:05 +0100
      Re: PHP Warning: extract() expects parameter 1 to be array Alla <modelling.data@gmail.com> - 2016-08-20 22:39 -0700
        Re: PHP Warning: extract() expects parameter 1 to be array Tim Streater <timstreater@greenbee.net> - 2016-08-21 10:26 +0100
          Re: PHP Warning: extract() expects parameter 1 to be array Jerry Stuckle <jstucklex@attglobal.net> - 2016-08-21 10:10 -0400
          Re: PHP Warning: extract() expects parameter 1 to be array Ben Bacarisse <ben.usenet@bsb.me.uk> - 2016-08-21 16:55 +0100
            Re: PHP Warning: extract() expects parameter 1 to be array Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-08-22 21:34 +0200
              Re: PHP Warning: extract() expects parameter 1 to be array Jerry Stuckle <jstucklex@attglobal.net> - 2016-08-22 19:13 -0400
                Re: PHP Warning: extract() expects parameter 1 to be array Matthew Carter <m@ahungry.com> - 2016-08-23 01:26 -0400
                Re: PHP Warning: extract() expects parameter 1 to be array Jerry Stuckle <jstucklex@attglobal.net> - 2016-08-23 08:08 -0400

csiph-web