Benim uygulama için yardımcıyı oluşturma

0 Cevap php

Ben bir sürü kod yeniden önlemek için Facebook PHP API için bir yardımcı sınıf yaratıyor. Yardımcı çalışıyor ama tek sorun onun çok yavaş .. ve ben de neden anladım ki! Ben sınıf başlatmak zaman, yapıcı kez denir! Benim kod kontrol ve bu sınıfı kullanmak diğer elemanlar sadece bana sorun ne olabilir anlamaya yardım eder misiniz (Bu sınıf kendi içinde bir şey) bir kere diyoruz? Teşekkürler!

class FbHelper
{
    private $_fb;
    private $_user;

    function __construct()
    {
        // Initalize Facebook API with keys

        $this->_fb = new Facebook(array(
          'appId'  => 'xxxxxxxxxxx',
          'secret' => 'xxxxxxxxxxxxxxxxxxxxxx',
          'cookie' => true,
        ));

        // set the _user variable
        //
        $this->doLog("Called Constructor");
        //
        $this->_user = $this->UserSessionAuthorized();

        return $this;
    }

    function doLog($text)
    {
      // open log file  <----- THIS GETS CALLED TWICE EVERY TIME I INITIALIZE THE CLASS!!
      $filename = "form_ipn.log";
      $fh = fopen($filename, "a") or die("Could not open log file.");
      fwrite($fh, date("d-m-Y, H:i")." - $text\n") or die("Could not write file!");
      fclose($fh);
    }


    function getUser() { return $this->_user; }

    function getLoginUrl() { return $this->_fb->getLoginUrl(); }
    function getLogoutUrl() { return $this->_fb->getLogoutUrl(); }

    function UserSessionAuthorized()
    {
        // Checks if user is authorized, if is sends back user object

        $user = null;

        $session = $this->_fb->getSession();
        if (!$session) return false;
        try {
            $uid = $this->_fb->getUser();
            $user = $this->_fb->api('/me');
            if ($user) return $user;
            else return false;
            }
        catch (FacebookApiException $e) { return false; }
    }

    private function _rebuildSelectedFriends($selected_friends)
    {
        // Creates a new array with less data, more useful and less malicious

        $new = array();
        foreach ($selected_friends as $friend)
        {
            $f = array('id' => $friend['id'], 'name' => $friend['name']);
            $new[] = $f;
        }

        return $new;
    }

    function GetThreeRandomFriends()
    {
        $friends = $this->_fb->api('/me/friends');
        $n = rand(1, count($friends['data']) - 3);

        $selected_friends = array_slice($friends['data'], $n, 3);
        return $this->_rebuildSelectedFriends($selected_friends);
    }

    function UserExists($user_id)
    {
        try { $this->_fb->api('/' . $user_id . '/'); return true; }
        catch (Exception $e) { return false; }
    }

}

0 Cevap