Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

A verdadeira função do homem é viver, não existir. Eu não gastarei os meus dias a tentar prolongá - los. Usarei o meu tempo. (Jack London)

10.1 - Components

10.1 - Componentes

 

Nunca desista porque encontrou um obstáculo! Os desafios são o tempero da vida!

 

O que é um Component segundo a documentação do CakePHP:

Os componentes são pacotes de lógica que são compartilhados entre controllers. O CakePHP vem com um conjunto fantástico de componentes que você pode usar para ajudar em várias tarefas comuns. Você também pode criar seus próprios componentes. Se você copia e cola parte de código entre controllers, você deve considerar criar seu próprio Component para conter essa funcionalidade. A criação de Componentes no CakePHP mantém o código dos controllers mais limpos e permite que você reutilize código entre controllers diferentes.

Documentação: https://book.cakephp.org/3.0/en/controllers/components.html#components

Os Components podem ser considerados como formas de criar pedaços reutilizáveis de código relacionado a controllers com uma característica específica ou conceito.

O CakePHP conta com vários componentes nativos:

AuthComponent

Cookie

Cross Site Request Forgery

Flash

Security

Pagination

Request Handling

 

FlashComponent, são usados nos controllers para criar mensagens flash para o $_SESSION, para serem renderizadas em uma View usando FlashHelper.

Criando uma mensagem flash:

// Uses src/Template/Element/Flash/success.ctp

$this->Flash->success('This was successful');

 

Usamos os métodos success() e error() do FlashComponent para definir uma mensagem que será armazenada numa variável de sessão.

Mensagem em texto plano

Também podemos criar uma mensagem em texto plano no controller através do método set que será recebida na view respectiva com:

$this->Flash->set('Isto é uma mensagem somente texto');

Criando um Component

Para nosso exemplo, vamos criar um Component para criação de senhas com caracteres aleatórios. Para isso precisamos criar uma classe no diretório

src/Controller/Component/, um nome de component seguindo a convenção do cake seria algo como: MinhaClasseComponent.php que extende da classe Component. Como umas das filosofias do nosso Framework favorito é facilitar o trabalho, podemos usar o PHP CLI(command line inteface) ou vulgarmente conhecido como Bake.

Para executar o console do cake, precisamos simplesmente executar o código abaixo.

 

Carregar componentes

No método initialize() de um controller

$this->loadComponent('Flash');

$this ->loadComponent('Auth');

 

Criação de um Componente

Criar o arquivo

src/Controller/Component/CalcularComponent.php, contendo:

<?php
namespace App\Controller\Component;

use Cake\Controller\Component;

class CalcularComponent extends Component
{
    public function soma($valor1, $valor2)
    {
        $s =$valor1 + $valor2;
		return $s;
    }
}

Adicionar uma chamada no método initialize() do src/Controller/AppController

 

Executar num action, como o src/Controller/ClientesController.php

public function index()

{

print 'Componente Soma: '.$this->Calcular->soma(2,3);

 

Estando no AppController ele será visto por todos os demais controllers e seus métodos estarão disponíveis logo que cada controller seja executado.

Caso queira que apenas um controller tenha acesso ao mesmo, insira o método initialize() no início deste controller assim :

public function initialize()

{

parent::initialize();

$this->loadComponent('Calcular');

}

Exemplos de Componentes Simples

<?php
/**
 * Component Calculo
 * For CakePHP 3.x
 * Autor: Ribamar FS
 *
 * This component allow access control to each action from application with web interface.
 *
 * Licenced with The MIT License
 * Redistributions require keep copyright below.
 *
 * @copyright     Copyright (c) Ribamar FS (http://ribafs.org)
 * @link          http://ribafs.org
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */

namespace App\Controller\Component;
use Cake\Controller\Component;

class CalculoComponent extends Component{

	private $um;
	private $dois;

	public function soma($um,$dois){
		return ($um + $dois);
	}

	public function subtracao($um,$dois){
		return ($um - $dois);
	}
	
	public function multiplicacao($um,$dois){
		return ($um * $dois);
	}	

	public function divisao($um,$dois){
		return ($um / $dois);
	}
	
}

Exemplos Práticos com o CakePHP 3

https://www.tutorialspoint.com/cakephp/index.htm

 

Bom exemplo de criação de plugin

https://www.cakephpbrasil.com.br/tutorial/2017/03/07/criando-components-no-cakephp-3/

 

Padrões para a criação de um bom plugin para o CakePHP 3

https://www.cakedc.com/plugin-standard

 

Mais detalhes

https://book.cakephp.org/3.0/en/controllers/components.html

 

Comments fornecido por CComment

Novo Testamento

Porque Cristo não entrou num santuário feito por mãos, figura do verdadeiro, porém no mesmo céu, para agora comparecer por nós perante a face de Deus;
(Hb, 9:24)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper