Add variable type hints

This commit is contained in:
Ivan Lanin 2014-05-12 14:24:13 +07:00
parent c9179d681f
commit 55e715b5b1
13 changed files with 67 additions and 32 deletions

View File

@ -35,7 +35,7 @@ abstract class AbstractContainer extends AbstractElement
protected $elements = array();
/**
* Container type section|header|footer|footnote|endnote|cell|textrun|textbox
* Container type Section|Header|Footer|Footnote|Endnote|Cell|TextRun|TextBox|ListItemRun
*
* @var string
*/
@ -63,9 +63,7 @@ abstract class AbstractContainer extends AbstractElement
}
// Create element
if ($argsCount == 1) { // Page Break
$element = new $elementClass();
} elseif ($argsCount == 2) { // TextRun, TextBox, Table, Footnote, Endnote
if ($argsCount == 2) { // TextRun, TextBox, Table, Footnote, Endnote
$element = new $elementClass($args[1]);
} elseif ($argsCount == 3) { // Object, TextBreak, Title
$element = new $elementClass($args[1], $args[2]);
@ -75,11 +73,13 @@ abstract class AbstractContainer extends AbstractElement
$element = new $elementClass($args[1], $args[2], $args[3], $args[4]);
} elseif ($argsCount == 6) { // ListItem
$element = new $elementClass($args[1], $args[2], $args[3], $args[4], $args[5]);
} else { // Page Break
$element = new $elementClass();
}
// Set relation Id for media collection
$mediaContainer = $this->getMediaContainer();
if (in_array($elementName, array('Link', 'Image', 'Object'))) {
$mediaContainer = $this->getMediaContainer();
if ($elementName == 'Image') {
$rId = Media::addElement($mediaContainer, strtolower($elementName), $args[1], $element);
} else {
@ -228,7 +228,6 @@ abstract class AbstractContainer extends AbstractElement
*
* @param mixed $style
* @return \PhpOffice\PhpWord\Element\Table
* @todo Merge with the same function on Footer
*/
public function addTable($style = null)
{

View File

@ -41,12 +41,14 @@ class Footnote extends AbstractElement
if (!$this->element instanceof \PhpOffice\PhpWord\Element\Footnote) {
return;
}
/** @var \PhpOffice\PhpWord\Writer\HTML $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
$noteId = count($this->parentWriter->getNotes()) + 1;
$noteId = count($parentWriter->getNotes()) + 1;
$noteMark = $this->noteType . '-' . $this->element->getRelationId();
$content = "<a name=\"{$noteMark}\"><a href=\"#note-{$noteId}\" class=\"NoteRef\"><sup>{$noteId}</sup></a>";
$this->parentWriter->addNote($noteId, $noteMark);
$parentWriter->addNote($noteId, $noteMark);
return $content;
}

View File

@ -37,9 +37,11 @@ class Image extends Text
if (!$this->element instanceof \PhpOffice\PhpWord\Element\Image) {
return;
}
/** @var \PhpOffice\PhpWord\Writer\HTML $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
$content = '';
if (!$this->parentWriter->isPdf()) {
if (!$parentWriter->isPdf()) {
$imageData = $this->getBase64ImageData($this->element);
if (!is_null($imageData)) {
$styleWriter = new ImageStyleWriter($this->element->getStyle());

View File

@ -64,12 +64,14 @@ class Text extends AbstractElement
*/
public function write()
{
/** @var \PhpOffice\PhpWord\Element\Text $element Scrutinizer type hint */
$element = $this->element;
$this->getFontStyle();
$content = '';
$content .= $this->writeOpening();
$content .= $this->openingTags;
$content .= htmlspecialchars($this->element->getText());
$content .= htmlspecialchars($element->getText());
$content .= $this->closingTags;
$content .= $this->closingText;
$content .= $this->writeClosing();
@ -140,12 +142,14 @@ class Text extends AbstractElement
*/
private function getParagraphStyle()
{
/** @var \PhpOffice\PhpWord\Element\Text $element Scrutinizer type hint */
$element = $this->element;
$style = '';
if (method_exists($this->element, 'getParagraphStyle')) {
if (method_exists($element, 'getParagraphStyle')) {
return $style;
}
$paragraphStyle = $this->element->getParagraphStyle();
$paragraphStyle = $element->getParagraphStyle();
$pStyleIsObject = ($paragraphStyle instanceof Paragraph);
if ($pStyleIsObject) {
$styleWriter = new ParagraphStyleWriter($paragraphStyle);
@ -164,8 +168,10 @@ class Text extends AbstractElement
*/
private function getFontStyle()
{
/** @var \PhpOffice\PhpWord\Element\Text $element Scrutinizer type hint */
$element = $this->element;
$style = '';
$fontStyle = $this->element->getFontStyle();
$fontStyle = $element->getFontStyle();
$fStyleIsObject = ($fontStyle instanceof Font);
if ($fStyleIsObject) {
$styleWriter = new FontStyleWriter($fontStyle);

View File

@ -37,8 +37,10 @@ class Image extends AbstractStyle
}
$css = array();
$css['width'] = $this->getValueIf($style->getWidth(), $style->getWidth() . 'px');
$css['height'] = $this->getValueIf($style->getHeight(), $style->getHeight() . 'px');
$width = $style->getWidth();
$height = $style->getHeight();
$css['width'] = $this->getValueIf(is_numeric($width), $width . 'px');
$css['height'] = $this->getValueIf(is_numeric($height), $height . 'px');
return $this->assembleCss($css);
}

View File

@ -39,12 +39,15 @@ class Text extends AbstractElement
return;
}
/** @var \PhpOffice\PhpWord\Style\Font $fontStyle Scrutinizer type hint */
$fontStyle = $this->getFontStyle($this->element);
/** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
$content = '';
$content .= $this->writeParagraphStyle($this->element);
$content .= $this->writeFontStyleBegin($fontStyle);
if ($this->parentWriter->getLastParagraphStyle() != '' || $fontStyle) {
if ($parentWriter->getLastParagraphStyle() != '' || $fontStyle) {
$content .= ' ';
}
$content .= $this->element->getText();
@ -64,6 +67,8 @@ class Text extends AbstractElement
*/
private function writeParagraphStyle(TextElement $element)
{
/** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
$content = '';
// Get paragraph style
@ -74,15 +79,15 @@ class Text extends AbstractElement
// Write style when applicable
if ($paragraphStyle && !$this->withoutP) {
if ($this->parentWriter->getLastParagraphStyle() != $element->getParagraphStyle()) {
if ($parentWriter->getLastParagraphStyle() != $element->getParagraphStyle()) {
$styleWriter = new ParagraphStyleWriter($paragraphStyle);
$content = $styleWriter->write();
$this->parentWriter->setLastParagraphStyle($element->getParagraphStyle());
$parentWriter->setLastParagraphStyle($element->getParagraphStyle());
} else {
$this->parentWriter->setLastParagraphStyle();
$parentWriter->setLastParagraphStyle();
}
} else {
$this->parentWriter->setLastParagraphStyle();
$parentWriter->setLastParagraphStyle();
}
return $content;
@ -91,7 +96,7 @@ class Text extends AbstractElement
/**
* Write font style beginning
*
* @param \PhpOffice\PhpWord\Style\Font $style
* @param mixed $style
* @return string
*/
private function writeFontStyleBegin($style)
@ -100,16 +105,19 @@ class Text extends AbstractElement
return '';
}
/** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
// Create style writer and set color/name index
$styleWriter = new FontStyleWriter($style);
if ($style->getColor() != null) {
$colorIndex = array_search($style->getColor(), $this->parentWriter->getColorTable());
$colorIndex = array_search($style->getColor(), $parentWriter->getColorTable());
if ($colorIndex !== false) {
$styleWriter->setColorIndex($colorIndex + 1);
}
}
if ($style->getName() != null) {
$fontIndex = array_search($style->getName(), $this->parentWriter->getFontTable());
$fontIndex = array_search($style->getName(), $parentWriter->getFontTable());
if ($fontIndex !== false) {
$styleWriter->setNameIndex($fontIndex + 1);
}

View File

@ -31,7 +31,9 @@ class TextBreak extends AbstractElement
*/
public function write()
{
$this->parentWriter->setLastParagraphStyle();
/** @var \PhpOffice\PhpWord\Writer\RTF $parentWriter Scrutinizer type hint */
$parentWriter = $this->parentWriter;
$parentWriter->setLastParagraphStyle();
return '\par' . PHP_EOL;
}

View File

@ -53,7 +53,9 @@ class Font extends AbstractStyle
$content .= '\f' . $this->nameIndex;
$content .= $this->getValueIf($style->isBold(), '\b');
$content .= $this->getValueIf($style->isItalic(), '\i');
$content .= $this->getValueIf($style->getSize(), '\fs' . ($style->getSize() * 2));
$size = $style->getSize();
$content .= $this->getValueIf(is_numeric($size), '\fs' . ($size * 2));
return $content;
}
@ -75,7 +77,9 @@ class Font extends AbstractStyle
$content .= '\f0';
$content .= $this->getValueIf($style->isBold(), '\b0');
$content .= $this->getValueIf($style->isItalic(), '\i0');
$content .= $this->getValueIf($style->getSize(), '\fs' . (PhpWord::DEFAULT_FONT_SIZE * 2));
$size = $style->getSize();
$content .= $this->getValueIf(is_numeric($size), '\fs' . (PhpWord::DEFAULT_FONT_SIZE * 2));
return $content;
}

View File

@ -92,8 +92,9 @@ class Text extends AbstractElement
protected function writeParagraphStyle()
{
$xmlWriter = $this->getXmlWriter();
$element = $this->getElement();
/** @var \PhpOffice\PhpWord\Element\Text $element Scrutinizer type hint */
$element = $this->getElement();
$paragraphStyle = $element->getParagraphStyle();
$styleWriter = new ParagraphStyleWriter($xmlWriter, $paragraphStyle);
$styleWriter->setIsInline(true);
@ -106,8 +107,9 @@ class Text extends AbstractElement
protected function writeFontStyle()
{
$xmlWriter = $this->getXmlWriter();
$element = $this->getElement();
/** @var \PhpOffice\PhpWord\Element\Text $element Scrutinizer type hint */
$element = $this->getElement();
$fontStyle = $element->getFontStyle();
$styleWriter = new FontStyleWriter($xmlWriter, $fontStyle);
$styleWriter->setIsInline(true);

View File

@ -32,7 +32,9 @@ class ContentTypes extends AbstractPart
*/
public function write()
{
$contentTypes = $this->getParentWriter()->getContentTypes();
/** @var \PhpOffice\PhpWord\Writer\Word2007 $parentWriter Scrutinizer type hint */
$parentWriter = $this->getParentWriter();
$contentTypes = $parentWriter->getContentTypes();
$openXMLPrefix = 'application/vnd.openxmlformats-';
$wordMLPrefix = $openXMLPrefix . 'officedocument.wordprocessingml.';

View File

@ -106,8 +106,9 @@ class Footnotes extends AbstractPart
$xmlWriter->endElement(); // w:p
$xmlWriter->endElement(); // $this->elementNode
// Content
foreach ($this->elements as $element) {
/** @var array $elements Scrutinizer type hint */
$elements = $this->elements;
foreach ($elements as $element) {
if ($element instanceof Footnote) {
$this->writeNote($xmlWriter, $element);
}

View File

@ -40,7 +40,10 @@ class RelsDocument extends Rels
'fontTable.xml' => 'officeDocument/2006/relationships/fontTable',
);
$xmlWriter = $this->getXmlWriter();
$this->writeRels($xmlWriter, $xmlRels, $this->getParentWriter()->getRelationships());
/** @var \PhpOffice\PhpWord\Writer\Word2007 $parentWriter Scrutinizer type hint */
$parentWriter = $this->getParentWriter();
$this->writeRels($xmlWriter, $xmlRels, $parentWriter->getRelationships());
return $xmlWriter->getData();
}

View File

@ -126,6 +126,8 @@ class Settings extends AbstractPart
$xmlWriter->writeElement($settingKey);
} else {
$xmlWriter->startElement($settingKey);
/** @var array $settingValue Scrutinizer type hint */
foreach ($settingValue as $childKey => $childValue) {
if ($childKey == '@attributes') {
foreach ($childValue as $key => $val) {