[Informação] Zend Framework

Olá a todos,

Estou abrindo este topico, só para informação pessoal, e experiência própria.

Passei dificuldades de fazer integração de algumas rede sociais em um novo projeto que estou fazendo.

Existem algumas extensões no próprio Yii Framework que ajuda em algumas integração, mais tem uma extensão que tinha 28MB de arquivo, que eu somente ia usar 1 serviço dos N que existia nessa extensão.

Bom vi alguns Cookbook, de integração com outros framework, e tem 2 no wiki que são exemplos com Zend Framework.

Minha primeira integração foi com o Youtube, usando o Zend_Gdata:




class boxRedeSocial extends CWidget {


    public function init() {

        Yii::import('application.vendors.*');

        require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path

    }


    public function run() {

            Zend_Loader::loadClass('Zend_Gdata_YouTube');

            $yt = new Zend_Gdata_YouTube();

            foreach ($yt->getuserUploads('youtube_user') as $video) {

                    echo $video->getVideoTitle();

            }

    }

}



Simples, prático, rápido e funcional.

Até ae tudo bem, so que eu precisava mostrar Twitter (com Oauth), esse passei uns apuro testando e procurando uma Class simples e funcional e não encontrei, ai fui atrás de usar o Zend_Gdata e coloquei para rodar e funciono normal.

Ae depois fui atras para ver se o Zend_Service funcionava no Yii Framework, pelo motivo de ele ter umas serviço de conexão com algumas rede sociais, mais não achei NADA no Google, no Forum do Yii, falando pelo menos um ‘Sim funciona, se vira!’.

Baixei o Zendo Framework, upei a pasta toda (28MB) :(

E fui fazer o teste:




class boxRedeSocial extends CWidget {


    public function init() {

        Yii::import('application.vendors.*');

        require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path

    }


    public function run() {

	

		Zend_Loader::loadClass('Zend_Service_Twitter');

		Zend_Loader::loadClass('Zend_Oauth_Token_Access');

		

		$token = new Zend_Oauth_Token_Access;

        $token->setParams(array(

            'oauth_token' => 'twitter_oauth_token',

            'oauth_token_secret' => 'twitter_oauth_token_secret'

        ));


        $client = $token->getHttpClient(array(

                    'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,

                    'version' => '1.0',

                    'signatureMethod' => 'HMAC-SHA1',

                    //'callbackUrl' => 'http://localhost/dummyurl',

                    'requestTokenUrl' => 'http://twitter.com/oauth/request_token',

                    'accessTokenUrl' => 'http://twitter.com/oauth/access_token',

                    'userAuthorizationUrl' => 'http://twitter.com/oauth/authorize',

                    'consumerKey' => 'twitter_consumerKey',

                    'consumerSecret' => 'twitter_consumerSecret',

                ));


        $client->setUri('http://twitter.com/statuses/user_timeline.json');

        $client->setMethod(Zend_Http_Client::GET);

        $client->setParameterGet('screen_name', 'twitter_screen_name');

        $client->setParameterGet('count', 'twitter_quant');

        $response = $client->request();


        $tweets = json_decode($response->getBody());


        foreach ($tweets as $tweet) {

            echo '<a href="http://twitter.com/#!/' . $tweet->user->screen_name . '/">@' . $tweet->user->screen_name . ' ' . $tweet->text . '. ' . date('d/m', strtotime($tweet->created_at));

        }

    }

}



PRONTO! Funciono de PRIMEIRA!

Ai fui atras do Flickr:




class boxRedeSocial extends CWidget {


    public function init() {

        Yii::import('application.vendors.*');

        require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path

    }


    public function run() {

		Zend_Loader::loadClass('Zend_Service_Flickr');

		$flickr = new Zend_Service_Flickr('flickr_key');

		$results = $flickr->userSearch('flickr_username');

		foreach ($results as $result) {

				echo CHtml::link(CHtml::image($result->Square->uri, $result->title, array('width' => 53)), $result->Small->clickUri, array('target' => '_blank'));

		}

    }

}



Precisava do Blogger agora:

http://framework.zend.com/svn/framework/standard/trunk/demos/Zend/Gdata/Blogger.php

Não implantei, estou esperando dados do cliente.

Um outro detalhes, dos 28MB das pasta /Zend/ consegui reduzir para 14MB, removi os outro componentes que não ia usar.

Bom é isso, acho que os Services do Zend Framework, junto com o Yii Framwework, deixa a aplicação mais rica e completa que existe.

Muito bom cara! Valeu por compartilhar

O Zend apesar de nunca ter trabalhado com ele sempre encontro umas classes muito util. Acho que já tinha visto essas mas nunca usei.

Gostei de ver a implementação do CWidget… show demais o Yii :D

Valeu Panurge!

Enquanto não tem esses Services integrado no Core do Framework, e uma ótima alternativa.