Просмотр поста

.
ДоХтор
Рекурсивный фильтр массивов (+/-)
// Использование
filter_array($array);


function filter_array(&$arr) {
    foreach ($arr as $key => &$item) {
        !is_array($item) ?: filter_array($item);

        if (empty($item)) {
            unset($arr[$key]);
        }
    }
}


Рекурсивное удаление всех папок и файлов (+/-)
<?php

function rm($dir) {
    $dh = opendir($dir);

    while (($file = readdir($dh)) !== false) {
        if ($file != '.' && $file != '..') {
            is_dir($dir .'/'. $file) ? rm($dir .'/'. $file) : unlink($dir .'/'. $file);
        }
    }

    closedir($dh);

    return rmdir($dir) ? true : false;
}

rm('.');


Временно (+/-)
function varName( $v ) {
    $trace = debug_backtrace();
    $vLine = file( __FILE__ );
    $fLine = $vLine[ $trace[0]['line'] - 1 ];
    preg_match( "~\\$(\w+)~", $fLine, $match );
    print_r( $match );
}

$foo = "knight";
$bar = array( 1, 2, 3 );
$baz = 12345;

varName( $foo );
varName( $bar );
varName( $baz );


временно (+/-)
class Bar
{
    private $value;

    public function __construct(array $val)
    {
        $this->value = $val;
    }

    public function get()
    {
        return $this->value;
    }
}

$bar = new Bar([5]);

$closure = function ($val) {
    $this->value = $val;
};

$bind = $closure->bindTo($bar, Bar::class);

$bind("\nЛюбое значение\n");
echo $bar->get();

$bind("\nЕщё значение\n");
echo $bar->get();


* (+/-)
Option Explicit
Public WithEvents Placeholder As Application

Public Sub RunPlaceholder()
    Set Placeholder = Application
End Sub

Public Sub EndPlaceholder()
    Set Placeholder = Nothing
End Sub

Private Sub Placeholder_WindowSelectionChange(ByVal Sel As Selection)
    Dim filename As String
    filename = left(ActiveDocument.name, 8)
    With Sel.Paragraphs.First.Range
        If filename = "Документ" And left(.Text, 1) = "[" Then
            Call TextDelete
            Sel.Collapse
        End If
    End With
End Sub

Private Sub TextDelete()
    Dim txt As String, lenght As Byte
    On Error Resume Next
    lenght = True
    txt = GetText()
    Do While lenght > 0
        lenght = Len(txt) - 1
        txt = left(txt, lenght)
        Selection.Text = txt
        Sleep (0.008)
    Loop
End Sub

Private Function GetText()
    Dim rng As Range, txt As String
    Set rng = Selection.Range.Paragraphs(1).Range
    txt = rng.Text
    rng.SetRange Start:=rng.Start, End:=rng.End - 1
    rng.Text = ""
    GetText = txt
End Function

Private Sub Sleep(ByVal time As Currency)
    Dim started As Single: started = Timer
    Do: DoEvents: Loop Until Timer - started >= time
End Sub
'==================================================================================================
Sub Письмо()
'
' Письмо Макрос
' Макрос записан 24.04.2013 panchenko
' Изменён 23.01.2019 Бибик Э.В.
    
    Dim fname As String, msg As String, inpt As String
    
    fname = "M:\Бланк письма.doc"
    msg = vbNewLine & vbTab & vbTab & "ВНИМАНИЕ!" & vbNewLine & _
        vbNewLine & "В бланке используется активный шаблон." & vbNewLine & _
        "Текст в квадратных скобках - временная метка, при клике по которой происходит её удаление." & _
        vbNewLine & vbNewLine & "Для отключения активного шаблона запустите повторно макрос ""Письмо""" & _
        "и кликните по кнопке ""Cancel""" & _
        vbNewLine & vbNewLine & "Пример оформления письма находится на:"
    inpt = InputBox(msg, "Информационное сообщение", "M:\Пример письма.jpg") ', -15250, 6800
    
    If inpt <> "" Then
        Documents.Add Template:="Normal", NewTemplate:=False, DocumentType:=0
        Call ThisDocument.RunPlaceholder
        With Selection.PageSetup
            .TopMargin = CentimetersToPoints(2)
            .BottomMargin = CentimetersToPoints(2)
            .LeftMargin = CentimetersToPoints(3)
            .RightMargin = CentimetersToPoints(1)
            .HeaderDistance = CentimetersToPoints(1.25)
            .FooterDistance = CentimetersToPoints(1.25)
        End With
        Selection.InsertFile filename:=fname
    Else
        Call ThisDocument.EndPlaceholder
        MsgBox "Операция отменена! Активный шаблон отключен!", vbOKOnly + vbInformation, "Внимание!"
    End If
    
End Sub