Hallo ik ben nu al tijdje bezig om oop te leren via het mvc model.
Maar ik vraag me steeds iets af maar kan hier niet echt het antwoord op vinden of wat nou de juiste werkwijze is.
Maak op dit moment om het te leren gebruik van code igniter.
Heb een kleine applicatie geschreven om de google resultaten te scrapen.
Uit de html code haal ik dan de meta title en de meta description.
Hierna maak ik een array met alle woorden die voorkomen en hoevaak ze er in voor komen.
Aan de hand van deze array probeer ik adhv keywords in mijn database te achterhalen om welke niche het gaat.
Hier een stukje van mijn controller :
<?php
## set keyword for scrape google search model
$this->scrapegooglesearch_model->setKeyword($row->keyword);
## load google search content in
$this->scrapegooglesearch_model->loadHtmlContent();
## make words from sentences
$meta_titles_words_array = $this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaTitles());
## make words from sentences
$meta_descriptions_words_array = $this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaDescriptions());
## merge meta title and meta description words
$all_words_array = array_merge($meta_titles_words_array, $meta_descriptions_words_array);
## count how often a word appears in the array
$word_results_array = array_count_values($all_words_array);
## make top words list (dus maak nieuwe array met woorden die meer dan 2x voorkomen)
$this->keyword_model->setTopWords($word_results_array);
## set number of keywords
$this->keyword_model->setNumberOfKeywords($this->keyword_model->getTopWords(), $keywords_from_database);
?>
----------------
Nu heb ik dus 2 models : keyword_model en scrapegooglesearch_model
De scrapegooglesearch_model doet dan alle scrape functies van de google resultaten.
En keyword_model doet alle testen om te achterhalen.
Waar het me nou om gaat is dit:
<?php
$this->keyword_model->setNumberOfKeywords($this->keyword_model->getTopWords(), $this->keyword_model->keywordsFromDatabase());
?>
Hier mee wil ik dus bepalen hoeveel van de meest voorkomende woorden (getTopWords) uit het google resultaat in de meta title en description er voorkomen in mijn array $this->keyword_model->keywordsFromDatabase().
In mijn keyword_model heb ik dus een public numberOfKeywords staan.
Deze set ik dmv setNumberOfKeywords()
Deze kan ik later weer op halen met de method getNumberOfKeywords()
Maar is het echt wel nodig om dit in de method op te slaan?
Kan ik in een controller niet gewoon de variable lokaal opslaan in de controller?
Of moet ik in de controller ook weer een public $aantal_keywords aanmaken? :
<?php
$aantal_keywords = this->keyword_model->calculateNumberOfKeywords($this->keyword_model->getTopWords(), $this->keyword_model->keywordsFromDatabase());
?>
En dan de variable $aantal_keywords in mijn controller gebruiken?
Of moet ik daar echt een getter en setter voor maken?
Later kom ik dit probleem weer tegen wanneer ik uiteindelijk de niche heb bepaald :
-----------------
<?php
class Keywords extends CI_Controller {
public function generate()
{
## save niche for keyword in database
$this->keyword_model->setKeywordNiche($row->keyword, $this->keyword_model->foundNiche());
## set viewdata
$viewdata['results'][] = array('keyword' => $row->keyword, 'niche' => getKeywordNiche($row->keyword));
}
}
?>
-----------------
of is het beter om het zo te doen??? :
-----------------
<?php
class Keywords extends CI_Controller {
public function generate()
{
## save niche for keyword in database
$keyword = $row->keyword
$gevonden_niche = $this->keyword_model->foundNiche();
$this->keyword_model->setKeywordNiche($keyword, $gevonden_niche);
## set viewdata
$viewdata['results'][] = array('keyword' => $keyword, 'niche' => $gevonden_niche);
}
}
?>
-----------------
of zo :
-----------------
<?php
class Keywords extends CI_Controller {
public $keyword;
public $gevonden_niche;
public function generate()
{
## save niche for keyword in database
$this->keyword = $row->keyword
$this->gevonden_niche = $this->keyword_model->foundNiche();
$this->keyword_model->setKeywordNiche($keyword, $gevonden_niche);
## set viewdata
$viewdata['results'][] = array('keyword' => $keyword, 'niche' => $gevonden_niche);
}
}
?>
-----------------
Want ik kan me voorstellen als ik resultaten niet steeds in lokale variabellen zet dat het heel onoverzichtelijk word? Zoals hier :
--------------
<?php
$all_words_array = array_merge($this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaTitles(), $meta_descriptions_words_array = $this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaDescriptions()));
?>
----------------
dus dat ik het op deze manier doe :
----------------
<?php
## make words from sentences
$meta_titles_words_array = $this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaTitles());
## make words from sentences
$meta_descriptions_words_array = $this->texttools_model->sentences2words($this->scrapegooglesearch_model->getMetaDescriptions());
## merge meta title and meta description words
$all_words_array = array_merge($meta_titles_words_array, $meta_descriptions_words_array);
?>
----------------
maar dan zit ik dus weer met het probleem dat ik heel veel lokale variabellen krijg.
Dus kan iemand mij vertellen wat nu de beste werkwijze is?
En/of hoe dit heet want kan er in google weinig over vinden...
Alvast reuze bedankt voor jullie hulp en opmerkingen!
m.v.g.
Chris
2.427 views