Difference between revisions of "Equipe Precisa Colocar Nome na Equipe?"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Como surgiu)
(Independente de Máquina?)
 
(48 intermediate revisions by 10 users not shown)
Line 5: Line 5:
  
 
== Introdução ==
 
== Introdução ==
 +
 +
PHP significa ''Hypertext Preprocessor'', é uma linguagem do tipo script, que pode ser imbutida ao HTML para gerar páginas mais dinâmicas. As características básicas do PHP são<nowiki>:</nowiki>
 +
*PHP é executado pelo servidor, o usuário não tem acesso ao código PHP.
 +
*PHP é free, pode ser executado em servidores OpenSource como o apache (http://www.apache.org/).
 +
*PHP oferece suporte a diversos banco de dados, potencializando o desenvolvimento de aplicações em PHP.
 +
*PHP é multi-plataforma, roda em qualquer sistema operacional.
  
 
== História ==
 
== História ==
Line 10: Line 16:
 
=== Como surgiu ===
 
=== Como surgiu ===
  
O ancestral do PHP, chamado de PHP/FI (Personal Home Page / Forms Interpreter), foi criado em 1995 por Rasmus Lerdorf e era bem mais modesto do que o atual PHP. O objetivo de Rasmus era substituir alguns scripts em Perl usados em sua página, criando ferramentas simples típicas de páginas pessoais, como estatísticas de acesso.  
+
O ancestral do PHP foi criado em 1995 por Rasmus Lerdorf e era bem mais modesto do que o atual PHP. O objetivo de Rasmus era substituir alguns scripts em Perl usados em sua página, criando ferramentas simples típicas de páginas pessoais, como estatísticas de acesso.  
As necessidades foram crescendo e Rasmus decidiu fazer uma nova implementação em C, com mais recursos, chamado PHP/FI. O código foi disponibilizado e alcançou um sucesso considerável em sua segunda versão.
+
As necessidades dele foram crescendo e Rasmus decidiu fazer uma nova implementação em C, com mais recursos, chamado PHP/FI (Personal Home Page / Forms Interpreter). O código foi disponibilizado e alcançou um sucesso considerável em sua segunda versão.
 
Em 1997 Andi Gutmans e Zeev Suraski, reescreveram o PHP, para usar em aplicações de comércio eletrônico desenvolvidas na faculdade. Proclamaram o novo código como a vesão 3.0 do PHP. O PHP 3.0 é a primeira versão do atual PHP, que está na versão 5.
 
Em 1997 Andi Gutmans e Zeev Suraski, reescreveram o PHP, para usar em aplicações de comércio eletrônico desenvolvidas na faculdade. Proclamaram o novo código como a vesão 3.0 do PHP. O PHP 3.0 é a primeira versão do atual PHP, que está na versão 5.
 
Por ser um código facilmente extensível, com uma quantidade muito grande de recursos, o PHP atraiu a atenção dos desenvolvedores e se tornou um grande sucesso.
 
Por ser um código facilmente extensível, com uma quantidade muito grande de recursos, o PHP atraiu a atenção dos desenvolvedores e se tornou um grande sucesso.
Line 17: Line 23:
 
=== Principais nomes ===
 
=== Principais nomes ===
  
Questão 2
+
A linguagem PHP foi criada por Rasmus Lerdorf por volta de 1994. Ao finalizar a primeira versão, no início de 1995, Rasmus tornou-a open-source, dessa forma muitas pessoas passaram a contribuir em melhorias. Em seguida, Rasmus acrescentou funções (de acordo com as necessidades das aplicações web da época) ao PHP.
 +
Em 1997,Zeev Suraski e Andi Gutmans desenvolveram o analisador do PHP3. O PHP passou a estar sobre a orientação de um grupo. Suraski e Gutmans reescreveram o PHP algum tempo depois, originando o PHP4, agora utilizando tecnologia Zend.
 +
No ano de 2004, foi lançado o PHP5 incorporando o Zend Engine 2.0. As últimas versões do PHP foram desenvolvidas pelo The PHP Group (que é mantido pela Zend Technologies – The PHP Company).
 +
Pagina oficial da Zend Technologies: http://www.zend.com/en/
  
 
=== Versões ===
 
=== Versões ===
  
Questão 3
+
 
 +
=====PHP/FI=====
 +
Foi criado em 1995 por Rasmus Lerdorf  com a sintaxe baseada em Perl e nomeou os scripts de “Personal Home Page Tools”.
 +
Com a necessidade de mais funcionalidades, ele criou um interpretador de comandos SQL que foi chamado de “Forms Interpreter” e juntou ao PHP, assim criando o PHP/FI.
 +
Com a possibilidade de trabalhar com banco de dados, o PHP/FI passou a ser usado não somente para construir páginas pessoais, como também websites inteiros.
 +
Outra característica do PHP/FI era que os scripts eram colocados diretamente nos arquivos HTML o que aumentou o desempenho dos sites. Sua sintaxe era parecida com Perl mas muito limitada e um pouco inconsistente. Possuía também interpretação automática de variáveis vinda dos formulários.
 +
 
 +
 
 +
=====PHP 3=====
 +
Foi totalmente reescrita por Andi Gutmans e Zeev Suraski passando a ter uma sintaxe muito mais consistente. Foi também a primeira versão que se assemelha com o PHP de hoje.
 +
Seu grande atrativo era a grande capacidade de extensibilidade.
 +
Ele oferecia também uma infra-estrutura sólida para vários banco de dados, protolocos e APIs.
 +
Alem disso, no PHP3 foi introduzido o suporte a sintaxe para orientação à objetos.
 +
Tudo isso atraiu milhares de desenvolvedores, o que tornou o PHP um grande sucesso.
 +
 
 +
 
 +
=====PHP 4=====
 +
O PHP 4 foi baseado na engine 'Zend’ e trouxe varias características novas.
 +
Dentre elas estão o suporte a muitos servidores Web, sessões http(variável $_SESSION), maneiras seguras de manipular dados (variáveis $_GET , $_POST), buffer de saída e muitas novas construções na linguagem.
 +
O objetivo dessa nova versão era melhorar o desempenho das aplicações complexas e melhorar a modularidade do código base.
 +
 
 +
 
 +
=====PHP 5=====
 +
É a atual versão do PHP.
 +
Ele conta com uma nova engine (Zend Engine 2.0) e com isso trouxe um novo modelo de orientação a objetos.
 +
Foram reformulados os contrutores e criaram os destrutores,visibilidade de acesso, abstração de objeto e interfaces de objetos.
  
 
== PHP e as aplicações comerciais ==
 
== PHP e as aplicações comerciais ==
  
Questão 4
+
O PHP é largamente usado no desenvolvimento de aplicações comerciais, principalmente em sistemas web, de pequeno a grande porte, e frameworks. A lista de sites/aplicações desenvolvidas em PHP é extensa, alguns exemplos são<nowiki>:</nowiki>
 +
 
 +
:* Drupal - http://drupal.org/ (Open Source)
 +
:* Typo3 - http://typo3.com/ (Open Source)
 +
:* ATK framework - http://www.atk-framework.com/ (Open Source)
 +
:* Zend Framework - http://framework.zend.com/ (Open Source)
 +
:* AdMan - http://www.formfields.com/adManArea/adManProduct.php
 +
:* Jointar - http://www.jointar.com/
 +
 
 +
 
 +
Grande parte dos exemplos é OpenSource, com suporte comercial. Este site contém uma imensa lista de aplicações desenvolvidas em PHP http://www.hotscripts.com/PHP/Scripts_and_Programs/index.html. 
 +
 
 +
Alguns exemplos de grandes sites desenvolvidos em PHP é o wikipedia (http://wikipedia.org) e o Yahoo! (http://br.yahoo.com/).
  
 
== Como funciona o PHP ==
 
== Como funciona o PHP ==
Line 31: Line 77:
 
=== Linguagem Interpretada ===
 
=== Linguagem Interpretada ===
  
Questão 5
+
PHP é uma linguagem de programação desenvolvida para ser interpretada, não havendo necessidade de compilação para qualquer ferramenta extra.
 +
Entretanto, recentemente foi lançado um compilador PHP, o Roadsend PHP Compiler. Existem outros, mas o Roadsend é o de maior destaque.
 +
Página oficial do Roadsend PHP Compiler: http://www.roadsend.com/home/index.php?SMC=1
  
 
=== Independente de Máquina? ===
 
=== Independente de Máquina? ===
  
Questão 5
+
A aplicação web do PHP é multi-plataforma, funcionando na maioria dos sistemas operacionais (Linux, muitas variantes do Unix, Microsoft Windows, Mac OS X, RISC OSe outros), dando liberdade de escolha do sistema operacional e o servidor web. Uma aplicação web feita em PHP roda em qualquer lugar sem acrescentar configurações. Porém, o PHP-GTK, apesar de rodar em vários sistemas operacionais, não é de fato multi-plataforma, sendo necessário algumas linhas de comandos a mais; além disso, sua aplicação deve estar configurada na máquina em que está sendo utilizada.
  
 
=== Requisitos Mínimos ===
 
=== Requisitos Mínimos ===
  
Questão 5
+
Os requisitos para se rodar PHP variam de acordo com o que o usuário deseja fazer. Para a criação de websites e aplicações web, necessita-se do próprio PHP, um servidor web e um browser web (cliente web). As aplicações são executadas no browser. Se o usuário deseja fazer uma aplicação desktop (GUI), ele precisará do PHP-GTK. Nesse caso, a saída não é em HTML e sim janelas (que pode ter conectividade com o servidor). Porém o PHP-GTK precisa estar instalado em cada maquia-cliente que utilizará a aplicação.
  
 
== A linguagem ==
 
== A linguagem ==
  
Questão 6
+
===Sintaxe basica===
 +
O código em PHP começa com a tag ‘<?php’  e termina com ‘?>’ , ou seja, tudo o que estiver fora das tags serão ignorados pelo interpretador PHP.
 +
 +
<?php
 +
  echo Código em PHP';
 +
?>
 +
 
 +
 
 +
===Variáveis===
 +
As variáveis em php começam com $ e são declaradas no momento em que é atribuído seu valor (inteiro, string, array, etc.), ou seja, não é necessário indicar o nome e o tipo como em C.
 +
O php é case sensitive.
 +
 
 +
<?php
 +
$x = 10;
 +
$str = “teste”;
 +
$a[0] =  1;
 +
$a[1] = 2;
 +
?>
 +
 
 +
===Instruções condicionais===
 +
 
 +
====If...else====
 +
 
 +
<?php
 +
    if (expressão){
 +
      //Entra aqui se a expressão for verdadeira
 +
    }
 +
    else{
 +
      //Entra aqui se a expressão for falsa
 +
    }
 +
?>
 +
 
 +
====If...elseif====
 +
É uma combinação de else e if.
 +
Ex.:
 +
 
 +
<?php
 +
  if ($a > 10) {
 +
      echo "a é maior que 10";
 +
  } elseif ($a == 10) {
 +
    echo "a é igual a 10";
 +
  } else {
 +
    echo "a é menor que 10";
 +
  }
 +
  ?>
 +
 
 +
 
 +
====Switch====
 +
 
 +
<?php
 +
  switch (variável) {
 +
            case valor1:
 +
                      //Bloco de comandos Comandos...
 +
                      break;
 +
            case valor2:
 +
                    //Bloco de comandos Comandos...
 +
                    break;
 +
            case valor3:
 +
                    //Bloco de comandos Comandos...
 +
                    break;
 +
            default:
 +
                    //Bloco de comandos executado apenas se nenhuma
 +
                    //das condições anteriores forem aceitas...
 +
}
 +
?>
 +
 
 +
===Instruções de repetição===
 +
 
 +
====While====
 +
 
 +
<?php
 +
  while(condição){
 +
    //comandos
 +
  }
 +
?>
 +
 
 +
Ex.:
 +
 
 +
<?php
 +
  $i = 0;
 +
  while ($i <= 10) {
 +
    echo $i++; 
 +
  }
 +
?>
 +
 
 +
====Do...while====
 +
 
 +
<?php
 +
  do{
 +
  //comandos
 +
}while(condição);
 +
?>
 +
 
 +
Ex.:
 +
 
 +
<?php
 +
  $i = 0;
 +
  do {
 +
    echo $i;
 +
  } while ($i > 0);
 +
?>
 +
 
 +
====For====
 +
<?php
 +
  for (expressao1; expressao2; expressao3){
 +
      //instruções
 +
  }
 +
?>
 +
Assim como em C, cada uma das expressões podem conter varios comandos, sempre separados por virgulas, ou não conter nenhum.
 +
 
 +
Ex.:
 +
 
 +
  <?php
 +
    for ($i = 1; $i <= 10; $i++) {
 +
      echo $i;
 +
  }
 +
  ?>
 +
 +
  <?php
 +
    for ($i = 0, $j = 10; $i <= 10; $j >= 0, echo $i, $i++,$j--);
 +
  ?>
 +
 
 +
====Foreach====
 +
Maneira simples de manipular e iterar matrizes.
 +
<?php
 +
  foreach ( array as $valor){
 +
      //instruções
 +
  }
 +
  foreach ( array as $chave => $valor){
 +
      //instruções
 +
}
 +
?>
 +
 
 +
Ex.:
 +
<?php
 +
  $vetor = array(1, 2, 3, 4);
 +
  foreach ($vetor as &$valor) {
 +
      $valor = $valor * 2;
 +
  }
 +
?>
 +
 
 +
<?php
 +
  $vetor = array("um", "dois", "três");
 +
  foreach ($vetor as $chave => $valor) {
 +
      echo "Chave: $chave; Valor: $valor<br />\n";
 +
  }
 +
?>
 +
 
 +
====Break/Continue====
 +
Suas funções são similares às de C.
 +
Break e continue aceitam um argumento numérico opcional que diz quantas estruturas devem ser quebradas(break) ou quantos loops devem saltar(continue).
 +
 
 +
Ex:
 +
<?php
 +
  $i = 0;
 +
  while (++$i) {
 +
    switch ($i) {
 +
          case 1:
 +
              echo "i=1\n";
 +
              break 1;  /* Sai switch. */
 +
          case 10:
 +
              echo "i=10\n";
 +
              break 2;  /* Sai do switch e while. */
 +
          default:
 +
              break;
 +
    }
 +
  }
 +
  ?>
 +
 
 +
<?php
 +
  $i = 0;
 +
  while ($i++ < 5) {
 +
    while (1) {
 +
        while (1) {
 +
            continue 3;
 +
        }
 +
        echo "Nunca passa por aqui.";
 +
    }
 +
    echo "Nunca passa por aqui.";
 +
  }
 +
  ?>
 +
 
 +
===Sintaxe alternativa===
 +
PHP possui uma sintaxe alternativa para algumas estruturas como if, while, for, foreach e switch.
 +
A forma básica é colocar ":" no lugar da chave de abertura "{" e endif,endwhile,endfor, endforeach e endswitch no lugar da chave fechamento "}".
 +
 
 +
Ex.:
 +
<?php
 +
  if ($a == 5):
 +
      echo "a igual a 5";
 +
      elseif ($a == 6):
 +
        echo "a igual a 6";
 +
  else:
 +
      echo "a não é nem 5 nem 6";
 +
  endif;
 +
?>
 +
 
 +
===Funcões===
 +
 
 +
<?php
 +
  function nome_função ($arg_1, $arg_2, ..., $arg_n) {
 +
      //Bloco de comandos...
 +
        return $valor_retorno;
 +
  }
 +
?>
 +
 
 +
As funções podem ser definidas condicionalmente como no exemplo a seguir:
 +
 
 +
<?php
 +
    $flag = true;
 +
    //funcaoX ainda nao existe
 +
    if ($flag){
 +
      function funcaoX ()
 +
    {
 +
    //funcaoX passa a existir
 +
?>
 +
 
 +
Ou funções dentro de funções:
 +
 
 +
<?php
 +
  function funcaoX(){
 +
    function funcaoY(){
 +
      //funcaoY só existe quando funcaoX é chamada
 +
    }
 +
  }
 +
  funcaoX();
 +
  //agora funcaoY existe e pode ser chamada
 +
  funcaoY();
 +
?>
 +
 
 +
===Classes e Objetos===
 +
 
 +
====Classes====
 +
 
 +
Uma classe pode ser definida da seguinte forma:
 +
<?php
 +
  class NomeDaClasse{
 +
      //atributos
 +
      function Metodo(){
 +
      }
 +
  }
 +
?>
 +
 
 +
Ex.:
 +
<?php
 +
  class pessoa{
 +
    var $idade;
 +
    function aniversario(){
 +
        $this->idade += 1;
 +
    }
 +
  }
 +
?>
 +
 
 +
====Objetos====
 +
<?php
 +
  $nome_objeto = new NomeDaClasse;
 +
  $nome_objeto->Metodo();
 +
?>
 +
 
 +
Ex:
 +
<?php
 +
  $joao = new pessoa;
 +
  $joao->aniversario();
 +
?>
 +
 
 +
===Definição de comentários===
 +
 
 +
<?php
 +
    // Comentario estilo C++
 +
    /* Comentario usando
 +
      varias linhas */
 +
    # Comentario estilo shell
 +
?>
 +
 
 +
===Arquivos===
 +
 
 +
Aqui estão algumas funções usadas para manipular arquivos em PHP:
 +
fopen("arquivo",modo) -> Abrir um arquivo onde:
 +
arquivo - string contendo o nome do arquivo
 +
modo - especifica o modo de abertura(leitura,escrita,etc...)
 +
A funcao é semelhante a função do C.
 +
 
 +
Ex.:
 +
<?php
 +
  $file = fopen(teste.txt,”r+”);
 +
?>
 +
 
 +
fclose("arquivo") -> Fecha o arquivo.
 +
 
 +
Ex.:
 +
<?php
 +
  fclose($file);
 +
?>
 +
 
 +
As funções para escrever o arquivo são :
 +
fwrite()
 +
fputs();
 +
 
 +
Para ler um arquivo usa-se:
 +
 
 +
fread()
 +
fgets();
 +
 
 +
===Banco de Dados===
 +
 
 +
O PHP tem suporte a varios bancos de dados, por exemplo, MySQL, Firebird/InterBase, PostgreSQL. Para cada banco de dados existe um conjunto de funções especificas de cada um para interagir com o PHP.
 +
Para resolver essa desvantagem, existem varias bibiotecas de abstração de dados tais como: DBX, ADODB, Metabase, PEAR::DB, PEAR::MDB e PHPLIB.
 +
Com essas bibliotecas pode-se mudar o banco de dados sem precisar mudar todo o script. A unica desvantagem é o tempo de acesso ao banco que fica um pouco mais lento.
 +
 
 +
===Dispositivos externos===
 +
 
 +
====Impressoras====
 +
 
 +
Para o PHP se comunicar com a impressora, usa-se as 'Printer functions'(disponiveis apenas para Windows 9.x, ME, NT4 e 2000).
 +
Para habilitar as funções basta adicionar a linha abaixo no arquivo php.ini:
 +
 
 +
extension=php_printer.dll
 +
 
 +
As funções estão documentadas nesse link: http://www.php.net/printer
 +
 
 +
===Bibliotecas===
 +
====include() e require()====
 +
O PHP pode incluir arquivos no seu código atual usando os construtores include() e o require().
 +
Esses arquivos incluídos podem servir como um a biblioteca php.
 +
O include() inclui e executa um trecho opcional de codigo. O require() faz a mesma coisa que o include() mas ocorre um Erro fatal(para a execução) se o arquivo requerido não existir.
 +
Existe ainda o require_once() onde tem a mesma função que o require, porém evita que o arquivo seja incluido novamente.
 +
Ex.:
 +
<?php
 +
  include('funcoes.php');
 +
  require('funcoes.php');
 +
  require_once('funcoes.php');
 +
?>
 +
 
 +
===Integração entre linguagens===
 +
 
 +
PHP pode interagir com Java utilizando o Java/Bridge.
 +
O PHP/Java Bridge é um protocolo baseado em XML que pode ser usado para conectar um script PHP com Java. Ele permite que as calsses do Java possam ser acessadas de dentro do PHP e vice-versa.
 +
Mais informações em http://php-java-bridge.sourceforge.net/doc/
 +
 
 +
Existe também uma integração entre o PHP e o Flash(action script) onde o flash chama um arquivo php e com isso pode carregar suas variáveis.
 +
Mais informações em http://pt.wikibooks.org/wiki/Aplicativos_em_PHP/Recursos_Extras/Integra%C3%A7%C3%A3o_com_Flash
 +
 
 +
Para que o PHP integre-se com o .NET é preciso utilizar um compilador PHP para .NET chamado Phalanger, o qual é integrado ao Visual Studio.
 +
Outro jeito mais simples é a utilização de pacotes .NET numa aplicação PHP
 +
Para saber mais sobre o Phalanger acesse http://php-compiler.net/doku.php
 +
 
 +
 
 +
Além dessa linguagens, o PHP também interage com javascript onde as 2 linguagens podem trocar funções e variáveis. Para isso basta adicionar o codigo em javascript dentro do php ou criar um novo arquivo e depois adicionar esse arquivo usando um inclide().
  
 
== Ferramentas ==
 
== Ferramentas ==
Line 49: Line 444:
 
=== Ferramentas de Documentação ===
 
=== Ferramentas de Documentação ===
  
Questão 7
+
O PHP tem a seu dispor algumas ferramentas para auxiliar o usuário na documentação do código, as principais são<nowiki>:</nowiki>
 +
 
 +
:*phpDocumentor: É a ferramenta opensource padrão de auto-documentação. Também conhecido como phpdoc, é escrito em PHP e similar ao JavaDoc. Capaz de gerar a documentação completa de páginas em PHP. Mais informações no site: http://www.phpdoc.org/.
 +
:*PHPXref - Mais uma ferramenta opensource, gera a documentação no formato HTML. Escrito em Perl. Mais informações: http://phpxref.sourceforge.net/.
 +
:*PHP Documentation Generator - Mais um opensource. Escrito em Perl, similar ao Javadoc. Mais informações: http://freshmeat.net/projects/phpdocgen/.
 +
:*PHP Documentation Tool - Software comercial, desenvolvido pela Winnersh Triangle Web Solutions Limited. Disponível para Trial.Mais informações: http://www.winnershtriangle.com/w/Products.PHPDocumentationTool.asp.
  
 
=== IDE's ===
 
=== IDE's ===
  
Questão 10
+
Por ser uma linguagem muito usada no mundo todo, existem muitos IDE's com suporte a PHP. Um dos principais IDE's para PHP, senão o principal, é o Zend Studio for Eclipse, desenvolvido pela Zend Technologies, a mesma empresa desenvolvedora do PHP. É voltado para Eclipse, dá suporte a PHPDocumentor, SubVersion,  Integração com os principais banco de dados, entre outros. Alguns dos principais IDE's e suas características são:
 +
 
 +
:'''Zend Studio for Eclipse'''
 +
::*Fabricante: Zend Technologies
 +
::*Site: http://www.zend.com/en/products/studio/
 +
::*Preço: $ 350 com um ano de suporte, $ 667 com 3 anos de suporte.
 +
::*Licensa Propietária
 +
::*Características:
 +
::**Suporte a PHP 4 e 5
 +
::**Destacador de sintaxe
 +
::**Suporte a phpDocumentor
 +
::**Suporte a SubVersion
 +
::**Suporte aos principais bancos de dados
 +
 +
:'''Komodo IDE'''
 +
::*Fabricante: ActiveState.
 +
::*Site: http://www.activestate.com/Products/komodo_ide/index.mhtml
 +
::*Preço: $295.00
 +
::*Licensa Propietária
 +
::*Características:
 +
::**Escrito em Python, JavaScript, XUL
 +
::**Suporta Perl, PHP, Python, Ruby, Tcl, JavaScript, CSS, HTML e XML
 +
::**Ferramenta Auto-completar
 +
::**Destacador de sintaxe
 +
::**Debugger para PHP e as demais linguagens
 +
 
 +
:'''Adobe Dreamweaver'''
 +
::*Fabricante: Adobe
 +
::*Site: http://www.adobe.com/support/dreamweaver/
 +
::*Preço: $468.00
 +
::*Licensa Propietária
 +
::*Características:
 +
::**Destacador de Sintaxe
 +
::**Autocompleta funções e mostra a documentação destas.
 +
::**Escrito em C++
 +
::**Suporta as principais linguagens voltadas para web
 +
 
 +
:'''NuSphere PHPEd'''
 +
::*Fabricante: NuSphere
 +
::*Site: http://www.nusphere.com/
 +
::*Preço: $249.00
 +
::*Licensa Propietária
 +
::*Características
 +
::**Disponível para Linux
 +
::**Ferramente de conexão ao banco de dados
 +
::**Destacador de sintaxe
 +
 
 +
:'''PHPEdit'''
 +
::*Fabricante: WaterProof SARL
 +
::*Site: http://www.phpedit.com
 +
::*Preço: 89.00 €
 +
::*Licensa: Proprietária
 +
::*Características:
 +
::**Suporta CSS, HTML, JavaScript, INI, PHPEditScript, PHP, PlainText, SQL, XML, and XSLT
 +
::**Destacador de sintaxe
 +
::**Ferramente de autocompletar
 +
::**Escrito em Delphi
 +
::**Debugger
 +
::**Gerador de Help
 +
 +
:'''gPHPedit'''
 +
::*Fabricante: Andy Jeffries
 +
::*Site: http://www.gphpedit.org/
 +
::*Preço: Free
 +
::*Licensa: Livre
 +
::*Características:
 +
::**Roda em qualquer plataforma
 +
::**Destacador de sintaxe (PHP/HTML, CSS, SQL)
 +
::**Ferramente de autocompletar
 +
::**Escrito em C
 +
 +
:'''PHPEclipse'''
 +
::*Fabricante: Opensource
 +
::*Site: http://www.phpeclipse.de/
 +
::*Preço: Free
 +
::*Licensa: Livre
 +
::*Características:
 +
::**Plugin para Eclipse
 +
::**Multi-plataforma
 +
::**Destacador de sintaxe
 +
::**Auto-completar
 +
::**Debugger
 +
::**Escrito em Java
 +
 
 +
Existem inúmeros IDE's para PHP, as citadas acimas são alguns dos principais exemplos de IDE's livres e comerciais. Uma lista mais completa de IDE's para PHP pode ser encontrada nos sites:
 +
*http://en.wikipedia.org/wiki/PHP_IDE
 +
*http://en.wikipedia.org/wiki/List_of_PHP_editors
  
 
== O Que PHP pode fazer ==
 
== O Que PHP pode fazer ==
 +
 +
Basicamente com o PHP é possível se fazer qualquer coisa.
  
 
=== Aplicações Web ===
 
=== Aplicações Web ===
  
Questão 8
+
A linguagem PHP basicamente foi desenvolvida para gerar conteúdo dinâmico para a web, dessa forma, é normal que seja essa a principal utilização da linguagem.
  
 
=== Aplicações Desktop ===
 
=== Aplicações Desktop ===
  
Questão 8
+
Por ser uma linguagem desenvolvida para aplicações web, o PHP não se destaca em aplicações desktop com interfaces gráficas, sendo necessário um usuário mais experiente para desenvolver este tipo de aplicações, além de utilizar o PHP-GTK, uma extensão do PHP (não disponibilizada na distribuição oficial).
 +
Página oficial do PHP-GTK: http://gtk.php.net/
  
=== Controles Personalizados ===
 
  
Questão 9
 
  
 
== Padrão PHP ==
 
== Padrão PHP ==
  
Questão 11
+
A linguagem PHP não possui uma especificação formal de padronização. Por sua sintaxe se aproximar de C/C++, muitas pessoas utilizavam o padrão C++ como padrão para os códigos em PHP. Para resolver problemas comuns e melhorar a eficiência de acesso a alguns tipos de dados foi criada a Biblioteca Padrão de PHP (The Standard PHP Library – SPL), uma coleção de classes e interfaces que é usada como uma forma de “padronização” da linguagem. Porém ela ainda é muito pouco utilizada, um dos principais motivos é o fato de não possui uma documentação oficial.
 +
 
 +
The Standard PHP Library  - http://www.php.net/~helly/php/ext/spl/
 +
 
 +
== Referências ==
 +
 
 +
*http://en.wikipedia.org/wiki/PHP
 +
*http://www.php.net/
 +
*http://en.wikipedia.org/wiki/Adobe_Dreamweaver
 +
*http://en.wikipedia.org/wiki/ActiveState_Komodo
 +
*http://en.wikipedia.org/wiki/Zend_Studio
 +
*http://en.wikipedia.org/wiki/GPHPedit
 +
*http://en.wikipedia.org/wiki/PHPEclipse
 +
*http://en.wikipedia.org/wiki/PHPEclipse
 +
*http://blog.carlos-rodrigues.com/2005/05/ide-para-php.html
 +
*http://gtk.php.net/manual1/pt_BR/html/intro.whatis.php.history.html
 +
*http://www.php.net/history
 +
*http://pt.wikibooks.org/wiki/Aplicativos_em_PHP/Introdu%C3%A7%C3%A3o/Hist%C3%B3ria
 +
*http://xoopscube.com.br/php.php
 +
*http://www.moko.ru/doc/php/doc.html#history
 +
*http://br.php.net/manual/pt_BR/language.basic-syntax.php
 +
*http://pt.wikibooks.org/wiki/Aplicativos_em_PHP
 +
*http://www.phpmania.org/modules.php?name=php_how_to&page=language.types.html
 +
*http://fdweb.com.br/acessando-banco-de-dados-usando-php-e-adodb/
 +
*http://www.prophp.com.br/artigo_13.php
 +
*http://br.php.net/manual/pt_BR/function.include.php
 +
*http://novatec.com.br/livros/phpgtk/capitulo9788575221105.pdf
 +
*http://www.metzen.com.br/blog/2007/10/18/standard_php_library/
 +
*As demais referências estão citados nos tópicos

Latest revision as of 21:34, 7 October 2008


PHP



Introdução

PHP significa Hypertext Preprocessor, é uma linguagem do tipo script, que pode ser imbutida ao HTML para gerar páginas mais dinâmicas. As características básicas do PHP são:

  • PHP é executado pelo servidor, o usuário não tem acesso ao código PHP.
  • PHP é free, pode ser executado em servidores OpenSource como o apache (http://www.apache.org/).
  • PHP oferece suporte a diversos banco de dados, potencializando o desenvolvimento de aplicações em PHP.
  • PHP é multi-plataforma, roda em qualquer sistema operacional.

História

Como surgiu

O ancestral do PHP foi criado em 1995 por Rasmus Lerdorf e era bem mais modesto do que o atual PHP. O objetivo de Rasmus era substituir alguns scripts em Perl usados em sua página, criando ferramentas simples típicas de páginas pessoais, como estatísticas de acesso. As necessidades dele foram crescendo e Rasmus decidiu fazer uma nova implementação em C, com mais recursos, chamado PHP/FI (Personal Home Page / Forms Interpreter). O código foi disponibilizado e alcançou um sucesso considerável em sua segunda versão. Em 1997 Andi Gutmans e Zeev Suraski, reescreveram o PHP, para usar em aplicações de comércio eletrônico desenvolvidas na faculdade. Proclamaram o novo código como a vesão 3.0 do PHP. O PHP 3.0 é a primeira versão do atual PHP, que está na versão 5. Por ser um código facilmente extensível, com uma quantidade muito grande de recursos, o PHP atraiu a atenção dos desenvolvedores e se tornou um grande sucesso.

Principais nomes

A linguagem PHP foi criada por Rasmus Lerdorf por volta de 1994. Ao finalizar a primeira versão, no início de 1995, Rasmus tornou-a open-source, dessa forma muitas pessoas passaram a contribuir em melhorias. Em seguida, Rasmus acrescentou funções (de acordo com as necessidades das aplicações web da época) ao PHP. Em 1997,Zeev Suraski e Andi Gutmans desenvolveram o analisador do PHP3. O PHP passou a estar sobre a orientação de um grupo. Suraski e Gutmans reescreveram o PHP algum tempo depois, originando o PHP4, agora utilizando tecnologia Zend. No ano de 2004, foi lançado o PHP5 incorporando o Zend Engine 2.0. As últimas versões do PHP foram desenvolvidas pelo The PHP Group (que é mantido pela Zend Technologies – The PHP Company). Pagina oficial da Zend Technologies: http://www.zend.com/en/

Versões

PHP/FI

Foi criado em 1995 por Rasmus Lerdorf com a sintaxe baseada em Perl e nomeou os scripts de “Personal Home Page Tools”. Com a necessidade de mais funcionalidades, ele criou um interpretador de comandos SQL que foi chamado de “Forms Interpreter” e juntou ao PHP, assim criando o PHP/FI. Com a possibilidade de trabalhar com banco de dados, o PHP/FI passou a ser usado não somente para construir páginas pessoais, como também websites inteiros. Outra característica do PHP/FI era que os scripts eram colocados diretamente nos arquivos HTML o que aumentou o desempenho dos sites. Sua sintaxe era parecida com Perl mas muito limitada e um pouco inconsistente. Possuía também interpretação automática de variáveis vinda dos formulários.


PHP 3

Foi totalmente reescrita por Andi Gutmans e Zeev Suraski passando a ter uma sintaxe muito mais consistente. Foi também a primeira versão que se assemelha com o PHP de hoje. Seu grande atrativo era a grande capacidade de extensibilidade. Ele oferecia também uma infra-estrutura sólida para vários banco de dados, protolocos e APIs. Alem disso, no PHP3 foi introduzido o suporte a sintaxe para orientação à objetos. Tudo isso atraiu milhares de desenvolvedores, o que tornou o PHP um grande sucesso.


PHP 4

O PHP 4 foi baseado na engine 'Zend’ e trouxe varias características novas. Dentre elas estão o suporte a muitos servidores Web, sessões http(variável $_SESSION), maneiras seguras de manipular dados (variáveis $_GET , $_POST), buffer de saída e muitas novas construções na linguagem. O objetivo dessa nova versão era melhorar o desempenho das aplicações complexas e melhorar a modularidade do código base.


PHP 5

É a atual versão do PHP. Ele conta com uma nova engine (Zend Engine 2.0) e com isso trouxe um novo modelo de orientação a objetos. Foram reformulados os contrutores e criaram os destrutores,visibilidade de acesso, abstração de objeto e interfaces de objetos.

PHP e as aplicações comerciais

O PHP é largamente usado no desenvolvimento de aplicações comerciais, principalmente em sistemas web, de pequeno a grande porte, e frameworks. A lista de sites/aplicações desenvolvidas em PHP é extensa, alguns exemplos são:


Grande parte dos exemplos é OpenSource, com suporte comercial. Este site contém uma imensa lista de aplicações desenvolvidas em PHP http://www.hotscripts.com/PHP/Scripts_and_Programs/index.html.

Alguns exemplos de grandes sites desenvolvidos em PHP é o wikipedia (http://wikipedia.org) e o Yahoo! (http://br.yahoo.com/).

Como funciona o PHP

Linguagem Interpretada

PHP é uma linguagem de programação desenvolvida para ser interpretada, não havendo necessidade de compilação para qualquer ferramenta extra. Entretanto, recentemente foi lançado um compilador PHP, o Roadsend PHP Compiler. Existem outros, mas o Roadsend é o de maior destaque. Página oficial do Roadsend PHP Compiler: http://www.roadsend.com/home/index.php?SMC=1

Independente de Máquina?

A aplicação web do PHP é multi-plataforma, funcionando na maioria dos sistemas operacionais (Linux, muitas variantes do Unix, Microsoft Windows, Mac OS X, RISC OSe outros), dando liberdade de escolha do sistema operacional e o servidor web. Uma aplicação web feita em PHP roda em qualquer lugar sem acrescentar configurações. Porém, o PHP-GTK, apesar de rodar em vários sistemas operacionais, não é de fato multi-plataforma, sendo necessário algumas linhas de comandos a mais; além disso, sua aplicação deve estar configurada na máquina em que está sendo utilizada.

Requisitos Mínimos

Os requisitos para se rodar PHP variam de acordo com o que o usuário deseja fazer. Para a criação de websites e aplicações web, necessita-se do próprio PHP, um servidor web e um browser web (cliente web). As aplicações são executadas no browser. Se o usuário deseja fazer uma aplicação desktop (GUI), ele precisará do PHP-GTK. Nesse caso, a saída não é em HTML e sim janelas (que pode ter conectividade com o servidor). Porém o PHP-GTK precisa estar instalado em cada maquia-cliente que utilizará a aplicação.

A linguagem

Sintaxe basica

O código em PHP começa com a tag ‘<?php’ e termina com ‘?>’ , ou seja, tudo o que estiver fora das tags serão ignorados pelo interpretador PHP.

<?php
 echo Código em PHP'; 
?>


Variáveis

As variáveis em php começam com $ e são declaradas no momento em que é atribuído seu valor (inteiro, string, array, etc.), ou seja, não é necessário indicar o nome e o tipo como em C. O php é case sensitive.

<?php
$x = 10;
$str = “teste”;
$a[0] =  1;
$a[1] = 2;
?> 

Instruções condicionais

If...else

<?php
   if (expressão){
      //Entra aqui se a expressão for verdadeira
   }
   else{ 
     //Entra aqui se a expressão for falsa
   }
?>

If...elseif

É uma combinação de else e if. Ex.:

<?php
  if ($a > 10) {
     echo "a é maior que 10";
  } elseif ($a == 10) {
    echo "a é igual a 10";
  } else {
    echo "a é menor que 10";
  }
 ?>


Switch

<?php
  switch (variável) { 
           case valor1:
                     //Bloco de comandos Comandos...
                     break;
           case valor2: 
                    //Bloco de comandos Comandos...
                    break; 
           case valor3:
                    //Bloco de comandos Comandos...
                    break;
           default:
                    //Bloco de comandos executado apenas se nenhuma
                   //das condições anteriores forem aceitas...
}
?>

Instruções de repetição

While

<?php
 while(condição){
   //comandos
 }
?>

Ex.:

<?php
  $i = 0;
  while ($i <= 10) {
    echo $i++;  
  }
?>

Do...while

<?php
 do{
 //comandos
}while(condição);
?>

Ex.:

<?php
  $i = 0;
  do {
    echo $i;
  } while ($i > 0);
?>

For

<?php
  for (expressao1; expressao2; expressao3){
     //instruções
  }
?>

Assim como em C, cada uma das expressões podem conter varios comandos, sempre separados por virgulas, ou não conter nenhum.

Ex.:

 <?php
   for ($i = 1; $i <= 10; $i++) {
     echo $i;
 }
 ?>

 <?php 
   for ($i = 0, $j = 10; $i <= 10; $j >= 0, echo $i, $i++,$j--);
 ?>

Foreach

Maneira simples de manipular e iterar matrizes.

<?php
  foreach ( array as $valor){
     //instruções
  }
  foreach ( array as $chave => $valor){
     //instruções
}
?>

Ex.:

<?php
  $vetor = array(1, 2, 3, 4);
  foreach ($vetor as &$valor) {
     $valor = $valor * 2;
  }
?> 
<?php
  $vetor = array("um", "dois", "três");
  foreach ($vetor as $chave => $valor) {
     echo "Chave: $chave; Valor: $valor
\n"; } ?>

Break/Continue

Suas funções são similares às de C. Break e continue aceitam um argumento numérico opcional que diz quantas estruturas devem ser quebradas(break) ou quantos loops devem saltar(continue).

Ex:

<?php
 $i = 0;
 while (++$i) {
   switch ($i) {
          case 1:
             echo "i=1\n";
             break 1;  /* Sai switch. */
          case 10:
             echo "i=10\n";
             break 2;  /* Sai do switch e while. */
          default:
             break;
   }
 }
 ?>
<?php
 $i = 0;
 while ($i++ < 5) {
    while (1) {
       while (1) {
           continue 3;
       }
       echo "Nunca passa por aqui.";
   }
   echo "Nunca passa por aqui.";
 }
 ?>

Sintaxe alternativa

PHP possui uma sintaxe alternativa para algumas estruturas como if, while, for, foreach e switch. A forma básica é colocar ":" no lugar da chave de abertura "{" e endif,endwhile,endfor, endforeach e endswitch no lugar da chave fechamento "}".

Ex.:

<?php
  if ($a == 5):
     echo "a igual a 5";
     elseif ($a == 6):
        echo "a igual a 6";
  else:
     echo "a não é nem 5 nem 6";
 endif;
?>

Funcões

<?php
 function nome_função ($arg_1, $arg_2, ..., $arg_n) {
      //Bloco de comandos...
       return $valor_retorno;
 } 
?>

As funções podem ser definidas condicionalmente como no exemplo a seguir:

<?php
   $flag = true;
   //funcaoX ainda nao existe
   if ($flag){
      function funcaoX ()
   {
   //funcaoX passa a existir
?>

Ou funções dentro de funções:

<?php
 function funcaoX(){
    function funcaoY(){
     //funcaoY só existe quando funcaoX é chamada
    } 
 }
 funcaoX();
 //agora funcaoY existe e pode ser chamada
 funcaoY();
?>

Classes e Objetos

Classes

Uma classe pode ser definida da seguinte forma:

<?php
  class NomeDaClasse{
      //atributos
      function Metodo(){
      }
  }
?>

Ex.:

<?php
 class pessoa{
   var $idade; 
   function aniversario(){
       $this->idade += 1;
   }
 }
?>

Objetos

<?php
  $nome_objeto = new NomeDaClasse;
  $nome_objeto->Metodo();
?>

Ex:

<?php
  $joao = new pessoa;
  $joao->aniversario();
?>

Definição de comentários

<?php
   // Comentario estilo C++
   /* Comentario usando 
      varias linhas */
   # Comentario estilo shell
?>

Arquivos

Aqui estão algumas funções usadas para manipular arquivos em PHP: fopen("arquivo",modo) -> Abrir um arquivo onde: arquivo - string contendo o nome do arquivo modo - especifica o modo de abertura(leitura,escrita,etc...) A funcao é semelhante a função do C.

Ex.:

<?php 
  $file = fopen(teste.txt,”r+”);
?>

fclose("arquivo") -> Fecha o arquivo.

Ex.:

<?php 
 fclose($file); 
?>

As funções para escrever o arquivo são :

fwrite()
fputs();

Para ler um arquivo usa-se:

fread()
fgets();

Banco de Dados

O PHP tem suporte a varios bancos de dados, por exemplo, MySQL, Firebird/InterBase, PostgreSQL. Para cada banco de dados existe um conjunto de funções especificas de cada um para interagir com o PHP. Para resolver essa desvantagem, existem varias bibiotecas de abstração de dados tais como: DBX, ADODB, Metabase, PEAR::DB, PEAR::MDB e PHPLIB. Com essas bibliotecas pode-se mudar o banco de dados sem precisar mudar todo o script. A unica desvantagem é o tempo de acesso ao banco que fica um pouco mais lento.

Dispositivos externos

Impressoras

Para o PHP se comunicar com a impressora, usa-se as 'Printer functions'(disponiveis apenas para Windows 9.x, ME, NT4 e 2000). Para habilitar as funções basta adicionar a linha abaixo no arquivo php.ini:

extension=php_printer.dll

As funções estão documentadas nesse link: http://www.php.net/printer

Bibliotecas

include() e require()

O PHP pode incluir arquivos no seu código atual usando os construtores include() e o require(). Esses arquivos incluídos podem servir como um a biblioteca php. O include() inclui e executa um trecho opcional de codigo. O require() faz a mesma coisa que o include() mas ocorre um Erro fatal(para a execução) se o arquivo requerido não existir. Existe ainda o require_once() onde tem a mesma função que o require, porém evita que o arquivo seja incluido novamente. Ex.:

<?php
 include('funcoes.php');
 require('funcoes.php');
 require_once('funcoes.php'); 
?>

Integração entre linguagens

PHP pode interagir com Java utilizando o Java/Bridge. O PHP/Java Bridge é um protocolo baseado em XML que pode ser usado para conectar um script PHP com Java. Ele permite que as calsses do Java possam ser acessadas de dentro do PHP e vice-versa. Mais informações em http://php-java-bridge.sourceforge.net/doc/

Existe também uma integração entre o PHP e o Flash(action script) onde o flash chama um arquivo php e com isso pode carregar suas variáveis. Mais informações em http://pt.wikibooks.org/wiki/Aplicativos_em_PHP/Recursos_Extras/Integra%C3%A7%C3%A3o_com_Flash

Para que o PHP integre-se com o .NET é preciso utilizar um compilador PHP para .NET chamado Phalanger, o qual é integrado ao Visual Studio. Outro jeito mais simples é a utilização de pacotes .NET numa aplicação PHP Para saber mais sobre o Phalanger acesse http://php-compiler.net/doku.php


Além dessa linguagens, o PHP também interage com javascript onde as 2 linguagens podem trocar funções e variáveis. Para isso basta adicionar o codigo em javascript dentro do php ou criar um novo arquivo e depois adicionar esse arquivo usando um inclide().

Ferramentas

Ferramentas de Documentação

O PHP tem a seu dispor algumas ferramentas para auxiliar o usuário na documentação do código, as principais são:

IDE's

Por ser uma linguagem muito usada no mundo todo, existem muitos IDE's com suporte a PHP. Um dos principais IDE's para PHP, senão o principal, é o Zend Studio for Eclipse, desenvolvido pela Zend Technologies, a mesma empresa desenvolvedora do PHP. É voltado para Eclipse, dá suporte a PHPDocumentor, SubVersion, Integração com os principais banco de dados, entre outros. Alguns dos principais IDE's e suas características são:

Zend Studio for Eclipse
  • Fabricante: Zend Technologies
  • Site: http://www.zend.com/en/products/studio/
  • Preço: $ 350 com um ano de suporte, $ 667 com 3 anos de suporte.
  • Licensa Propietária
  • Características:
    • Suporte a PHP 4 e 5
    • Destacador de sintaxe
    • Suporte a phpDocumentor
    • Suporte a SubVersion
    • Suporte aos principais bancos de dados
Komodo IDE
  • Fabricante: ActiveState.
  • Site: http://www.activestate.com/Products/komodo_ide/index.mhtml
  • Preço: $295.00
  • Licensa Propietária
  • Características:
    • Escrito em Python, JavaScript, XUL
    • Suporta Perl, PHP, Python, Ruby, Tcl, JavaScript, CSS, HTML e XML
    • Ferramenta Auto-completar
    • Destacador de sintaxe
    • Debugger para PHP e as demais linguagens
Adobe Dreamweaver
  • Fabricante: Adobe
  • Site: http://www.adobe.com/support/dreamweaver/
  • Preço: $468.00
  • Licensa Propietária
  • Características:
    • Destacador de Sintaxe
    • Autocompleta funções e mostra a documentação destas.
    • Escrito em C++
    • Suporta as principais linguagens voltadas para web
NuSphere PHPEd
  • Fabricante: NuSphere
  • Site: http://www.nusphere.com/
  • Preço: $249.00
  • Licensa Propietária
  • Características
    • Disponível para Linux
    • Ferramente de conexão ao banco de dados
    • Destacador de sintaxe
PHPEdit
  • Fabricante: WaterProof SARL
  • Site: http://www.phpedit.com
  • Preço: 89.00 €
  • Licensa: Proprietária
  • Características:
    • Suporta CSS, HTML, JavaScript, INI, PHPEditScript, PHP, PlainText, SQL, XML, and XSLT
    • Destacador de sintaxe
    • Ferramente de autocompletar
    • Escrito em Delphi
    • Debugger
    • Gerador de Help
gPHPedit
  • Fabricante: Andy Jeffries
  • Site: http://www.gphpedit.org/
  • Preço: Free
  • Licensa: Livre
  • Características:
    • Roda em qualquer plataforma
    • Destacador de sintaxe (PHP/HTML, CSS, SQL)
    • Ferramente de autocompletar
    • Escrito em C
PHPEclipse
  • Fabricante: Opensource
  • Site: http://www.phpeclipse.de/
  • Preço: Free
  • Licensa: Livre
  • Características:
    • Plugin para Eclipse
    • Multi-plataforma
    • Destacador de sintaxe
    • Auto-completar
    • Debugger
    • Escrito em Java

Existem inúmeros IDE's para PHP, as citadas acimas são alguns dos principais exemplos de IDE's livres e comerciais. Uma lista mais completa de IDE's para PHP pode ser encontrada nos sites:

O Que PHP pode fazer

Basicamente com o PHP é possível se fazer qualquer coisa.

Aplicações Web

A linguagem PHP basicamente foi desenvolvida para gerar conteúdo dinâmico para a web, dessa forma, é normal que seja essa a principal utilização da linguagem.

Aplicações Desktop

Por ser uma linguagem desenvolvida para aplicações web, o PHP não se destaca em aplicações desktop com interfaces gráficas, sendo necessário um usuário mais experiente para desenvolver este tipo de aplicações, além de utilizar o PHP-GTK, uma extensão do PHP (não disponibilizada na distribuição oficial). Página oficial do PHP-GTK: http://gtk.php.net/


Padrão PHP

A linguagem PHP não possui uma especificação formal de padronização. Por sua sintaxe se aproximar de C/C++, muitas pessoas utilizavam o padrão C++ como padrão para os códigos em PHP. Para resolver problemas comuns e melhorar a eficiência de acesso a alguns tipos de dados foi criada a Biblioteca Padrão de PHP (The Standard PHP Library – SPL), uma coleção de classes e interfaces que é usada como uma forma de “padronização” da linguagem. Porém ela ainda é muito pouco utilizada, um dos principais motivos é o fato de não possui uma documentação oficial.

The Standard PHP Library - http://www.php.net/~helly/php/ext/spl/

Referências