Validação CPF com Expressão Regular e jQuery

Abaixo segue uma função de validar CPF com poucas linhas, utilizando Expressão Regular e jQuery.

/* Valida CPF */
            function isCPF(value) {
                value = jQuery.trim(value);
                cpf = value.replace(/\.|-|\//gi,''); // elimina .(ponto), -(hifem) e /(barra)
                while(cpf.length < 11) cpf = "0"+ cpf;
                var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
                var a = [];
                var b = new Number;
                var c = 11;
                for (i=0; i&lt;11; i++){
                    a[i] = cpf.charAt(i);
                    if (i < 9) b += (a[i] * --c);
                }
                if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
                b = 0;
                c = 11;
                for (y=0; y&lt;10; y++) b += (a[y] * c--);
                if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
                if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
                return true;
            }

Geração de PDF via PHP

Pesquisando sobre geração de PDF via PHP, encontrei a FPDF com características interessante, como segue abaixo.

O Que É o FPDF?

FPDF é uma classe PHP que permite gerar arquivos PDF com PHP puro, ou seja, sem usar a biblioteca PDFlib.

O “F” da FPDF é de FREE (livre): você pode usá-lo e modificá-lo para atender às suas necessidades.

O FPDF têm funções de alto nível. E abaixo são listadas suas principais características:

  • Define o formado e margens de folhas;
  • Página cabeçalho e rodapé gestão;
  • Quebra de página automática;
  • Automático de quebra de linha e texto justificação;
  • Suporte à imagem (JPEG, PNG e GIF);
  • Suporte a cores e links;
  • Suporte TrueType e a Codificação;
  • Compressão de Página

FPDF não requer nenhuma extensão (exceto para ativar compressão zlib e GD de apoio GIF).
Ele funciona com PHP 4 e PHP 5 (a versão mais recente exige pelo menos o PHP 4.3.10).

Referência: www.fpdf.org

Farei meus “testes” e volterei a postar o(s) resultados.

abraços.

Polimorfirmo – POO

Este é o primeiro artigo sobre Programação Orientada a Objetos, de uma série que pretendo publicar.

Polimorfismo:

Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura), mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse. A decisão sobre qual o método que deve ser selecionado, de acordo com o tipo da classe derivada, é tomada em tempo de execução, através do mecanismo de ligação tardia (Wikipedia).

Para demonstrar os conceitos de polimorfismo e método estático (método que pode ser aplicado à classe e não necessariamente a um objeto), suponhamos as seguintes classes java:

public abstract class Operacao {
public abstract double calcular(int x, int y);
}

A classe Operacao (acima) é uma classe abstrata que representa qualquer operação matemática (soma, subtração, divisão e multiplicação).

Definiremos a seguir as subclasses Soma, Subtracao, Divisao e Multiplicacao que têm  a classe Operacao como “classe pai”.

public class Soma extends Operacao {
    public double calcular(int x, int y){
      double soma = x+y;
      return soma;
    }
}
 
public class Subtracao extends Operacao {
public double calcular(int x, int y){
return x-y;
}
}
 
public class Divisao extends Operacao {
   public double calcular(int x, int y){
     return x/y;
   }
}
 
public class Multiplicacao extends Operacao {
   public double calcular(int x, int y ){
     return x * y;
   }
}

A classe Contas (abaixo) como o método estático (static) mostrarCalculo.

public class Contas {
 
  public static void mostrarCalculo(Operacao operacao, int x, int y){
 
    System.out.println(“O resultado da é:+ operacao.calcular(x, y));
 
  }
 
}

Na classe Executa (abaixo) é demonstrado o uso do polimorfismo e do uso dos métodos estáticos.

public class Executa {
 
// Método principal (executável)
 
   public static void main(String[] args) {
 
// Mostra a soma
 
   Contas.mostrarCalculo(new Soma(), 8, 9); //Imprime o valor: 17.0
 
// Mostra a subtracao
 
   Contas.mostrarCalculo(new Subtracao(), 12, 10); //Imprime o valor: 2.0
 
// Mostra a divisao
 
   Contas.mostrarCalculo(new Divisao(), 12, 2); //Imprime o valor: 6.0
 
// Mostra a multiplicação
 
   Contas.mostrarCalculo(new Multiplicacao(),23,23); //Imprime o valor: 529.0
 
   }
 
}

O método calcular está sendo chamando quatro vezes dentro do método mostrarCalculo, mas o tipo utilizado como parâmetro é diferente ( o objeto operação “assume diferentes formas”, o que equivale ao conceito do Polimorfismo em POO).

O método calcular está sendo chamando quatro vezes dentro do método mostrarCalculo, mas o tipo utilizado como parâmetro é diferente ( o objeto operação “assume diferentes formas”, o que equivale ao conceito do Polimorfismo em POO).