Version: 1.00.00.0004

Type: Class

Category: Money

License: GNU General Public License

Description: This class will retrieve information from Yahoo's finance site and put it into a nice, usable, class variable for you to use elsewhere at your leisure. Example usage is in the class comments.



<?php
  // c.ticker.php
  // $version: 1.00.00.0004
  //
  // A portion of the phpcmx system under development by J. Marshall Presnell
  // GPL 2001 J Marshall Presnell (marshall@myself.com)
  //
  // Please let me know if you update this class or use it in your systems.
  //
  // -------------------------------------------------------------------------
  //
  // Retrieve information from Yahoo finance on a specific stock ticker symbol
  //
  // Usage example:
  //
  //  $s = new ticker();
  //  $s->get("MSFT");
  //  if ($s->lastTrade > $s->open) {
  //    print ("Bill made money today");
  //  }
  //
  // Note that this class is specifically designed to NOT do the fancy stuff
  // like displaying the data, that is up to the calling program.
  //
  // Some will undoubtedly question why I put this simple task in a class,
  // well.... it's because I plan to expand the class with more sophisticated
  // lookups including news, analyst's recommendations, and SEC filings.
  //
  // -------------------------------------------------------------------------

  // Prevent multiple inclusions so it is safe to include it pretty much anywhere.
  if (!defined("C_TICKER_PHP")) {
    define("C_TICKER_PHP", 1);

    class ticker {

      var  $ticker;
      var  $lastTrade;
      var  $lastTradeTime;
      var  $change;
      var  $open;
      var  $dayRange;
      var  $high;
      var  $low;
      var  $volume;
      var  $chartURL;

      // ========================================
      // Constructor
      // ========================================

      function ticker() {
        // No constructor requirements
      }

      function get($symbol) {

        // First, clear everything out...
        $this->ticker        = "";
        $this->lastTrade     = "";
        $this->lastTradeTime = "";
        $this->change        = "";
        $this->open          = "";
        $this->dayRange      = "";
        $this->volume        = "";
        $this->chartURL      = "";

        // Get the CSV data from the finance.yahoo.com site, do a quick open/read/close
        // operation. (Not too critical for low volume sites, but higher volume sites
        // will notice some small efficiency increase)

        $fp = fopen("http://quote.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgv&e=.csv", "r");
        $read = fread($fp, 2048);
        fclose($fp);

        // Remove all the quotes from the information        
        $read = str_replace("\"", "", $read);

        // Parse out the fields on comma boundaries to the $read array
        $read = explode(",", $read);

        // Now, populate the member variables
        $this->ticker        = $read[0];
        $this->lastTrade     = $read[1]; 
        $this->lastTradeTime = $read[2] . " " . $read[3];
        $this->open          = $read[5];
        $this->high          = $read[6];
        $this->low           = $read[7];
        $this->dayRange      = $read[7] . " - " . $read[6];
        $this->volume        = $read[8];
        $this->change        = $this->lastTrade - $this->open;
        $this->chartURL      ="http://ichart.yahoo.com/t?s=$this->ticker";
      }
    }
  }
?>