Question

This is for an Alfred Workflow I'm building. It's my first one.

I'm creating functions with multiple return values. I need to return an array with multiple values so I am trying to make an array in each function and then access the return values via an associative array on the index page. Is there a better way to do this? Am I doing it correctly? I can't seem to get it to output.


functions.php

function firstRun()
{
    // Check to make sure the data folders exist; otherwise, make them.
    check_data_folder( $w->data() );

    // Define the settings file path.
    $settings_file = $w->data() . "/settings.json";


    // Checks to see if the settings file exists and is valid
    $check = check_settings( $settings_file );

    // Check for user error
    if ( $check === 'user' ) {
        // Username not set, so, make them set it.
        call_set_username();
        die();

    }

    // Check for password error
    if ( $check === 'password' ) {
        // No password was set, so make them set it.
        call_set_password();
    }



    // ------------------------------------------------------------------
    // DID I DO THIS CORRECTLY?
    $output = 
    [
        // Read the settings file into an associative array so that we can use it.
        'settings' => json_decode( file_get_contents( $settings_file ) , TRUE );

        // grab the username
        'username' => $settings['username'];

        // grab and decrypt the password
        'password' => decrypt_string( $settings['password'] );
    ];
    return $ouput;
    // ------------------------------------------------------------------
}

/**
  * Pulls the Data out of the JSON file and stores it in an array called $gists
  * 
  * @return boolean TRUE
  */
 function json_to_array( $data )
  {
        // ------------------------------------------------------------------
        // DID I DO THIS CORRECTLY?
        $output = 
        [
            // Cache is still fresh, so why not use it?
            'gists' => json_decode( file_get_contents( $data ) , TRUE ),
            // use the cache
            'usecache' => TRUE
        ];
        return $ouput;
        // ------------------------------------------------------------------

   }

index.php

 // Run through an initial check to make sure
 $firstRun = firstRun();
 // 1: The data files and folders exist

 // 2: Settings file exists and set it as an associative array
 $settings = $firstRun['settings'];

 // 3: The User has input their Username
 $username = $firstRun['username'];

 // 4: The User has input their Password
 $password = $firstRun['password'];



// If the data folders & files exist locally
if ( check_data_folder( $w->data() ) ):

    $data = $w->data() . "/gist-cache.json";

    // And they are not fresh
    if (! is_fresh( $data ) ):

        // Then Update the local gists
        update_local_data();

    // Otherwise
    else:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// DID I DO THIS CORRECTLY?

        // Store the output into an associative array called $array
        $array = json_to_array( $data );

        // Then store the gist data into an array called $gists
        $gists = $array['gists'];

        // And relay whether the local cache was used or not
        $usecache = $array['usecache']; // Boolean

        // return $array;  // (A) Do I need to return this array like this?
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    endif;

endif;
Was it helpful?

Solution

Use commas instead of semicolons for array declaration. You should use array() syntax to be compatible with lower versions of PHP.

$output = array(

    // Read the settings file into an associative array so that we can use it.
    'settings' => json_decode( file_get_contents( $settings_file ) , TRUE ), // <- Commas not semicolons

    // grab the username
    'username' => $settings['username'], // <- Commas not semicolons

    // grab and decrypt the password
    'password' => decrypt_string( $settings['password'] )
);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top