Bora ajudar o programador a transformar café em código?

Curso de PHP Completo, Online e Grátis - Sumário

Siga os seguintes tutoriais na ordem:

Introdução ao PHP Básico

  1. PHP - O que é? Para que serve? Onde e como é usado?
  2. O necessário para começar a programar em PHP
  3. Olá, Mundo! (Hello, World!) em PHP
  4. Saída simples: echo e print
    Exercícios de saída simples
  5. Tipos de dados
  6. Variáveis
  7. Matemática: Operadores Aritméticos de Soma, Subtração, Multiplicação, Divisão e Resto da Divisão em PHP
  8. Recebendo dados via input do HTML para o PHP
    Calculadora simples
  9. Precedência de operadores
  10. Comentar código PHP
  11. Exercícios Básicos de PHP

Curso PHP Progressivo com certificado

Testes Condicionais em PHP

Laços e Loopings em PHP

Funções


Array em PHP

Programação Orientada a Objetos


Data e Tempo em PHP

  1. Como checar se uma data é válida: checkdate()
  2. Como exibir datas e horários em PHP: função date()
  3. Função mktime() e a Unix Timestamp
  4. Função getdate() - Obtendo datas e horários em PHP
  5. Função gettimeofday() - Obtendo tempo atual
  6. Função time() e date() juntas
  7. Data e Hora em português: setlocale() e strftime()
  8. Última modificação de página: getlastmod()
  9. Números de dia em um mês qualquer
  10. Calculando datas no futuro e no passado: strotime()
  11. Classe DateTime: Data e Tempo com orientação a objetos


    Tutoriais de PHP


    Curso PHP Progressivo


    Livro e Apostila PHP Progressivo

    Livro PHP Progressivo

    Gosta de um livro de verdade, real?
    Quer pegar e sentir o cheiro do papel?

    Agora você já pode estudar PHP através do livro mais completo sobre esta linguagem, no Brasil:

    Comprar baixar download livro PHP Progressivo

    Obter livro impresso

    Apostila PHP Progressivo

    Apostila completa de PHP para downloadEstudar pela apostila, possui diversas vantagens:
    1. Todo o conteúdo do site, na apostila
    2. Um único arquivo PDF, pequeno
    3. Conteúdo adicional, com soluções extras de exercícios
    4. Sem propaganda ou links
    5. Pode estudar offline (já estude muito em ônibus e viagens)
    6. Não precisa de internet
    7. Abre no PC, notebook, celular ou tablet
    8. Conteúdo organizado num sumário e menu lateral


    E o principal: você nos incentiva a continuar criando cada vez mais sites, comprando mais livros, fazendo mais cursos etc, de modo a termos a maior, melhor e mais completa coleção de sites voltados para o ensino da programação no Brasil


    Obter via PagSeguro

    Pedimos uma singela contribuição de apenas R$ 23,99 pelo material, para ajudar a manter o site e nos incentivar a criar cada vez mais conteúdo autenticamente brasileiro, fazendo com que mais brasileiros passem a se interessar pela programação:

    Pague com PagSeguro - é rápido, grátis e seguro!

    Ou via Pix: programacao.progressiva@gmail.com


    Apostila de PHP para download

    Baixar apostila de PHP


    MEGA PACK:
     Todas Apostilas

    Já imaginou ter em um pendrive ou na memória de seu celular  TUDO que você precisa para aprender computação, em todas as áreas, da melhor maneira, mais completa e voltada para iniciantes?

    Estudar Java, a linguagem mais importante do mercado de trabalho, que vai te permitir criar aplicativos para Android.

    Linguagem C, a linguagem que 'Deus' usou para criar o Universo? Aprender a língua que são feitos sistemas operacionais e entrar mais a fundo nas entranhas dos bits de seu computador?

    E HTML + CSS, para aprender criar sites ?
    Una isso ao JavaScript, linguagem para executar scripts e programas no navegador dos clientes?

    De quebra, aprender Python, a linguagem mais simples e fácil de aprender, que com pouco código você criar coisas fantásticas e extremamente poderosas?

    É nosso mega pack, todas apostilas:

    Apostila Java ProgressivoApostila C Progressivo


    Apostila JavaScript ProgressivoApostila HTML + CSS Progressivo


    Apostila Python Progressivo
    Apostila de PHP completo grátis para baixar

    Apostila grátis de C++

    Preço: R$ 69,99


    Dá 10 reais por apostila.

    Garanto que será o melhor e mais barato investimento da sua vida.
    Duvida? Estude pelas apostilas, se elas não te tornarem um(a) programador profissional, só avisar que estornamos seu dinheiro.

    A Classe DateTime - Trabalhando com Datas e Times com Orientação a Objetos

    Neste tutorial, vamos aprender como trabalhar com datas e tempo através da programação orientada a objetos em PHP.

    Estudar pela apostila de PHP


    Curso de PHP com certificado
    Obter meu certificado!

    Criando objetos da classe DateTime

    A classe DataTime provém uma série de métodos, atributos e possibilidades que nos permitem trabalhar de maneira muito mais fácil com datas e tempo, usando orientação a objetos.

    Vamos criar um objeto desta classe:
    $date = new DateTime();

    Se dermos um print_c($date);, veremos que no resultado é o atual, do momento da criação do objeto:
    DateTime Object (
    [date] => 2019-02-28 11:06:53.684238
    [timezone_type] => 3
    [timezone] => America/Sao_Paulo )

    É um objeto do momento atual, no momento que estou programando este tutorial.

    Construtor da classe DateTime

    Podemos, porém, já inicializar com uma data, no formato: ano-mes-dia, para criar um objeto com uma data específica.

    Vamos escolher uma data aleatória:
    $date = new DateTime("2020-02-28");

    O resultado da print_r($date); é:
    DateTime Object (
    [date] => 2019-02-28 00:00:00.000000
    [timezone_type] => 3
    [timezone] => America/Sao_Paulo )

    Formatando datas e horas: Método format()

    A classe DateTime possui o método format() que usa os mesmos parâmetros da função date(), assim podemo exibir o formato de data e hora do jeito que quisermos.

    Por exemplo, para exibirmos no formato brasileiro de: dd/mm/YYYY Hora:minuto:segundo, basta fazer:
    $date = new DateTime();
    echo $date->format( "d/m/Y H:i:s" );

    Somando e Subtraindo datas

    Que tal saber qual foi a data de 35 dias atrás?
    Basta fazer:

    $date = new DateTime('-35 days');
    echo $date->format( "d/m/Y H:i:s" );

    E qual data vai ser daqui 2 semanas e 10 dias?
    $date = new DateTime('+2 weeks 10 days');
    echo $date->format( "d/m/Y H:i:s" );

    Diferença entre datas: Método diff()

    Imagina calcular, de maneira instantânea a diferença de anos, meses, dias, horas, minutos e até segundos daqui até uma outra data?

    Vamos pegar a data atual:
    $hoje = new DateTime();

    Agora uma futura qualquer:
    $futuro = new DateTime('2020-02-27');

    O array $diff vai armazenar a diferença entre $futuro e $hoje, assim:
    $diff = $hoje->diff($futuro);

    Para exibir o resultado, faça:
     <?php
      $hoje = new DateTime();
      $futuro = new DateTime('2020-02-27');
      
      $diff = $hoje->diff($futuro);
      
      echo "Diferença de: <br/>"
        .$diff->days . " dias <br/>"
        .$diff->m . " meses <br/>"
        .$diff->y . " anos <br/>"
        .$diff->h . " horas <br/>"
        .$diff->i . " minutos <br/>"
        .$diff->s . " segundos<br/>";
     ?>
    O resultado aqui foi:
    Diferença de:
    363 dias
    11 meses
    0 anos
    12 horas
    28 minutos
    28 segundos

    Bem preciso esse PHP, não ?

    Modificando Data e Hora: setDate() e setTime()

    Após criar e definir seu objeto do tipo DateTime, é totalmente possível mudar seus atributos, como ano, dia, hora ou o que for, através dos setters.

    Vamos definir a data atual e exibir ela:
    $data = new DateTime();
    echo $data->format( "d/m/Y H:i" )."<br />";

    O resultado é: 28/02/2019 11:37 (sim, tá quase na hora do almoço)

    Agora vamos mudar a data pra 01/03/2019, amanhã e o horário para 12:00.
    Nosso código fica assim:
    $data->setDate(2019,03,01);
    $data->setTime(12,0,0);
    echo $data->format( "d/m/Y H:i" )."<br />";

    E o resultado assim: 01/03/2019 12:00

    Bonitinho, não?

    Comparando Datas: var_dump

    Muitas vezes é preciso saber se uma data é igual a outra, se é anterior, posterior...
    Vamos criar uma variável que representa hoje e outra amanhã:
      $hoje = new DateTime();
      $amanha = new DateTime('2019-03-01');

    Vamos comparar se elas são iguais:
      var_dump($hoje == $amanha);

    O resultado vai ser: bool(false)

    Agora vamos comparar se amanhã é maior que hoje:
      var_dump($amanha > $hoje);

    O resultado vai ser: bool(true)

    Que bom que deu verdade, né?


    É possível ainda trabalhar com fuso-horário, somar intervalos de tempo, subtrair, definir língua e local que vai usar e uma porção de outros métodos para você usar, para aprender mais, acesse a documentação oficial do PHP:

    http://php.net/manual/pt_BR/class.datetime.php

    Calculando Datas no Futuro e no Passado: strtotime()

    Muitas vezes, é necessário que saibamos a data exata para daqui algum tempo.

    Por exemplo, qual a data daqui 40 dias?
    Que data foi 20 dias atrás?

    Obviamente, não vamos ficar fazendo contas nas mãos.
    Para isso, temos a função strotime()

    Calculando datas no futuro: strotime

    Ela é uma função nativa do GNU Linux e possui uma sintaxe bem simples e acessível.
    Para exibir uma data daqui 40 dias:
    <?php
     $futuro = strtotime("40 days");
     echo date("d/F/Y", $futuro);
    ?>

    Para calcular daqui 3 semanas:
    <?php
     $futuro = strtotime("3 weeks");
     echo date("d/F/Y", $futuro);
    ?>

    2 semanas e 4 dias:
    <?php
     $futuro = strtotime("2 weeks 4 days");
     echo date("d/F/Y", $futuro);
    ?>

    Calculando datas no passado: strotime

    A sintaxe é a mesma, mas vamos usar valores negativos na função strotime().
    Para saber que dia foi 20 dias atrás:
    <?php
     $passado = strtotime("-20 days");
     echo date("d/F/Y", $futuro);
    ?>

    Uma semana atrás:
    <?php
     $passado = strtotime("-1 week");
     echo date("d/F/Y", $passado);
    ?>
    a

    Determinar Número de Dias em um mês no PHP

    Uma grande utilidade de se trabalhar com datas, é saber quantos dias algum mês possui.
    Neste tutorial vamos te mostrar scripts que te ensinam a fazer isso de maneira bem simples.

    Baixar apostila de PHP

    Número de Dias no mês atual

    O código date('t') diz quantos dias o mês possui.
    O mês em questão é representado por: date('F')

    Veja: A função date() e seus parâmetros no PHP

    Assim, um script que mostra o número de dias do mês atual, seria:
    <?php
     echo "Há ".date('t')." dias no mês ".date('F');
    ?>

    A saída é: Há 28 dias no mês February

    Se preferir 'mês 02' ao invés de 'mês February', use:
    <?php
     echo "Há ".date('t')." dias no mês ".date('m');
    ?>

    Mas se preferir: "O mês de Fevereiro tem 28 dias", basta fazer:
    <?php
     setlocale(LC_ALL, 'pt_BR.utf8');
     echo "O mês ".strftime('%B')." tem ".date('t')." dias";
    ?>

    Número de Dias de Qualquer mês

    E quantos dias teve fevereiro de 1988?
    Para cálculos assim, usamos a mktime(), lembra dela?
    mktime( $hora, $minuto, $segundo, $mes, $dia, $ano );

    Basta fazer:
    $ultimo = date('d', mktime(0, 0, 0, 3, 0, 1988 ));

    Ou seja, você vai pegar o dia '0' do mês '3'. É o mesmo que pegar o último dia do mês 2, entendeu?
    Prontinho, a variável $ultimo vai ter o número de dias que teve fevereiro de 1988

    Última Modificação de uma Página: getlastmod()

    Quase sempre, é muito importante saber qual foi a última vez que uma página foi modificada pela última vez.

    Imagine que você tenha um site de promoções e vendas, é essencial exibir a data e o horário nele, pois os usuários precisam saber se ele está sendo atualizado, se as informações estão 'fresquinhas'.

    Última Alteração da Página: Função getlastmod()

    O PHP possui uma função pré-definida muito útil, que exibe a última alteração de uma página, é a getlastmod().

    Teste:
    <?php
     echo getlastmod();
    ?>
    Resultado aqui:
    1551106973
    Ou seja, ele vai te retornar a timestamp.

    Mas você não vai exibir isso pro usuário:
    Última atualização: 1551106973 segundos desde 1 de janeiro de 1970.

    Vamos ter que usar a strftime() junto com a getlasmod() para formatar corretamente (ou a date() caso prefira exibir os dados em inglês).

    Veja como fica nosso código:
    <?php
     setlocale(LC_ALL, 'pt_BR.utf8');
     echo "Última atualização: ".strftime('%d/%B/%G as %H:%M:%S ', getlastmod() );
    ?>
    Resultado:
    Última atualização: 25/fevereiro/2019 as 12:08:28

    Bem mais bonito, não ?

    Data e hora em Português no PHP: setlocale() e strftime()

    Neste tutorial de nosso Curso de PHP, vamos aprender a usar datas e horários locais, no formato e escrita de nossa língua, através das funções setlocale() e strftime().

    Curso de PHP com certificado
    Obter meu certificado!

    Formatos locais: setlocale()

    Até o momento, todas nossas datas e horários tem o formato americano, ou seja:
    12/23/2019

    Primeiro o mês, depois o dia, depois o ano.
    Sendo que no Brasil primeiro usamos o dia primeiro, só depois o mês.

    Quando fizemos:
    echo date("d/F/Y", 1551028815);

    O resultado foi: 24/February/2019
    Mas não queremos 'February', somos brasileiros!

    Queremos é Fevereiro!
    A resposta para isso é setar o local, com a setlocale, basta fazer:
    setlocale(LC_ALL, 'pt_BR');

    Experimente:
    <?php
    	setlocale(LC_ALL, 'pt_BR');
    	echo strftime('%d/%B/%G');
    ?>
    Se não funcionar, experimente:
    <?php
    	setlocale(LC_ALL, 'pt_BR.utf8');
    	echo strftime('%d/%B/%G');
    ?>

    Se vai ser pt_BR ou não, vai depender do que tem instalado em seu servidor.
    LC_ALL é uma constante que serve para definir várias coisas a respeito das datas locais que você vai usar.

    Note que não usamos date(), e sim strftime()

    A função strftime()

    A função date() serve apenas para exibir as coisas em inglês padrão.
    Se quisermos usar outra língua para trabalharmos com data e tempo, precisamos da strftime(), mas ela é bem semelhante a date(), mas usa outros parâmetros, veja:

    %a - dia da semana abreviado
    %A - dia da semana completo
    %b - dia do mês abreviado
    %B - dia do mês completo
    %c - data e hora padrão 04/26/05 21:40:46
    %C - Número do século 21
    %d - Dia numérico do mês, com 0 na frente
    %D - Equivalente a %m/%d/%y
    %e  - Dia numérico do mês, sem o 0 na frente
    %g  - Exibe o ano, mas sem o século (tipo 19 ao invés de 2019)
    %G  - Ano numérico
    %h  - Mesmo que %b
    %H - Horário numérico de 24 horas com 0 na frente
    %I - Horário numérico num relógio de 12 horas, com 0 na frente
    %j - Número do dia do ano de 001 até 366
    %m - Número do mês, com 0 na frente
    %M - Número do minuto,com 0 na frente, de 00 até 59
    %n  - Caractere de quebra de linha \n
    %p - Antes e pós meridiano AM, PM
    %r - Antes e pós meridianos com ponto A.M., P.M.
    %R - Notação de 24 horas 00:01:00 até 23:59:59
    %S - Número de segundos com zero, de 00 até 59
    %t - Caractere de tab \t
    %T - Equivalente a %H:%M:%S 12:23:41
    %u - Dia numérico da semana, onde 1 = domingo
    %U - Número numérico da semana, em que o primeiro domingo é primeiro dia da primeira semana
    %V - Número numérico da semana, em que semana 1=primeira semana com>=4 dias, vai de 01 a 53
    %W - Número numérico da semana, em que a primeira segunda-feira é primeiro dia da primeira semana
    %w - Número do dia da semana, onde 0 = domingo
    %x - Padrão de data local d:m:a
    %X - Padrão de tempo local h:m:s
    %y - Número do ano sem o século
    %Y - Número do ano, com o século
    %Z ou %z - Fuso horário do horário de verão oriental
    %% - Caractere de porcentagem %

    Usando as funções time() e date()

    Neste tutorial de nossa apostila de PHP, vamos aprender a usar a função time() junto da função date() e aprender poderosas técnicas de manipulações de datas.

    Apostila PHP Progressivo (baixar)

    A função time()

    A função time é super mega hiper simples.
    Basta invocar: time()

    Ela retorna um inteiro: o Unix timestamp atual.
    Prontinho. Só isso.

    Por exemplo, eu rodando aqui agora: echo time();
    O resultado é: 1551028815

    Mas convenhamos, esse tanto de segundo, não é muito útil, não quer dizer nada, não dá pra dizer quantos dias, meses ou anos tem aí, não é muito 'legível' para humanos'.

    Concorda?

    Função date() com função time()

    Lembra da função date() ? Responsável por exibir datas e horários de tudo quanto é jeito que você imaginar?

    Pois é, podemos combinar ela com a time e exibir datas de maneira que humanos consigam entender e captar de maneira mais interessante.

    Por exemplo, para exibirmos uma data no formato: dia-mes-ano
    Fazemos: echo date("d/F/Y", 1551028815);

    Note que passamos uma timestamp que obtivemos com a time().

    Podemos ir mais além e mostrar hora:minuto:segundo:
    echo date("d/F/Y - h:i:s", 1551028815);

    Ou seja, pegamos o timestamp atual com a função time() e a função date() com seus inúmeros parâmetros, transforma esse número medonho bizarro em datas bonitas e prazerosas.

    Exemplo de uso de time()

    Crie um script que exibe o horário daqui exatamente uma semana.

    Vamos pegar a timestamp atual:
    $agora = time();

    Agora vamos somar os segundos de uma semana:
    $agora += 7*24*60*60;

    O script que exibe o dia, mês, ano e horário atual e o exatamente daqui uma semana é:
     <?php
      $proxsemana = time()+(7 * 24 * 60 * 60);
      echo "Atual:" .date("d/F/Y - h:i:s", time())."<br/>";
      echo "Semana que vem: ".date("d/F/Y - h:i:s", $proxsemana)."<br/>";
     ?>
    Você pode usar isso para fazer promoções em sites, por exemplo "Você tem apenas uma semana para aproveitar a queima de estoque..."

    Como obter tempo atual: Função gettimeofday() do PHP

    Neste tutorial de nosso curso de PHP, vamos aprender para que serve e como usar a função gettimeofday(), para pegar as informações do momento atual do sistema.

    Apostila de PHP para download

    Obtendo informações atuais: gettimeofday()

    Para obtermos algumas informações do exato instante que o sistema PHP está rodando, usamos a função pré-definida gettimeofday().

    Quando simplesmente invocamos ela: gettimeofday()
    Ela retorna um array, com os seguintes elementos:

    • [sec] - Número de segundos desde a Unix Epoch
    • [usec] - microssegundos atual
    • [minuteswest] - a quantos minutos você está a oeste do meridiano de Greenwich
    • [dsttime] - um inteiro, que representa o horário de verão:


    0 - Sem horário de verão
    1 - Horário dos EUA
    2 - Horário da Australia
    3 - Horário do oeste europeu
    4 - Horário da europa meridional
    5 - Horário do leste europeu
    6 - Horário do Canadá
    7 - Horário de Grã-Bretanha e Irlanta
    8 - Horário da Romênia
    9 - Horário da Turquia
    10- Horário da Austrália, variação de 1986

    Quando eu dou: print_r(gettimeofday());
    O que aparece atualmente para mim é:
    Array (
    [sec] => 1551025438
    [usec] => 880119
    [minuteswest] => 180
    [dsttime] => 0 )

    E para vocês? Deixem nos comentários.

    Como pegar exato instante atual: gettimeofday(TRUE)

    A função gettimeofday()) também aceita como parâmetro o booleano TRUE.
    Quando usamos ele, ela retorna apenas um float, com o instante exato do momento atual, com segundos da Unix Epoch e mais 4 casas decimais de microssegundos.

    Fazendo: print_r(gettimeofday(TRUE));
    Obti: 1551025529.2385

    E vocês?

    Exercício: Tempo de execução de um script

    Uma das funcionalidades da gettimeofday() é descobrir o tempo de execução de um script em PHP.

    Primeiro, pegamos o tempo inicial:
    $d1 = gettimeofday(TRUE);

    Fazemos nosso scripts.

    Depois, pegamos o tempo final:
    $d2 = gettimeofday(TRUE);

    Prontinho, basta subtrair esses valores e teremos o tempo de execução de um script.
    Vamos testar com um "Olá, mundo":
    <?php
     $d1 = gettimeofday(TRUE);
     echo "Olá mundo<br />";  
     $d2 = gettimeofday(TRUE);
     
     echo "Tempo de execução: ".($d2-$d1);
    ?>
    O resultado aqui foi:
    Tempo de execuçãoa: 9.5367431640625E-7

    Ou seja: 0,000000954s

    Bem rápido esse PHP, não?

    Obtendo datas e horários em PHP: Função getdate()

    Neste tutorial de nosso curso de PHP, vamos aprender a usar a função getdate() que nos fornece de maneira completa datas e horários no tempo.



    A função getdate()

    A sintaxe da função é:
    array getdate (int timestamp)

    Ou seja, devemos fornecer um timestamp apenas e ela nos retorna um array completo, de 11 elementos:

    1. hours: Representação numérica da hora do dia, de 0 até 23
    2. mday: Representação numérica do dia do mês, de 1 até 31
    3. minutes: Representação numérica dos minutos, de 0 até 59
    4. mon: Representação numérica do mês, de 1 até 12
    5. month: Nome do mês, escrito, por exemplo Maio
    6. seconds: Representação numérica dos segundos, de 0 até 59
    7. wday: Representação numérica do número da semana. Por exemplo, 0 é domingo
    8. weekday: Nome do dia da semana, por exemplo, Segunda-feira
    9. yday: Representação numérica do dia do ano, de 0 até 365
    10. year: Representação numérica do ano, em 4 dígitos, como 2020
    11. 0: Timestamp, número de segundos desde a Unix epoch
    Bem completa essa getdate(), não?

    Exemplo de uso da getdate()

    No momento que vos escrevo este tutorial, a atual timestamp é:

    1550931619


    Vamos criar um array com esta data:
    $data = getdate(1550931619);

    Agora vamos printar este array:
    print_r ($data)

    (Lembre-se: use print_r para printar arrays)

    O resultado é:
    Array ( 
    [seconds] => 19 
    [minutes] => 20 
    [hours] => 11 
    [mday] => 23 
    [wday] => 6 
    [mon] => 2 
    [year] => 2019 
    [yday] => 53 
    [weekday] => Saturday 
    [month] => February 
    [0] => 1550931619 )

    Exemplo de uso da getdate()

    Crie um script que pega o timestamp ATUAL, desse exato momento (use o parâmetro date correto), mande pra getdate() e imprima o array.

    Mostre o resultado nos comentários.

    Um código mais fácil de entender:
    $data = date("U");
    print_r (getdate($data);

    Ou simplesmente:
    print_r( getdate( date("U") ) );

    A Unix Timestamp e Calculando Segundos com a função mktime()

    Neste tutorial de nossa apostila de PHP, vamos aprender o que é a famosa Unix Timestamp bem como vamos aprender a calcular segundos a partir dela com a função mktime.

    A Unix Timestamp - A Marca Temporal Universal

    Imagine que seu chefe te peça um serviço web onde o usuário digita duas datas completas, com dia, mês, ano e horário, e você tenha que dizer o tempo entre as duas.

    Por exemplo:

    • 5 de abril, 2015, 18h45min e 34s
    • 4 de novembro, 1987, 19h00min e 12s


    Seria um trabalho altamente maçante e chato de fazer, não concorda?
    A solução para isso é simples:
    O primeiro passo é definir uma marca temporal, é a do Unix, a timestamp, e ela é a data 1 de janeiro de 1970, as 00:00:00 UTC (Coordinated Universal Time).

    Depois, basta calcular quantos segundos ocorreram desde a timestamp até hoje e lidar apenas com esse número, fica mais fácil trabalhar com essa formalização.

    A função mktime()

    A função mktime() recebe a data completa e retorna os segundos transcorridos desde a marca temporal do Unix, sua sintaxe é:
    int mktime(int hora, int minuto, int segundos, int mes, int dia, int ano);

    Vamos usar nossos exemplos:
    5 de abril, 2015, 18h45min e 34s: echo mktime(18, 45, 34, 4, 5, 2015)
    Retorna: 1428270334

    4 de novembro, 1987, 19h00min e 12s: echo mktime(19,0,12,11,4,1987)
    Retorna: 563058012

    Diferença temporal: 1428270334 - 563058012 = 865212322s
    A partir daí fica mais fácil trabalhar e transformar em minutos, horas, dias...

    Exercício com a mktime()

    Crie um script que pede o dia, mês, ano e horário de nascimento de uma pessoa e exiba quantos segundos se passaram da timesamp do Unix até a data de nascimento dela.
    <html>
     <head>
      <title>Apostila PHP Progressivo</title>
     </head>
     <body>
     <form action="" method="get">
      Dia<input type="text" name="day" /><br />
      Mês<input type="text" name="month" /><br />
      Ano<input type="text" name="year" /><br />
      Hora<input type="text" name="hour" /><br />
      Minuto<input type="text" name="min" /><br />
      Segundo<input type="text" name="sec" /><br />
      <input type="submit" name="submit" value="Testar" />
     </form> 
     <?php
      $dia = $_GET['day'];
      $mes = $_GET['month'];
      $ano = $_GET['year'];
      $hora = $_GET['hour'];
      $minuto = $_GET['min'];
      $segundo = $_GET['sec'];
      
      echo "Se passaram: ".mktime($hora,$minuto,$segundo,$mes,$dia,$ano)."
            segundos desde que você nasceu";
      
     ?>
     </body>
    </html>

    Exercício com a mktime()

    Agora faça um script que peça a data de aniversário completa do usuário e calcule o tanto de segundos que ele viveu.
    Dica: use os parâmetros da função Date()

    Solução na apostila.

    Como exibir Datas e Horários em PHP: date()

    Neste tutorial, vamos aprender como exibir todo e qualquer tipo de data em PHP, usando a função PHP e seus infinitos atributos.

    Apostila de PHP

    Exibir datas em PHP

    Uma coisa obrigatória que você vai precisa fazer em sua carreira de desenvolvedor web, é exibir datas,

    Exibir dia da semana, do mês, do ano, minutos do dia, quanto segundos faltam pra uma sessão encerrar, quanto tempo o usuário vai estar na sua página e por ai vai.

    Porém, o PHP fornece uma função fantasticamente maravilhosa, a date() que possui trocentos parâmetros, para você exibir datas praticamente do jeito que você quiser:

    • Só os dias
    • Dia da semana
    • Nome do mẽs
    • Abreviação do mês
    • Semana do ano
    • Segundos
    • Minutos
    • Até diferença pro meridiano de Greenwich


    É uma função poderosíssima.

    Sua sintaxe é:
    string date (string parametros)

    Parâmetros da função date()

    Parâmetros Descrição                 Exemplo
    a         Antes e pós meridiano, em minúscuo am or pm
    A         Antes e pós meridiano, em maiúsculo AM or PM
    d         Dia do mês, com 0 na frente         01 to 31
    D         Dia da semana representado por três letras Mon, Sun, etc
    F         Completa representação do mês January até December
    g         Horário no formato de 12 horas, sem 0 1 até 12
    G         Horário no formato de 24 horas, sem 0 1 até 24
    h         Horário no formato de 12 horas, com 0 01 até 24
    H         Horário no formato de 24 horas, com 0 01 até 24
    i         Minutos, com zero                 01 até 60
    I         Horário de verão                 0 se não, 1 se sim
    j         Dia o mês, sem o zero         1 até 31
    l         Texto representando o dia da semana Monday até Sunday
    L         Ano bissexto                 0 se não, 1 se sim
    m         Representação numérica do mês, com 0 01 até 12
    M         Três letras represetando o mês Jan até Dec
    n         Representação numérica do mês, sem o 0 1 through 12
    O         Diferença pro meridiano de Greenwich (GMT) –0500
    r         Data formatada de acordo com o RFC 2822 Tue, 19 Apr 2005 22:37:00 –0500
    s         Segundos, com zeros         01 até 59
    S         Sufixo ordinário do dia                 st, nd, rd, th
    t         Números de dias de um mês         28 até 31
    T         Definição de fuso horário da máquina executora PST, MST, CST, EST, etc.
    U         Segundos desde a época do Unix 1114646885
    w         Representação numérica do dia da semana 0 para domingo e 6 para sábado
    W         ISO-8601 numero da semana do ano 1 até 53
    Y         Representação do ano em 4 dígitos 1901 até 2038 (Unix)
                                    1970 atẽ 2038 (Windows)
    z         Dia do ano                 0 até 365
    Z         Deslocamento do fuso horário em segundos –43200 through 43200


    Exemplos de uso:

    echo "Hoje é ".date("d m, Y");
    // Hoje é 23 ,02, 2019

    echo "Hoje é ".date("F d, Y");
    //Hoje é February 23, 2019

    Você pode ainda formatar do jeito que quiser:
    $diadasemana = date("l");
    $numerodia = date("dS");
    $mesano = date("F Y");

    Fazendo:
    printf("Hoje é %s o %s dia de %s", $diadasemana, $numerodia, $mesano);

    O resultado é:
    Hoje é Saturday o 23rd dia de February 2019

    Trabalhando com horários

    Para exibir um horário, faça:
    echo "A hora exata é ".date("h:i:s");

    Resultado:
    A hora exata é 01:42:27

    Notou o poder e versatilidade da função date()?

    Ainda vale a pena programar em PHP ?

    Eu uso PHP há mais de 10 anos. O que eu acho engraçado é como algumas pessoas tiram sarro disso. Prefiro começar com o que as pessoas dizem que são as partes ruins (seguindo a opinião popular) e depois dizer como o PHP vai superá-las (se ainda não o fez)

    Como programar em PHP


    Mitos sobre o PHP

    • O PHP é lento: Bem, vamos escrever algoritmos científicos? Se sim, PHP não é bom. Mas usamos PHP para apresentar páginas da web. Dado esse uso, o PHP faz um ótimo trabalho sendo muito fácil de manter e desde que você tenha o entendimento de como a web funciona e quais são os padrões de software - o PHP irá atendê-lo bem por muito tempo.

      A propósito, o Facebook ocupa uma grande quantidade de carga e foi escrito usando PHP. No momento, eles o executam no HHVM, que é rápido e 'código aberto'. Portanto, caso você sinta que o PHP está lento, basta começar a usar o HHVM, que executa o código PHP muito mais rápido.

      E falando nisso, agora, o PHP7 é a linguagem de script mais rápida disponível em muitos benchmarks que você pode encontrar na web.

    • O código PHP é feio: É bem semelhante a dizer que "C++ é feio porque você lida com ponteiros". Se você não sabe o que quer fazer e não conhece as opções que o idioma oferece, tudo pode ficar feio!

    • PHP tem estruturas ruins: Cite 10 estruturas da web escritas em Node, Ruby, Python etc. e eu te mostro pelo menos 20 para bater de frente com elas,  em PHP. Confie na gente quando dizemos - não faltam bons códigos em PHP. Seja para Wordpress, Joomla e Drupal (frameworks CMS) ou Symfony, Yii, QCubed (frameworks de desenvolvimento).

    • O código PHP é insustentável: quantas vezes temos que mencionar o Facebook? Ou Yahoo? Se você sabe como manter o código, o PHP tem todas as opções disponíveis. Basta explorar. Mais uma vez: quem fala isso, nunca programou em PHP


    • PHP é para leigos: E o Windows também! E caso você seja da opinião "Não se deve usar o Windows porque é muito popular", sugiro - comece com C ++. É a melhor linguagem de programação da web que existe (e não, não estou sendo sarcástico).

    • PHP é apenas para web: Isso costumava ser um problema. Mesmo assim, se você é um novato e não conhece e quer aprender qualquer linguagem de programação de aplicativos (eu, pelo menos, estou bem com C/C++), por favor, aprenda outra coisa porque PHP faz web e é muito bom nisso.

      No entanto, o PHP está prestes a lançar a versão 7.1. A versão 7.0 já foi lançada e está ficando popular. Se você quiser usar o PHP na linha de comando, procure por Robo. Se você acha que não pode lidar com soquetes TCP brutos, procure o Socket Server do React. Ele pode ler e gravar arquivos, conectar-se a bancos de dados de quase todos os tipos, analisar todos os tipos de dados e existem inúmeras bibliotecas e extensões disponíveis para a maioria dos outros tipos de trabalho no sistema. O PHP não é mais apenas para a web. Estude!

    • PHP é muito novo: Há quem diga que PHP é imaturo. Eles estão errados. Existem dois problemas - i) o PHP se tornou tremendamente popular em muito pouco tempo e ii) o PHP não foi projetado para ser uma linguagem desde o início - então começou sua jornada na direção errada (Veja sobre o PHP na Wikipedia). As pessoas que entraram em contato enquanto ele eram novatos e não se atualizaram sobre o PHP, e tendem a pensar que o PHP é coisa de leigo.

      O PHP hoje tem tudo o que você deseja em uma linguagem de script/programação web de alto nível. Exceções, Classes, Interfaces, Closures, Namespaces, Traits (para trazer recursos de múltiplos conceitos de herança), Geradores (para facilitar co-rotinas) e outros! Muitos dizem que o PHP não possui recursos suficientes quando comparado ao Python.

      Embora eu seja um apaionado por Python, não há nada que o PHP também não possa fazer. Em uma perspectiva mais ampla, a maioria das linguagens com ampla popularidade pode fazer quase tudo que um programador comum precisa. Quase todas as línguas podem fazer tudo. Pense nisso - você pode escrever código do lado do servidor, consultas de banco de dados, serviços e observadores usando Javascript - uma linguagem que foi projetada para rodar dentro de um navegador! Não, o PHP não é mais imaturo. Se você ainda tem aquela imagem ~(versão 5.2) em sua cabeça, livre-se dela. O PHP mudou.


    • O PHP tem nomes de funções e ordens de parâmetros inconsistentes: e se a versão 7.2 esclarecer isso? Você se arrependeria? Existem muitos frameworks que corrigem isso e, assim que terminar com o básico do PHP, coloque-se em um framework. Escrever código espaguete em PHP é fácil (isso é bom (quando você realmente precisa de uma solução rápida) e ruim (se você perder o controle, está condenado)), então você deve ver como os frameworks dividem a carga de trabalho e organizam o código em PHP. Comece com Symphony ou Yii ou QCubed (meu favorito). Além disso, há uma proposta para corrigir essa consistência: rfc:consistent_function_names.

    Vamos aos motivos pelos quais você deve considerar o PHP.

    As vantagens de Programar em PHP

    É muito fácil começar com: se burros tivessem dedos, eles seriam capazes de escrever PHP. E realmente, por que você deveria tentar fazer a mesma coisa de uma maneira mais difícil? Se você quiser, aprenda Java ou C++. Você pode fazer maravilhas com eles também. Mas para começar com a web - PHP é a escolha.

    • Suporte da comunidade: Alguns acreditam que o PHP cresceu porque foi escrito por estúpido para estúpido. Ahem, está rodando bem cerca de 75% da web. Isso é estúpido? De pequenas plataformas de blogs a grandes sistemas CMS sofisticados - o PHP faz tudo. E por esse motivo, há uma grande chance de que, quando você pesquisar por questões de estilo "como fazer algo em PHP" - já haja uma ótima postagem no blog escrita por alguém sobre isso.
    • Ótima documentação: Se você acha que a documentação do PHP é ruim, tente ler Java ou Python. Ou Rubi. Cada linguagem é simples para um certo tipo de mentalidade. Mas uma linguagem que para muitos é simples, na verdade é algo grandioso (opinião pessoal). O PHP também é ótimo para iniciantes, porque é simples. ["Simplicidade é sofisticação" - Da Vinci]
    • O PHP NÃO carece de recursos modernos: Quais recursos modernos? Já listei alguns deles. Chegando ao lado do cliente - a maior parte do desenvolvimento do HTML5 foi no lado do JavaScript. Se você acha que não pode escrever um servidor sem bloqueio (como o NodeJS), consulte o Event Loop do React, ou sincelo, ou outras bibliotecas semelhantes.
      Como Closures agora estão disponíveis, você pode escrever serviços sem bloqueio em PHP com bastante facilidade. Construída sobre elas está a biblioteca phpws (e há outras, estou apenas listando quais estou usando) que permite que você execute websockets. Quais recursos modernos estamos perdendo aqui?
    • PHP é seguro: E qual linguagem não é? A segurança depende do programador, tanto quanto da linguagem. Todas as línguas têm pontos fracos e pontos onde as verificações podem ser contornadas e as paredes podem ser quebradas. Se eu for um idiota, vou escrever um código vulnerável de merda em qualquer idioma. Todas as línguas têm seu conjunto de pontos vulneráveis. O mesmo acontece com o PHP e, como todas as outras linguagens, o PHP fornece ferramentas, dicas e API para evitar isso. Você precisa se concentrar em aprender a usá-lo do que culpar o idioma.
    • PHP tem tipos estritos para parâmetros e valores de retorno: PHP, até agora não tinha tipos de dados estritos para valores escalares em parâmetros de função e suas funções não podiam prometer que um determinado tipo de dados seria retornado. Bem, agora eles podem. O PHP7 tem um ótimo suporte para tudo isso.
    • Já vi pessoas que dizem coisas como “um triplo operador igual a (===) PHP? Sério?".
      Isso soa nada mais do que um efeito ruim de ler muitos artigos isca de cliques (se é que existe tal termo) na web. Se você já chegou a um nível intermediário de desenvolvimento da Web e fez algum trabalho em Javascript, saberia que um operador triplo igual a é amplamente usado em Javascript. E se você ainda não trabalhou nisso, ainda não conhece bem o suficiente sobre a web.


    A grande verdade sobre o PHP

    PHP não é a melhor linguagem para ensinar como as coisas funcionam. Na verdade, ele não ensina nada, exceto recursos no nível do idioma. Se você quer aprender programação web sem entrar em muitos detalhes, PHP é o melhor. Mas se aprender sobre como o sistema (SO, aplicativos e memória) funciona é/foi seu objetivo, por favor, certifique-se de aprender algo além de PHP, porque PHP é tão fácil que não ensina quase nada. 

    Minha sugestão pessoal foi aprender C, C++ e PHP.
    Com esse conjunto, você tem quase tudo coberto - PHP para a Web em movimento rápido, C e C++ para qualquer tipo de aplicativo imaginável; ou se você quiser criar um sistema operacional ou escrever drivers ou qualquer outra coisa - esse conjunto funciona bem!

    Lembre-se de que não é C, C++, Java, PHP, Python, Ruby, Haskell ou qualquer outra coisa que você precisa aprender. O que você precisa aprender é 'programação'; para comandar a máquina e fazer com que ela faça o que você quiser. Qualquer coisa funciona (não, realmente, funciona). Se o seu programa pode ser escrito em Basic e Basic faz o trabalho - Basic é a linguagem que você precisa aprender. Felizmente, o PHP é muito mais poderoso. O PHP não foi construído por idiotas. Se tivesse, já estaria morto. Mas veja, é o mais dominante. Além disso, deixe-me repetir para você - só porque algo é fácil, não significa que não seja poderoso.

    Idealmente, uma linguagem deve ser consistente e bem projetada. Mas se você conhece um pouco a história do PHP, provavelmente perdoaria sua loucura às vezes (e há algumas, em todas as linguagens). O PHP não deveria ser uma linguagem completa. O PHP era apenas um pequeno truque para programar uma página da web dinamicamente. 

    Ele foi projetado para não programadores em uma época em que C e C++ eram as linguagens mais populares. Mesmo Java não estava realmente por aí! PHP estreou com Java (cerca de um mês mais novo que Java) Links: PHP - Wikipedia e Java (linguagem de programação) - Wikipedia. Era para ser uma ferramenta de script leve para pessoas que não levavam muito a sério a programação de suas páginas da web. Até mesmo seu criador Rasmus Lerdoff diz que não pretendia construir uma linguagem de programação. 

    Em vez disso, ele só queria escrever uma ferramenta para criar scripts de páginas da web e continuou adicionando recursos e se transformou em uma linguagem. Como tal, a própria base do PHP como linguagem é um pouco instável - é uma linguagem que não deveria ser uma em primeiro lugar. Tornou-se uma linguagem completa muito mais tarde (eu diria que quando chegou à versão 4). Ele amadureceu por 10 anos enquanto estava em sua era 5.x e agora é projetado razoavelmente bem o suficiente para competir com outras linguagens na versão 7. Avançando, as mudanças se tornam muito mais difíceis porque há muito código que depende do características e comportamento que a linguagem fornece. Mesmo assim, a maneira como o PHP 7 foi capaz de lidar com tudo o que foi escrito no PHP 5 sem causar caos entre nós, desenvolvedores, é bonita por si só. Pergunte a uma pessoa que migrou da versão 2.x do Python para a versão 3.x e você provavelmente entenderá. Sim, existem partes ruins no design do PHP, mas entenda isso: quanto mais flexibilidade você deseja de uma linguagem (ou qualquer coisa no mundo real), menos rígida ela se torna. 

    PHP, na minha opinião pessoal, oferece o melhor dos dois mundos - estrito e fraco; especialmente com a versão 7. Você decide quais partes do seu aplicativo podem ser fracas e quais são restritas e ele apenas se adapta! O resto é com o programador.

    Código é poesia. E os poemas são escritos em todas as línguas. Você precisa do ritmo e da emoção mais do que da gramática e da previsão; se você tem ritmo e emoção, pode escrever poemas em todas as línguas deste mundo e além.


    Atualização do post

    EDIT: É 2015 agora. Mas o que eu disse ainda é verdade! Além disso, supostamente o PHP 7 terá um novo mecanismo tornando-o cerca de 70% mais rápido. As APIs também serão mais consistentes. Um pouco mais de segurança e, obviamente, alguns novos recursos serão introduzidos. Então segure firme. Nesse ínterim, o PHP tem executado quase 80% da web para você (verifique a Wikipedia, os números podem subir e descer um pouco; e, a propósito, a Wikipedia também roda em PHP). Saúde.

    EDIT 2: É 2016 e o PHP ainda está no poder. O PHP 7 é significativamente mais rápido e muitas pessoas estão migrando sua base de código para a nova versão. Ainda funciona.

    EDIT 3: É 2017. Atualizei a resposta mantendo o PHP 7 em mente.

    EDIT 4: 2019 chegou. A pergunta foi feita em 2014 e a pessoa que a perguntou temia que o PHP morresse. Estou um pouco mais sábio por ter trabalhado em Ruby on Rails, Java e Go também. Mas PHP é o que considero melhor para a web.

    EDIT 5: 2022 chegou. Mantenho minha resposta hoje também. O PHP ainda não está morto. Perdeu o título de “legal” mas não deixa de ser uma linguagem muito poderosa e se for criar sites que você procura, o PHP será uma ótima escolha, ainda hoje.

    Como checar se uma data é válida em PHP: checkdate()

    Neste tutorial, vamos aprender como verificar se uma determinada data é válida (existente) ou não, em PHP, através da função checkdate().

    Baixar apostila PHP Progressivo

    Verificando datas: Função checkdate()

    Muitas vezes, durante sua carreira de desenvolvedor web PHP, você vai precisar verificar se uma determinada data é válida, ou seja, se ela realmente existiu ou pode existir, como por exemplo, a data de nascimento de uma pessoa.

    Se ela colocou 30/02 de qualquer ano, saiba que é um bot, um vírus ou alguém tentando 'trollar' o sistema, pois fevereiro não tem 30 dias.

    O PHP possui uma função pré-definida, a checkdate(), que determina se uma data é existente ou não e sua sintaxe é:
    boolean checkdate(int month, int day, int year)

    Ou seja, você fornece três inteiros: mês, dia e ano e ela te retorna TRUE se a data for válida e FALSE se não existir.

    Note que primeiro vem o mês. Diferente de nós do Brasil que usamos o dia primeiro, lá fora é o mês que vem antes, ok?

    Por exemplo:
    checkdate(5,5,1988)
    retorna TRUE

    checkdate(2, 29, 2019)
    retorna FALSE, pois 2019 não é bissexto

    checkdate(2,29,2020)
    retorna TRUE, pois 2020 é ano bissexto

    Exemplo de checkdate

    O script abaixo pede dia, mês e ano ao usuário e verificar se tal data é válida ou não:
    <html>
     <head>
      <title>Apostila PHP Progressivo</title>
     </head>
     <body>
     <form action="" method="get">
      Dia<input type="text" name="day" /><br />
      Mês<input type="text" name="month" /><br />
      Ano<input type="text" name="year" /><br />
      <input type="submit" name="submit" value="Testar" />
     </form> 
     <?php
      $dia = $_GET['day'];
      $mes = $_GET['month'];
      $ano = $_GET['year'];
      
      if(checkdate($mes, $dia, $ano))
       echo 'Data válida';
      else
       echo 'Data inválida';
     ?>
     </body>
    </html>

    Método Construtor (Orientação a Objetos em PHP)

    Neste tutorial, vamos aprender o que é e como usar o método construtor em orientação a objetos em PHP.

    Baixar a apostila

    Criação de Objetos

    Um objeto é cheio de informação, cheio de atributos, variáveis, funções, faz isso, faz aquilo e se você for lembrar de fazer tudo ao criar cada coisa, ficaria louco.

    Imagina que é o chefe de TI de uma grande empresa, cada pessoa que entra você tem que registrar nome, setor, salário, carga horária...não ia dar, ia ser muito trabalho manual, e programador é preguiçoso por natureza.

    Existe um método, chamado método construtor, que ele já cria um objeto com diversas informações, automaticamente.
    É o método construtor.

    Método Construtor

    O método construtor é um método como outro qualquer, a primeira diferença é que ele tem o nome da classe. Sempre.
    Se sua classe for "Funcionario", seu método vai se chamar "Funcionario".

    O método construtor tem a característica de sempre iniciar ao criarmos um objeto.
    Sempre que instanciamos um objeto, o método construtor é inicializado.

    Teste:
    <?php
     $nome = $_GET['name'];
     class Empregado {
      var $nome;
      function Empregado()
      {
       echo "Construtor invocado";
      }
     }
    
     $func = new Empregado();
    ?>

    Vai aparecer "Construtor invocado".
    Agora vamos fazer com que este construtor sete a variável $nome da classe.

    Para isso, ao instanciarmos o objeto $func, precisamos passar uma variável.
    Depois, imprimimos a variável $nome do objeto para ver se o método construtor inicializou ela corretamente, veja:
    <?php
     $nome = $_GET['name'];
     class Empregado {
      var $nome;
      function Empregado($nome)
      {
       $this->nome=$nome;
      }
    
     }
    
     $nome = "João";
     $func = new Empregado($nome);
     echo $func->nome;
    
    ?>

    Escopo de Atributos e Métodos: public, private, protected, final e static

    Neste tutorial, vamos aprender algumas palavras-chaves que permitem que nosso escopo tenha um comportamento especial relativo a segurança dos dados contidos.

    Escopo de Atributo Public

    Você pode declarar seus atributos com a palavra chave public antes:

    class Pessoa
    {
    public $nome;
    }

    Isso significa que ele pode ser acessado e alterado do lado de fora por qualquer pessoa ou entidade:
    $alguem = new Pessoa();
    $alguem->nome = "Neil Peart";
    $name = $alguem->nome;
    echo "Nome da pessoa: $name";

    Escopo de Atributo Private

    Esse só pode ser acessado de dentro da clase.

    class Pessoa
    {
    private $nome;
    }

    Para definirmos um valor para esse atributo, temos que criar um método setter:

    class Pessoa
    {
    private $nome;

    public function setNome($name) {
    $this->nome = $name;
    }
    }

    Escopo de Atributo Protected

    Assim como algumas funções querem que variáveis existam somente dentro de seu escopo, podemos querer o mesmo em classes.
    Para isso, usamos a palavra-chave protected:

    class Pessoa
    {
    protected $nome;
    }

    Porém, atributos do tipo protected estão disponíveis para serem acessados e modificados por classes herdadas, o que é uma características não existente no modo private.

    Escopo de Atributo Final

    Fazendo com que uma variável seja final, você previne que ela seja sobrecarregada por uma subclase, ou seja, que outra classe defina um atributo 'por cima' na hora da herança.

    class Pessoa
    {
    final $nome;
    }

    Discutiremos esse assunto mais em detalhes adiante.


    Escopo dos Métodos

    Assim como atributos, métodos também possuem seus escopos de níveis de encapsulação.

    O public, permite que você invoque ele de qualquer lugar do código, como já fizemos alguma vezes.
    Já o privado é mais recluso, não pode ser invocado por subclasses ou objetos instanciados.
    O protected pode ser invocado por suas subclasses e em qualquer lugar da classe, sem problemas.

    Existe ainda um tipo especial, chamado de abstract.
    Ele é declarado na classe pai, porém só é implementado nas classes filhas.

    Por exemplo, a classe:
    class Animal
    {
    abstrc som();
    }

    Só isso.
    Então a classe filha, que vai herdar a classe pai (ainda vamos estudar), é que implementa essa classe.
    Se for um leão, implementa um som.
    Se for uma cobra, implementa outro som.

    Por fim, o escopo final, que assim como no atributo, evita que ela seja sobrescrita por qualquer classe herdada. Ela é a implementação única e final daquele método.

    Veja também

    O melhor PC para programar

    O melhor celular para programar