Ok, usando scripts de instalação, parece haver uma convenção estranha para usar o seguinte:
$installer = $this;
Eu realmente não entendo isso, pois é completamente redundante.
Por que não usar apenas $this->
o script?
Alguma idéia de por que essa convenção existe?
magento-1
installation
resource-model
setup-script
install-script
Marty Wallace
fonte
fonte
Respostas:
A resposta é muito mais simples. Em 2007 (e acredito que até 2009, quando o PhpStorm começou a balançar), nenhum IDE permitia fornecer phpdoc embutido
$this
. Mas os desenvolvedores principais queriam ter autocompletar no IDE. É por isso que eles usaram essas 2 linhas:Alguns módulos possuem classe de configuração própria e deveriam ter sido usados no phpdoc embutido. Mas como o script setup / upgrade sempre foi criado (e é) via "copie / cole um existente e altere", você pode encontrar alguns exemplos quando o módulo possui uma classe de instalação própria (ou usa o modelo de instalação eav
Mage_Eav_Model_Entity_Setup
), masMage_Catalog_Model_Resource_Setup
é usado no phpdoc embutido na atualização roteiro.fonte
A versão mais antiga que tenho é 1.0. Mesmo assim
$installer = $this;
existia. Mesmo nos arquivos nomeadosupgrade-0.x.y-0.z.t
esta linha existe.Na minha opinião, quando eles começaram (quero dizer a versão 0.1 ou algo parecido) eles tinham algo parecido
$installer = new Something()
e decidiram mudar a lógica.Eu assumo isso por causa da
<class>
tag noconfig.xml
de alguns módulos (Mage_Catalog por exemplo). Versões anteriores à 1.6:Ou nas versões 1.6+:
Eu costumo usar em
$this
vez de$installer
e não tive nenhum problema (se isso é de alguma forma).fonte
Esta é uma convenção de lógica desconhecida e possivelmente duvidosa presente desde a versão beta pública mais antiga de 2007 ( visualização B1 0.6.12383 ; é necessário fazer login).
É usado como uma convenção para garantir que a classe que está executando o código de instalação seja constantemente aliasada nos scripts de instalação. Por exemplo, enquanto os módulos
Enterprise_GiftWrapping
eEnterprise_Rma
têm suas próprias classes de configuração, cada$installer
um deles é alias para uma instânciaMage_Catalog_Model_Resource_Setup
ao adicionar atributos à entidade do produto, por exemplo:app / code / core / Enterprise / GiftWrapping / sql / enterprise_giftwrapping_setup / install-1.11.0.0.php
fonte
Uma coisa que gosto de usar
$installer
que realmente quero adicionar é que facilita a substituição por outra coisa ou a execução fora do escopo da classe.1. Substituindo-o:
2. Âmbito externo:
Claro que com
data-upgrade-0.1.1-0.1.2.php
:Então isso impede
Fatal error: Using $this when not in object context
fonte
Eu acho que é de dias anteriores (<v.1.1). Mas, para ser sincero, não faço ideia. Eu acho que é um pouco melhor de ler ...
Você sabe ;-)
fonte