Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Don Benatti

Aprenda Java ao se acostumar com estes conceitos em PHP

Recommended Posts

Este é um pequeno artigo que faço com a intenção de ajudar quem está apenas em PHP e deseja aprender Java.

 

Dicas:

  1. Programar orientado a objetos sempre.
  2. Não usar include, require para suas classes, ao invés disso, crie uma classe Loader para carregar suas outras classes.
  3. Utilizar namespaces, o não uso de namespaces no PHP tornará difícil o entendimento dos packages de Java.
  4. Ao utilizar namespaces você será forçado em alguns momentos a escrever "use" que em java será "import".
  5. (O mais importante) Aprender os tipos null, boolean, string, integer, double, float e object.
  6. Aprender o que é "public", "protected", "private'.
  7. Aprender o que é "final" e "static".

Se não souber os tipos, nunca vai aprender Java, linguagens da Microsoft e outras.

 

Como aprender tipos em php?

 

Uma forma de aprender os tipos em PHP é documentar as propriedades das classes e retorno dos métodos:

class ImastersForum
{
    /**
    * Para dizermos o tipo, escrevemos @var
    * @var string
    */
    private $php = "";

    /**
    * Escreva o nome completo e não apenas "int"
    * @var integer
    */
    private $java = 1;
    
    /**
    * Em Java isto é double, em PHP é float, ambos existem nas duas linguagens
    * @var float
    */
    private $css = 3.1;
    
    /**
    * Em PHP, false pode ser 0, string vazia "", null, e array vazio
    * Em PHP true pode ser 1, string "...", array(1)
    * Em Java é apenas true e false
    * @var boolean
    */
    private $asp = false;
    
    /*
    * Documentando o retorno de métodos, para isso, usamos @return
    * @return string
    */
    public function php()
    {
        return $this->php;
    }
    
    /*
    * @return integer
    */
    public function java()
    {
        return $this->java;
    }
    
    /*
    * @return float
    */
    public function css()
    {
        return $this->css;
    }
    
    /*
    * @return boolean
    */
    public function asp()
    {
        return $this->asp;
    }
}

Como aprender namespaces em php?

 

Imagine o fórum aqui pela URL forum.imasters.com.br, criaremos duas pastas, db e utils em "imasters/forum/i18n" e em "imasters/forum/utils".

 

Agora vamos criar duas classes, uma para "i18n" e outra para "utils" e utilizaremos namespaces:

 

imasters/forum/i18n

/**
* Criamos o namespace, deve vir antes de tudo
* Igual ao caminho das pastas, mas com barra invertida
* 
* Em Java, seria "package" e com .(ponto) ao invés da barra, exemplo, br.com.imasters.forum
* 
*/
namespace imasters\forum\i18n;

class Utf8
{
    
}

imasters/forum/utils

namespace imasters\forum\utils;

/**
* Aprendendo sobre "use"
* Quando precisar de uma classe que não está no mesmo local do namespace, escreva "use"

* Em Java seria "import"
* 
*/
use Countable;

class ArrayCount implements Countable
{
    
}

Instanciando essas classes

 

"No início o objeto era sem forma e vazio, o programador então disse "NEW", e criou-se um objeto, e ele viu que era bom"

use imasters\forum\i18n\Utf8; // O nome da classe na frente do "namespace"
use imasters\forum\utils\ArrayCount;

/**
* Em Java seria algo como: br.com.imasters.forum.i18n.Utf8
*/

$utf8 = new Utf8();

$arrayCount = new ArrayCount();

Como fazer para nunca precisar de include e require para suas classes

 

Para isso criamos uma outra "classe" para servir de "auto loader", precisará de um único include dessa "loader" uma única vez apenas na index.php do seu site.

 

Criando uma classe Loader:

 

Antes na index.php vamos definir o caminho da pasta root.

 

index.php

// Isto pode ser colocado em um arquivo separado e incluído em index.php
define('ROOT_PATH', str_replace("\\", "/", dirname(__FILE__)) . '/');

Loader.php

class Loader
{
    public function load($class)
    {
        /**
        * Substituímos a barra (\) do namespace pelo separador do sistema (/)
        */
        $filePath = ROOT_PATH . str_replace("\\", '/', $class) . ".php";
        
        $resolved_name = stream_resolve_include_path($filePath);
        
        if ($resolved_name !== false) {
            include $resolved_name;
        }
    }
    
    public function register()
    {
        spl_autoload_register(array($this, 'load'));
    }
}

Registramos dentro da index.php

 

index.php

include 'Loader.php';

// Registrando
(new Loader)->register();

Agora você precisa fazer com que todas as requisições do seu site passe pela index, para isso, estude sobre MVC.

Depois disso, nunca mais precisará de include para suas classes, bastará instanciá-las com o "namespace", como informei acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.