=====
PHP Survival Tips
=====
created: 2025-04-28
last modified: 2025-04-28

=====
*   it really helps, during debugging, to have included in
    your PHP:

    ini_set("display_errors", 1);
    error_reporting(E_ALL);

=====
*   when you get a completely blank screen as your PHP response,
    remember you can use the php command-line interface
    on nrs-projects to see if there's a parse error:

    $ php my-app.php

=====
*   I have found it useful to output p elements
    at intermediate points when I can't figure out *where*
    a bug is. (<p> before the while loop </p>,
               <p> DID connect </p>,
	       <p> called function blah with argument <?= $param ?>, etc.)

    *   (PHP's version of a debugging cout statement? 8-) )

=====
PHP SESSION-SANITY HELPERS
=====
*   draw a FINITE-STATE DIAGRAM to describe your desired web application's
    behavior!
    *   (see posted photo of informal finite state diagram for try-quad.php)

*   have a helper function for each state in your application
    logic
    *   have the first version of each be a STUB, a little
        working version of the function that just
        proclaims what you called
	*   (and including an anchor element to
	    your PHP to continue is also useful)

*   START the postback PHP for your application with an if-elseif 
    that just lays out the order these will be called,
    
    setting up a $_SESSION key to keep track of the current state

*   INCLUDE an else at the end of if-elseif "driving" the application
    that you HOPE you never reach, that outputs a warning p element
    and destroys the current session if you DO reach it

=====
REMINDER: a useful pattern in each state of a PHP application
    using sessions:
====
*   as you are writing the function FOR a state in your application:
	
    *   What information does this state need to GET (and SANITIZE/VALIDATE) 
        from a just-submitted FORM? (typically, from the $_POST array,
        if its method="post")

    *   What information from a PREVIOUS state does this state need to get 
        FROM the $_SESSION array?

    *   What information will a LATER state possibly need that this state 
        should ADD to (or update in) the $_SESSION array?

=====
*   browsers CAN be a *pain* when you try to view the source
    for a postback PHP using sessions -- I'm finding that, lately, both
    Chrome and Firefox are fetching the NEXT state when I'm
    trying to see the PHP-generated source in my browser for
    debugging!

    *   this MIGHT be a preference that can be set...?

    *   Safari, currently, is NOT doing this to me, so I am
        finding myself using that more!