PHP - ARRAY_UNIQUE() - Remover valores duplicados


Precisa remover valores duplicados de um array? Não precisa criar nenhuma função para isso. O php tem uma prontinha pra você!

$felinos = ['gato', 'pantera', 'leão', 'lince', 'gato', 'tigre', 'pantera'];

$felinos = array_unique($felinos);

print_r($felinos);

Continuar lendo

Javascript - Qual é a diferença entre var e let?


É uma questão de escopo.

Mas o que é escopo?

Escopo diz respeito à disponibilidade de uma variável. No javascript existem três tipos de escopos, o global, local e o de bloco. Este último foi adicionado no ES6.

Escopo global

Quando você declara uma variável fora de uma função, ela terá o escopo global, independente dela ter sido declarada com var ou let.

var teste1 = 5;

let teste2 = 10

function func() {
  console.log(teste1); // 5
  console.log(teste2); // 10
}

Neste caso ser declarada com var ou let não influencia o escopo. Será global para ambas variáveis.

Escopo local

Quando uma variável é declarada dentro de uma função ela irá possuir o escopo global. Podendo ser utilizada apenas dentro da função.

function teste1(){
    var nome = “Bruno”;
    let sobrenome = “Passos”;
    console.log(nome); // Bruno
    console.log(sobrenome); // Passos
}

function teste2(){
    console.log(nome); // erro
    console.log(sobrenome); // erro
}

console.log(nome) // erro
console.log(sobrenome); // erro

Desta forma podemos ver que a variável declarada dentro da função com var ou let estará disponível apenas dentro da função.

Escopo de bloco

Aqui veremos a grande diferença entre var e let. Para entendermos como funciona os escopo de bloco precisamos saber primeiro o que é um bloco. De forma simples podemos dizer que um bloco é tudo que estiver entre chaves ({}). Vemos em estruturas de condição, de repetição e outras entidades que trabalham com blocos. Desta forma podemos concluir que uma variável com escopo de bloco, é uma variável que foi declarada dentro de um determinado bloco. Ou seja, dentro de if, for, while, etc…

A única forma declarar uma variável dentro do escopo de bloco é utilizando a variável let.

var nota1 = 8;
var nota2 = 5;

if (nota1 >= 7) {
  let resultado1 = "Aprovado";
  console.log(resultado1); // Aprovado
}

console.log(resultado1); // erro

if (nota2 < 7) {
  var resultado2 = "Reprovado";
  console.log(resultado2); // Reprovado
}

console.log(resultado2); // Reprovado

function func() {
  console.log(resultado1); // erro
  console.log(resultado2); // Reprovado
}

Agora vemos que a variável que foi declarada com let dentro do if só pode ser acessada dentro dele, enquanto que a que foi declarada com var dentro de outro if também pode ser acessada de outros lugares.


Continuar lendo

Converter string de data para date em AngularJS


Algumas vezes podemos querer utilizar um dado do back-end para um componente de date sem usar o ajax conforme abaixo.

<input type="date" name="data" class="form-control" ng-model="data" ng-init="data=<?php echo $data;?> >

Porém este código irá retornar o erro abaixo:

Expected `0000-00-00` to be a date

Isso acontece porque em um input do tipo date o angular não aceita que seja string e erpara que seja um date do javascript.

Para resolver este problema você deve criar uma função em seu controle para realizar a conversão.

$scope.converteData = function(string){
    var array_data = string.split('-');
    var data = new Date(array_data[0], array_data[1]-1, array_data[2]);
    return data;
};

Agora chame a função em seu html da seguinte forma:

<input type="date" name="data" class="form-control" ng-model="data" ng-init="data=converteData('<?php echo $data;?>') >

Não esqueça das aspas simples em torno da tag do back-end

 


Continuar lendo


Visibilidade em PHP Orientado a Objetos


Visibilidade em orientação a objetos diz repeito a como os atributos e métodos podem ser acessados.

<?php

class Post{  
  public $tipo;
  private $data;
  protected $titulo;
  protected $resumo;
}

$post = new Post();

$post->tipo = "Teste de Tipo";

echo $post->tipo;

Na classe Post temos 4 atritubos com visibilidade diferentes. O único atributo que pode ser acessado pela instância da classe é o $tipo, pois o mesmo é public. Os demais atributos não podem ser acessados tendo em vista que são private e protected.

Então como fazemos para acessar esses atributos?

É muito simples. Basta utilizarmos métodos public.

<?php

class Post{  
  public $tipo;
  private $data;
  protected $titulo;
  protected $resumo;

  public function setTitulo($titulo){
     $this->titulo = $titulo;
  }

  public function getTitulo(){
     return $this->titulo;
  }
}

$post = new Post();

$post->tipo = "Back-end";

echo $post->tipo;

echo "
";

$post->setTitulo("Visibilidade em PHP Orientado a Objetos");

echo $post->getTitulo();

Desta forma utilizamos métodos public que irão setar e pegar o valor do atributo $titulo. Os métodos acessam o atributo utilisando o "$this->nome_do_atributo" . Tanto atributos protected quanto private precisam de métodos para serem acessados.

Então qual a diferença de protected para private?

A diferença é que métodos protected podem ser herdados por outras classes.

<?php

class Post{  
  public $tipo;
  private $data;
  protected $titulo;
  protected $resumo;

  public function setTitulo($titulo){
     $this->titulo = $titulo;
  }

  public function getTitulo(){
     return $this->titulo;
  }
}

class Artigo extends Post{
   private $descricao;

   public function setDescricao($descricao){
     $this->descricao = $descricao;
   }

   public function getDescricao(){
     return $this->descricao;
   }
}

$artigo = new Artigo();

$artigo->setTitulo("Visibilidade em PHP Orientado a Objetos");
echo $artigo->getTitulo();

$artigo->setDescricao("Aprenda como funciona a visibilidade em php orientado a objetos.");
echo $artigo->getDescricao();

Desta forma os atributos e métodos public e protected serão herdados da classe Post pela classe Artigo.

Criamos também um atributo e métodos novos para a descrição.

Importante também dizer que o atributo $data não será herdado, pois é um atributo private.


Continuar lendo